Код
#статьи

Кто такой разработчик на С++

Рассказываем о «плюсовых» разработчиках: почему это перспективная профессия и что нужно знать, чтобы войти в айти и не лишиться ног.

Иллюстрация: Meery Mary для Skillbox Media

С++ — это C-подобный язык общего назначения. Он унаследовал синтаксис у своего прародителя — языка С, и они часто используются вместе. С++ создал программист Бьёрн Страуструп для собственного проекта. Ему был необходим быстрый, выразительный язык программирования, который совмещал бы в себе свойства низкоуровневых и высокоуровневых языков программирования.

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

Хотя на C++ и можно писать функциональный код, функциональным языком он от этого не становится :)
Изображение: Public Domain

У С++ слабая статическая типизация. Это значит, что типы данных определяются в момент компиляции, а не в момент выполнения кода. При этом во время выполнения программы типы могут меняться, причём неявным для разработчика образом.

Чем занимается «плюсовый» разработчик

Язык С++ используется для написания быстрого и высокотехнологичного ПО. Например, на «плюсах» написана серверная часть Spotify, продуктов Adobe, частично операционная система Windows. На нём пишут драйверы для принтеров и видеокарт, игры — например, Counter-Strike и Diablo — и игровые движки: частично Unity и Unreal Engine. А ещё на C++ можно написать программу автопилота для дрона, софт для умного дома или даже для технологичного вооружения.

С++ обеспечивает высокую скорость работы и помогает сконструировать сложные программы автоматизации для производства и применяется в машинном обучении — например, в CatBoost или XGBoost.

Изображение: Сиддхартха Рао. Освой самостоятельно C++ за 21 день. 2013

Преимущества С++

Как и у любого другого языка программирования, у С++ есть свои сильные и слабые стороны. К сильным сторонам можно отнести следующее:

  • Разнообразие направлений работы: можно разрабатывать игры и игровые движки или программное обеспечение, например поисковые системы, десктопные приложения.
  • Это перспективный язык, который будет востребован ещё долго. После «плюсов» было создано много и других интересных технологий, однако заменить C++ чем-то другим сейчас невозможно. Согласно рейтингу Stack Overflow Developer Survey 2021, язык входит в топ-10 самых популярных, а по данным TIOBE, с конца 2019 года его популярность уверенно идёт вверх.
  • Много библиотек, которые помогают писать код быстрее и эффективнее — например, Qt, Boost или Eigen.
  • Разработчикам на C++ готовы платить большие деньги. Грамотные и продвинутые специалисты уровня middle, middle+ и senior получают от 200 тысяч рублей (по данным hh.ru на 2022 год).

Недостатки С++

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

План обучения: что нужно знать, чтобы писать код на С++

  • Изучить основы Computer Science, особенно алгоритмы, типы и структуры данных. Также надо знать разные парадигмы программирования: отличать объектно-ориентированное программирование от функционального или процедурного. Нелишним будет понимание архитектуры компьютера и операционных систем, поскольку С++ предполагает возможность ручного управления памятью.
  • Далее можно уже изучать основы С++: синтаксис языка, переменные и работу с ними, циклы, функции, условные конструкции.
  • С набором базовых знаний можно приступить к изучению объектно-ориентированных возможностей языка: создания классов и объектов, наследования и шаблонов. С шаблонами новичкам может быть особенно сложно, поэтому им нужно будет уделить особое внимание.
  • Если есть потребность и желание, то можно разобраться ещё и с функциональными возможностями языка, например лямбдами.
  • С таким набором знаний можно изучать стандартную библиотеку языка, она содержит большую часть алгоритмов и структур данных, необходимых разработчику в ежедневной работе.
  • Далее будет полезно получить общие представления о системах сборки (Make, CMake), компиляторах (CLion, GCC) и базовое понимание работы операционных систем — Windows и Linux.

С этими навыками уже можно претендовать на позицию джуниор-разработчика на C++. Кроме практических знаний языка, систем сборки и библиотек, от джунов также ждут навыков работы с таск-трекерами, готовности изучить новые фреймворки и библиотеки в процессе работы и софт-скиллов: ответственности, дисциплинированности, навыков деловой коммуникации.

