Задать вопрос
@jackroll
Сверхразум

Каков план личностного развития C++ программиста с нуля?

Увидел тему Каков план личностного развития PHP программиста с... и решил такой же вопрос в надежде что мне это хоть как-то поможет.

Закончились экзамены, появилось много свободного времени и я решил посвятить себя C++. Сейчас читаю книгу Лафоре - Объектно Ореентированное программирование C++. Хочу научиться программировать на C++ и на Java.
  • Вопрос задан
  • 8270 просмотров
Подписаться 28 Оценить Комментировать
Решения вопроса 2
@Lol4t0
Мой ответ касается практической части, про книжки смотрите другие ответы.
Для того, чтобы действительно разобраться в языке, нужно писать на нем. Причем писать такой код, который поток кто-то проверит, укажет на недостатки, подскажет, как сделать лучше.

Для этого вам можно или найти какой-нибудь курс, или поучаствовать в opensource проекте с code review, причем довести свои патчи до merge в master. С этим, правда, бывают сложности, если вы совсем начинающий, потому что никому от вас толку не будет.
Тут есть еще один вариант, про который почему-то никто никогда не упоминает. Отвечать на вопросы. Вот так вот как вы сейчас задаете вопросы, только отвечать. Конечно, вам не пойдет ванильный тостер без дизлайков, с малым количеством вопросов и специфическим русскоязычным сообществом. Вам нужно на StackOverflow. Просто смотреть подряд вопросы, пытаться решать, постить ответы, сравнивать с теми ответами, которые пишут другие люди и делать выводы. Если вы будете писать ерунду, вас там поправят, опять же. Я в свое время довольно много таким образом узнал где-то за полгода.
Ответ написан
Если человек мне на собеседовании скажет, что с C++ он перешел на C#/Java, и теперь все его головные боли иссякли, я никогда не найму его на должность выше обычного девелопера. Это в лучшем случае середняк, который никогда не будет писать изящных архитектурных решений, без особой тяги к знаниями и без капельки фанатизма.

Есть такая шутка:
есть два типа людей: те, кто уже выучил C++, и те, кто его никогда не выучат.

Фишка языка ровно там, где начинаются проблемы у новичков — в многообразии. Обычно нет ответа на "что лучше использовать". В каждом конкретном случае хорошо использовать ряд определенных решений, нет некоторого табу.

Крайне не советую начинать изучение языка со Страуструпа — уснете. По моему опыту, новичкам крайне полезно читать книгу Стивена Прата "Язык программирования C++. Лекции и упражнения". Во-первых, это именно книга по C++, а не древний учебник по C с классами. Во-вторых, там уделено внимание стандарту C++11, фишки которого отлично приходят на замену древнему C++ (о которых еще пишут в учебниках, да).

STL — обязательна для изучения. Без нее C++ — обычный C с классами.

Изучению также подлежат такие библиотеки, как boost (сначала, что в ней вообще есть, а потом — как написать определенные случаи), poco, ACE. Крайне рекомендую обратить внимание на Qt — это клад в мире C++.
Если интересна 3d-графика, можно посмотреть свободный графический движок Ogre3d.

Потом, хорошим C++-программистам хорошо бы знать структуры данных. Пожалуй, на этот вопрос лучше всего ответит Роберт Седжвик в своих книгах, либо соответствующих курсах на Coursera. Это важно, т.к. C++ обычно используется как язык для решения ресурсоемких задач, а не построения "табличной" бизнес-логики.

И на финал — один из самых сложных современных языков для изучения.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
afiskon
@afiskon
Си (в том числе Posix, WinAPI), затем элементы C++ - классы, наследование, шаблоны, затем STL - алгоритмы, контейнеры, по желанию - на ассемблере также можно пописать немного, в частности пригодится при отладке к примеру. Затем, когда надоест, забываете как страшный сон и пишите на Java.
Ответ написан
Комментировать
PixRaider
@PixRaider
Не так важен С++, как важен сначала С, чтобы получить понимание работы программ на низком уровне. Потом имеет смысл двигаться в сторону ООП головного мозга, изучая С++ и паттерны проектирования. ASM, WinAPI и прочих динозавров имеет смысл трогать только если есть много свободного времени и зубодробильная мотивация стать "архитектором Матрицы".
А дальше все само: выплывет сначала на какой-нибудь удобный фрэймверк типа Qt (но возможно черт дернет и в .NET c C#), а от него и до Java рукой подать.
К практической части от Lol4t0 всецело присоединяюсь.
Ответ написан
Комментировать
@Sapien2
Читаете по порядку:
Страуструп
Майерс
Саттер
Александреску
Дальше сами разберетесь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы