Я программирую уже 3-4 года и чувствую, что меня больше нельзя назвать новичком, но я читаю некоторые вопросы на этом сайте и думаю, о чём они говорят? Сейчас я чувствую то же самое, когда беру книги по программированию.
Я прочитал несколько начинающих книг по программированию, некоторые на C / C ++ и другие на тему игр. Я написал несколько более сложных вещей, таких как очень простой AI, последовательный интерфейс и интерфейс TCP / IP.
Я планирую стать программистом игры, но в последнее время я немного заинтересовался встраиваемыми системами, имея возможность поработать с ними (последовательный интерфейс).
Мне было очень трудно найти материалы для продолжения обучения после завершения вводных и начинающих книг, поскольку я не могу найти промежуточных книг по C ++.
Какой совет вы бы дали для развития и совершенствования моих знаний и навыков? Специальные ресурсы будут с благодарностью.
Ответы:
Если вы говорите о C / C ++, то вы определенно могли бы использовать дополнительный опыт. Первый совет, который я дам вам, заключается в том, что C и C ++ - это совершенно разные языки . Лучший ресурс для изучения C ++ - StackOverflow - там много людей, которые имеют огромный опыт и знания.
Следующее, что нужно сделать, - это запустить крупный проект, например, попытаться написать движок трехмерной графики в низкоуровневом API, таком как DirectX, и когда ваш дизайн потерпит неудачу, как все первые проекты, вы узнаете кое-что о том, как программировать.
Вы можете проверить эту ссылку на StackOverflow для большого списка хороших книг для изучения C ++.
источник
Прежде всего, увеличьте свои базовые теоретические знания в том, что вы еще не знаете. Изучите теорию и напишите несколько коротких примеров.
Пример базового теоретического фона включает в себя:
Затем рассмотрите возможность изучения дополнительного языка (например, Java или C #). - Изучение дополнительных языков помогает лучше понять плюсы и минусы любого языка, который вы используете, и помогает вам изучить лучшие практики, которые вы, возможно, не знаете.
Далее выберите новый домен (веб-программирование, компьютерная графика, обработка изображений, компьютерное зрение, доступ к данным, ...). Изучите теорию и напишите несколько коротких примеров.
Затем создайте большой пример, который инкапсулирует многоуровневое приложение, обрабатывающее доступ к данным, пользовательский интерфейс и определенный домен, который вы выбрали. Сделайте акцент на архитектуре приложения (убедитесь, что его части как можно слабее связаны).
Надеюсь, вы узнаете, как освоить новые подходы и технологии и интегрировать их с хорошей архитектурой.
Специально для игрового программирования я рекомендую выбрать следующие домены / технологии:
Редактировать:
Как научиться:
источник
Использование C ++ (в сочетании с C) предполагает, что у вас будет больше знаний для понимания WTF, о котором они говорят. C ++ - это несколько языков, несколько слоев абстракций, живущих в одном и том же месте, и требуется много времени, чтобы все это изучить один раз, а затем понять то, что вы только что видели.
Я был в вашем случае, и я все еще изучаю эти языки. Я также многому научился, работая над встроенными системами.
Вот мой совет:
Не думайте, что вы уже много знаете о программировании. Большинство разработчиков становятся зрелыми в программировании только после более чем 10-летней практики, с различным контекстом и типом проектов, платформ и т. Д.
Вы только начинаете свое путешествие.
источник
Исходя из ваших интересов во встроенном программировании и играх, я бы также порекомендовал следующее - вы можете просмотреть списки книг из вышеупомянутых постов, чтобы найти хороший исходный материал по всем этим предметам. Одной из книг, которую я нашел необходимой, была Стандартная библиотека C ++: учебное пособие и справочник
Если вы не знакомы с основами ООП - изучите их в первую очередь. Понимать основы наследования и инкапсуляции. Знать, как ведут себя виртуальные, публичные / защищенные и приватные, а также статические ключевые слова.
Будьте удобны, используя указатели и ссылки (и вообще предпочитайте ссылки). Изучите и используйте конструкцию smart_ptr <> для достижения «автоматического» управления памятью.
Узнайте, как использовать шаблоны C ++ - изначально просто как типы данных контейнера. Вы будете постоянно находить новые и более мощные методы, которые шаблоны C ++ могут выполнять посредством метапрограммирования.
Изучите STL: используйте string, iostream, исключения и классы контейнеров и предпочитайте их более низкоуровневым типам данных char *, FILE * и char [], когда это возможно.
Начните использовать части библиотеки Boost - я бы рекомендовал вам сначала изучить их библиотеки asio и thread, учитывая ваши интересы. Это очень мощная, кроссплатформенная исходная база C ++ с открытым исходным кодом, которая позволит вам писать высококачественный и переносимый код. (Многие дополнения к основному стандарту C ++ произошли в материалах Boost)
Веселиться! Серьезно - выберите несколько любимых проектов для написания кода. Может быть, возиться с платами Arduino, если вам нравятся проекты встроенного программирования.
Получите некоторый опыт - если вы использовали только Windows / Visual Studio C ++, попробуйте написать код для Linux / g ++ или OS X / XCode (вы можете кодировать C ++ на Mac или вы действительно можете расширить свой кругозор и пойти для Objective-C, чтобы увидеть, как другая ветвь языков ООП решает проблемы!)
источник