Дальнейшее развитие зависит уже исключительно от того, в какой сфере вы хотите развиваться:

  • Для работы в геймдеве полезно будет получить представление о линейной алгебре, работе с графикой, изучить более подробно существующие движки (Unreal Engine — один из самых популярных на сегодня).
  • Для работы в сфере ML — знание основ статистики и теории вероятностей, понимание работы алгоритмов машинного обучения или нейронных сетей.
  • Для разработки десктопных приложений — изучить популярные библиотеки и фреймворки (Qt, например), глубже понять нюансы работы ОС, под которую разрабатывается приложение.
  • В отдельную область можно вынести embedded (работу с железом) — тут, скорее всего, понадобится хорошее знание ассемблера, понимание принципов аппаратной работы компьютера, для некоторых вакансий — знания схемотехники.

С++ для новичков в программировании

Новичкам в программировании будет сложно учить С++, потому что язык предполагает, что разработчик уже имеет базовые знания о Computer Science и разбирается в ручном управлении памятью. Для первого языка С++ может быть сложным, но если вас это не пугает и вам действительно интересна эта технология, то нет смысла начинать с чего-то другого.

Вам будет проще изучать С++, если у вас уже есть общие знания о компьютерах и программировании. С++ помогает прокачать навыки алгоритмического мышления, а благодаря работе со статической типизацией вы освоите концепции, которые в других языках скрыты от разработчиков.

Если вы готовы к длительному и интенсивному процессу обучения, то C++ будет хорошим выбором. Ваши старания и знания окупятся, когда вы будете работать с интересными проектами и получать достойную заработную плату.

Что с работой: вакансии, зарплаты и обязанности

На апрель 2022 года на hh.ru опубликовано более 2,5 тысячи вакансий разработчика на C++. Заработная плата для джуниор-специалиста стартует от 50 тысяч рублей. Предлагают как разрабатывать компьютерные игры, так и работать над многопоточными приложениями или над автоматизацией процессов.

На «Хабр.Карьере» опубликовано более 600 вакансий для разработчиков на С++, среди работодателей есть МТС, VK, «Лаборатория Касперского», «Яндекс» и другие крупные компании.

У заработной платы достаточно большой разброс. Джуниоры получают от 40 до 90 тысяч рублей, middle-специалисты — от 120 до 250 тысяч рублей, а сеньоры — от 300 до 700 тысяч рублей.

В некоторых вакансиях на позиции джунов вы будете видеть требование о наличии высшего образования, но если вы соответствуете другим требованиям, то можете смело подаваться и без высшего
Скриншот Skillbox Media

Как правило, от джунов ждут, что они будут хорошо владеть синтаксисом языка, стандартной библиотекой и средствами сборки. В обязанности middle-разработчика входит ещё понимание работы различных компиляторов, а также навыки написания асинхронного кода и многопоточных приложений.

Для разработчиков уровня senior требования будут сильно различаться от компании к компании. Однозначно необходимым будет, помимо всех навыков джуна и мидла, хорошо владеть профилировщиками (Perf) и отладчиками (GDB, Valgrind), уметь анализировать core dumps, разрабатывать архитектуру. Также будут нелишними знания о внутреннем устройстве языка, его взаимодействии с ОС. Например, понимание модели памяти для различных процессоров и знание устройства стандартной библиотеки.

Все эти навыки могут помочь находить наиболее правильные и качественные решения в сложных случаях, с которыми не могут разобраться менее опытные коллеги. Но стоит понимать, что все такие разделения условны.

Где учить С++

Программы высшего образования можно посмотреть в НИУ ВШЭ, МГТУ им. Баумана, МФТИ, ИТМО по направлениям «Программная инженерия» или «Прикладная математика и информатика».

Плюс высшего академического образования в том, что вы получите там хорошие базовые знания и сможете опробовать несколько технологий сразу. Из минусов — долгий процесс обучения и устаревшие программы (не везде, но во многих вузах).

Резюмируем

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

С++ отлично подойдёт всем, кто любит компьютерные игры, хочет лучше разбираться в железе или машинном обучении, а ещё он понравится тем, кто хочет заниматься автоматизацией процессов.


Запишите ребёнка на бесплатный урок в Skillbox Kids ➞
Учим детей программированию, веб-дизайну и разработке игр. Преподаватель — IT-эксперт — подберёт курс по интересам ребёнка. Подробности — по клику.
Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована