Недавно у нас на GeekBrains стартовал свежий курс "Профессия: разработчик C++". Программа позволит всего за 9 месяцев освоить этот непростой язык и стать специалистом уровня junior. А это непростая задача. К примеру, в школах и ВУЗах на изучение С++ уходит минимум 2 года, чаще 4-5. Чтобы показать из чего состоит этот нелегкий путь, мы схематично описали для вас основные этапы.
Этап 1. Алгоритмическое программирование
Для современных языков это может показаться парадоксальным, но классическое обучение языку C++ начинается с изучения нескольких других языков. Вы изначально должны привыкнуть к структурам программ и выучить основные понятия. Поэтому на первых занятиях вместо компьютера студенты используют листы бумаги, а вместо кодов — блок-схемы со стрелками.
Несмотря на универсальность подобного метода, его редко встретишь даже на первых занятиях по Java или C#, хотя там он тоже был бы полезен. Чаще всего алгоритмическое и блочное программирование проходят, когда студенты уже знакомы с синтаксисом. А вот в С++ это фундамент.
Этап 2. Pascal, Basic и C
На следующем этапе мы наконец включаем компьютер и начинаем создавать простые программы на языках, которые не имеют прямого отношения к С и С++. Идея классического образования, как и в прошлом пункте: приучить студентов правильно создавать структуру, помнить о служебных символах, использовать «правильные» обозначения и оформление.
Когда Pascal и Basic полностью исчерпают себя, а для этого достаточно нескольких часов, можно понемногу перемещаться к C, дублируя заученный код в новом синтаксисе. Сортировки разными методами, работа со строками и массивами, калькуляторы, игры — все эти базовые упражнения и программы помогут сжиться с новыми знаниями.
Этап 3. Среда для разработки — наипростейшая
В любом языке программирования надо начинать писать программы не в сложных IDE, а в простых универсальных редакторах. Notepad++ для этого отлично подойдёт, тем более, что название намекает на правильность выбора. Всё, что вам нужно сейчас, это подсветка синтаксиса и функция проверки. В студенческом образовании также практикуется написание кода на бумаге. Причина проста: экзамены по программированию в 21 веке всё ещё иногда сдаются без компьютеров.
Если у вас есть Linux (а если вы планируете стать программистом, то лучше установите его немедленно), то вопроса с выбором среды может вообще не стоять — просто откройте командую строку.
Любители олдскула могут попробовать установить себе на компьютер Borland C++, благо многие нынешние «крестоносцы» с теплотой и любовью относятся к этой серии (работать в ней реально удобно). Но для нормальной работы у вас есть незначительный выбор между Visual Studio и Qt Creator, в зависимости от задач.
На данном этапе остановим свой выбор на блокноте.
Этап 4. Начинаем с консолей
До тех пор, пока вы не напишите первое крутое приложение с кодом хотя бы десять листов, увлекаться графикой просто вредно. В командной строке можно реализовать кучу идей, от чатботов до RPG-игр, задействовав массу всевозможных библиотек и собственных знаний.
А потом на эту основу можно накладывать минимальные графические примочки, играть с физикой моделей, шлифовать моменты пересечений, наложений, отрабатывать взаимодействие с интерфейсом.
Когда и этот этап будет пройден, можно подключать серьёзные библиотеки и среды программирования, где многие пройденные ранее действия выполняются автоматически.
Этап 5. ООП
ООП — лестница от примитивной возни с кодом к комплексным структурам, лежащих в основе
таких продуктов, как Chrome, World of Warcraft и Linux. Также ООП является ключевой разницей между C и C++. В классическом образовании уделяется много времени изучению принципов ООП, ведь без досконального понимания, что это и зачем, вы будете создавать тонны лишнего и неправильного кода, пытаясь оправдать это личным удобством.
Так что на этом этапе придётся вернуться к процедурному и алгоритмическому программированию при помощи бумаги и ручки, потренировавшись чётко описывать объекты пути наследования и инкапсуляции. Совсем скоро это понадобится.
Этап 6. ООП в С++
Одно дело просто выучить постулаты ООП, другое — научиться применять их на практике. Для этого попробуйте проделать следующие упражнения:
- Перепишите свои сложные программы в рамках парадигмы ООП. Так вы поймёте, как можно упростить код.
- Создайте программу со сложной структурой, но почти нулевой функциональностью. Это будет полезно в будущем для правильного выстраивания связей без лишних блоков.
- Создайте первую относительно простую программу с нуля, воспользовавшись опытом первых двух упражнений. Например, телефонный справочник с функциями добавления, удаления, поиска и фильтрации.
Этап 7. Qt и начало графического программирования
«Классическое» образование на этом этапе сразу мигрирует в сторону Visual Studio – к созданию простых GUI-приложений в самой популярной IDE. Однако в качестве промежуточного варианта полезно будет использовать Qt благодаря его встроенным графическим библиотекам, позволяющим полноценно задействовать все ваши свежеиспечённые познания в C++ и ООП.
Эту остановку полезно будет сделать любому изучающему C++ ради будущих профессиональных перспектив и общего развития навыков. Благо, в Qt есть отличный встроенный помощник и много руководств по созданию разных типов приложений, так что проблем с освоением быть не должно. Даже если дело касается продвинутых навыков.
Этап 8. Visual Studio
GUI-приложения, чаще всего, это конечная остановка в ВУЗовском образовании. Ничего нового здесь студенты уже не узнают, скорее, привыкают к основному инструменту, окончательно закрепляют в сознании правильную структуру приложения и файлов.
Этап 9. Выбор специализации
Так как C++ невероятно востребованный язык почти во всех областях программирования, на этом этапе вы можете подумать, чем бы вы хотели заниматься в будущем. К примеру, если вы планируете работать с железом, то есть с микроконтроллерами, то придётся изучить библиотеки для работы с конкретными устройствами и средства отладки. Захотите работать в гейм-дизайне — путь лежит в Unity и схожие программы.
Эти 9 этапов не сделают из вас профессионала, но позволят более-менее осознать возможности языка и то, чем занимаются «крестоносцы». Вы можете попробовать преодолеть этот путь самостоятельно, а можете присоединиться к нам. Обещаем, это будет эффективнее и куда интереснее.
Автор: IliaBubnov