d_a_andreev (d_a_andreev) wrote,
d_a_andreev
d_a_andreev

Categories:

Программирование на С++. Путь от новичка до Junior Developer

В сети есть много списков книг как научиться программировать на С++, так что наверно не буду слишком оригинальным. Просто расскажу свой опыт. Отвлекусь немного от дурных мыслей. Может когда то, кто случайно набредет на этот пост и подчерпнёт для себя что то полезное.

Основы
Начать можно с двух книг
Стивен Прата: Язык программирования C++. Лекции и упражнения
Страуструп Бьярне Программирование. Принципы и практика с использованием C++
Первая книга непосредственно учит синтаксису С++, вторая (Страуструпа) скорее учебник по программированию в целом. Его можно считать вводным курсом в программирование. Прата на мой взгляд читать легче, Страуструп местами зануден, но он даёт много хороших упражнений. Читать обе книги можно параллельно. Выполняя предложенные упражнения.

Теперь вы знаете основы синтаксиса языка, и даже можете написать несложную консольную программу. Что дальше?
На мой взгляд изучать библиотеки для написания графического интерфейса. Выбор у нас не слишком большой. Если вы хотите писать коммерческие приложения с красивым интерфейсом - библиотека QT безальтернативна. Есть ещё wxWidgets, но на мой взгляд написать нормальный красивый нативно выглядящий интерфейс (GUI) на ней намного сложнее. Отдельно можно отметить библиотеку FLTK. Это очень компактная статически линкуемая библиотека. Самое то, если нужно написать какую то небольшую утилиту, а насколько красиво выглядит GUI не так и важно. Размер исполняемого файла получается минимальным, никаких DLL с собой таскать вместе с ним не нужно. (Тот же QT весьма увесист)
Тут могу посоветовать только одну книгу, о которой знаю
Шлее Макс Qt 5.10. Профессиональное программирование на C++
Уже вышла версия 6.0 так что книга в какой то мере устарела, но принципы все остались те же. Если что то не получается, можно сверится с богатой документацией по QT

Теперь вы в состоянии написать точную копию встроенного в Windows калькулятора.

Учимся программировать лучше!
Кое что нам уже известно, но программирование это не только синтаксис языка, но и различные парадигмы, идеи, если хотите стили написания кода. Плюс готовые рецепты хороших решений тех или иных задач, проверенные опытом

Книг по повышению мастерства достаточно много
Стефан Дьюхэрст: Скользкие места С++. Как избежать проблем при проектировании и компиляции ваших программ
Скот Мэйерс Эффективное использование C++. 55 верных советов улучшить структуру и код ваших программ
Скот Мейерс Наиболее эффективное использование С++. 35 новых рекомендаций по улучшению ваших программ и проектов
Скот Мейерс Эффективный и современный С++. 42 рекомендации по использованию C++11 и C++14


STL - Стандартная библиотека шаблонов (часть языка С++)
Николаи Йосуттис - C++. Стандартная библиотека - объёмный справочник
Яцек Галовитц - С++17 STL - Стандартная библиотека шаблонов
Скотт Мейерс - Эффективное использование STL

Алгоритмы
Могу посоветовать одну тонкую книгу-учебник, и один толстый справочник
С. Дасгупта, Х. Пападимитриу, У. Вазирани "Алгоритмы". Вкратце обо всём. Достаточно доступно.
Кормен Томас Х. "Алгоритмы. Построение и анализ" - объёмный справочник куда иногда можно заглянуть

Улучшение стиля написания кода
Мартин Роберт К. "Чистый код. Создание, анализ и рефакторинг"
Макконнелл Стив "Совершенный код. Мастер-класс"


Паттерны проектирования
Федор Пикус "Идиомы и паттерны проектирования в современном С++" - интересная книга по паттернам в современном С++, огромным плюсом книги является то, что в ней хорошо разобраны такие вещи как RAII, SFINAE, CRTP и т.п.
Гамма, Хелм, Джонсон, Влиссидес "Приемы объектно-ориентированного проектирования. Паттерны проектирования" - знаменитая книга "банды четырех"(Gang of Four -GoF).

Основы исчерпывающе изучены. На данному этапе вы уже вероятно сами знаете куда двигаться дальше.
Не стоит забывать о существовании библиотеки Boost. Которую можно назвать эдакой черновой версией стандарта языка. Многие вещи, фишки прежде чем попасть в стандарт обкатываются именно там. Если STL вам мало и что то остро не хватает для решения вашей задачи, то посмотреть стоит именно там.

Про ставшее актуальным Многопоточное программирование можно например почитать у
Энтони Уильямс - Параллельное программирование на C++ в действии

Системы контроля версий
Незаменимая вещь если вы работаете над программой более недели. Да и кроме того, если вы будете работать в команде, вам эти знания обязательно понадобятся.
Чакон Скотт, Штрауб Бен "Git для профессионального программиста"

Ну а дальше уже специализация. В какой области вы бы хотели работать? Со всеми вышеперечисленными знаниями вас просто никуда не возьмут скорее всего. Нужно изучать узкоспециализированные технологии. Ориентируйтесь на вакансии, что именно от соискателей хотят и что из этого интересно вам.
Каждые 3 года принимается новый стандарт языка и вносятся существенные изменения. Так что каждые 3 года придется немного доучиваться, а местами переучиваться.
Не советовал бы никому честно говоря С++ как выбор языка для будущей профессии на данный момент, если только нет разумных причин "почему именно он и никак иначе". Специалистов требуется немного, и обычно хотят уже опытных разработчиков с обширными навыками и стажем работы. Начать работать и зарабатывать деньги гораздо проще изучив Python или PHP\JavaScript.

Но всё это лишь пустые рассуждения. Здоровья чтобы работать пятидневку по восемь часов у меня объективно нет. Да и очень велика стигма диагноза. Которая оставляет только самый черновой неквалифицированный труд - дворник, посудомойка. Кто захочет иметь дело с инвалидом по психике? Да если только из жалости
Но изучать что то для себя и для души мне никто не запрещал. Что и стараюсь временами делать. Надеюсь ещё когда то поделюсь с вами плодами подобного, если хотите, творчества
Subscribe

Recent Posts from This Journal

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments