C++ — язык программирования с наибольшим ростом популярности в 2022 году по версии индекса TIOBE. Широкая распространённость и востребованность языка связана с его высокой производительностью: благодаря ей на С++ можно разрабатывать большие программные системы с более чем миллионом строк кода.
В этой статье разберёмся, чем занимаются С++ разработчики, где они работают и сколько получают. Также выясним, что нужно знать и уметь для старта в профессии и куда пойти учиться, чтобы стать специалистом в этой области.
Благодарим Антона Ласточкина, ведущего инженера-программиста компании АО «КТ-Беспилотные системы» и эксперта Нетологии, за помощь в подготовке статьи.
Как появился C++ и в чём его особенности
Язык программирования С++ разработал датский учёный Бьёрн Страуструп в конце 20 века. Готовясь к получению степени доктора наук в Кембриджском университете, он не смог найти язык, который подошёл бы для написания высоконагруженного программного обеспечения. Simula 67 имел нужные функции, но работал слишком медленно, BCPL — поддерживал необходимую скорость, но ему не хватало инструментов для создания крупных IT-проектов.
Тогда Бьёрн решил добавить к традиционному языку С аспекты Simula 67, а именно возможность работы с классами и объектами. Так возник язык С++.
С его помощью сегодня разрабатывают:
- операционные системы;
- компьютерные игры;
- программы автоматизации бизнес-процессов;
- антивирусы;
- утилиты;
- браузеры;
- код для искусственного интеллекта, космического оборудования, серверов, беспилотников, управляющих устройствами микросхем.
Антон Ласточкин
Ведущий инженер-программист компании АО «КТ-Беспилотные системы»
Для меня ценность С++ прежде всего заключается в его эффективности. Если программист пишет корректный алгоритм, С++ переводит его в машинный код оптимальным образом. Причём это касается как типовых конструкций, так и современных стандартов версии С++20.
В отличие от чистого С, он построен на принципах объектно-ориентированного программирования — благодаря этому можно создавать код, ориентируясь на данные и объекты, а не на функции и логические структуры. Такой подход упрощает работу с комплексными IT-решениями, которые требуют привлечения большого количества программистов.
Другой плюс С++ — кроссплатформенность. Переносимый код на этом языке собирается под все известные платформы, операционные системы и архитектуры процессоров. Мне очень нравится, что такая программа может работать внутри бортовой вычислительной машины.
Главный недостаток С++ — это высокий порог входа. Его проще освоить тем, кто уже знаком с другими языками программирования, но даже в этом случае путь будет нелёгким. Например, в отличие от Python на С++ сложнее работать со словарями, списками или зависимостями.
Узнать больше о преимуществах С++ и нишах, в которых он используется, поможет доклад преподавателя компьютерных наук в МГТУ ГА Павла Филонова:
Чем занимается С++ разработчик
Основные задачи разработчика С++ — это создание, тестирование и усовершенствование программного обеспечения. Список обязанностей может различаться в зависимости от проекта, требований работодателя и грейда программиста.
Рассмотрим на примере реальных вакансий, чем может заниматься С++ разработчик. Так, в компании-производителе мобильных игр Ajarus специалист пишет и улучшает игровой код, участвует в мозговых штурмах, работает с гейм-дизайнерами над созданием новых фичей.
В IT-компании «Основа-Лаб» сотрудник разрабатывает высоконагруженные программы по сбору и анализу трафика и отдельные модули декодирования данных, внедряет новые функции, проверяет свою работу unit-тестами.
В «Юнайтед Вотер» разработчику на языке С++ нужно писать ПО для микроконтроллеров, готовить документы на свои программы и участвовать в переговорах с заказчиками.
Антон Ласточкин
Ведущий инженер-программист компании АО «КТ-Беспилотные системы»
Расскажу, чем может заниматься С++ разработчик в компании-производителе беспилотных летательных аппаратов.
Предположим, есть задача: добавить в ПО возможность поддержки новой команды на аварийную посадку беспилотника. Реализация этой функции будет выглядеть так ↓
В корпоративной системе учёта коллеги из продуктового отдела создают тикет — запрос на разработку какого-то IT-решения.
Задача переходит к бизнес-аналитику. Он составляет подробные технические требования: когда, как, при каких условиях и в течение какого времени должна срабатывать команда пользователя.
С++ разработчик изучает задание, обсуждает его с бизнес-аналитиком, если это необходимо, и приступает к решению задачи: написанию рабочего кода. Дополнительно ему нужно создавать и использовать unit-тесты, которые проверяют исправления в программе, чтобы те не задели уже работающий код.
Разработчик запускает автосборочный сервер для создания ПО под разные платформы, которые применяют пользователи беспилотников.
К работе подключается тестировщик. Он проверяет программное обеспечение на соответствие техническим требованиям и наличие ошибок при выполнении команды.
Если всё прошло хорошо, тикет считается закрытым. При этом сотрудники отдела тестирования продолжают отслеживать работу ПО, контролируя работоспособность новых функций в следующих версиях программы.
Какие знания и навыки нужны разработчику С++
С++ разработчику необходимо знать устройство компьютера, основные операторы языка, правила их применения, принципы объектно-ориентированного программирования. Только в этом случае он сможет написать рабочий код. Кроме того, ему нужно изучить библиотеки С++, в которых содержатся наборы функций для создания IT-продуктов.
Вот что ещё должен уметь разработчик С++:
Читать код. Этот навык позволит оперативно обучаться на готовых примерах, его наличие нередко проверяют работодатели на собеседованиях.
Образец кода для вывода на экран надписи «Hello, world!»:
Проектировать и применять алгоритмы, чтобы находить оптимальные цепочки технических решений для выполнения задач заказчика.
Оперативно создавать многофайловые IT-проекты. Для разработки сложных продуктов специалисту нужен опыт использования ПО для автоматической сборки программ из исходного кода и интегрированной среды разработки (IDE). Вот стандартный набор инструментов в мире С++, которыми должен по умолчанию владеть специалист: CMake, Visual Studio, VSCode, Clion.
Работать с системой контроля версий Git. Это помогает отслеживать изменения в исходном коде и других файлах, при необходимости откатывать программное обеспечение до прежней версии и вносить правки.
Пример того, как выглядят версии IT-проекта в Git:
Писать unit-тесты на С++ и использовать их ради оценки работоспособности своих программ и чужого кода. Для создания текстов желательно освоить Google Test. Этот фреймворк чаще всего используют программисты для unit-тестирования на С++.
Создавать базы данных и управлять ими при помощи SQL-запросов. Это нужно для понимания принципов работы баз данных и их структуры. Только так можно получать из баз нужные сведения и оптимизировать их выдачу для более высокой производительности приложений.
Применять асинхронное и многопоточное программирование для усовершенствования IT-решений и ускорения работы продуктов. Как правило, таких компетенций ждут от мидл- и сеньор-разработчиков.
Использовать шаблоны проектирования в C++. Этот навык помогает решать проблемы проектирования при помощи повторяемых архитектурных конструкций. Готовые паттерны снижают сложность разработки, унифицируют детали IT-решений и уменьшают количество ошибок в коде.
Антон Ласточкин
Ведущий инженер-программист компании АО «КТ-Беспилотные системы»
Здесь перечислены базовые навыки. В зависимости от выбранного направления специализации и вакансии работодателя программисту также нужно освоить фреймворки и технологии конкретной отрасли. Разработчику десктопа понадобится умение работать с кроссплатформенным фреймворком Qt, бэкенд-специалисту — знание протокола управления передачей данных TCP/IP, инженерам машинного зрения — навык использования библиотеки алгоритмов OpenCV.
- Освоите один из самых востребованных языков программирования
- На практике научитесь разрабатывать видеоигры, кроссплатформенные приложения и умные гаджеты
- Сможете начать работать по специальности уже во время обучения
Где работает и сколько зарабатывает C++ разработчик
Как правило, разработчиков C++ нанимают IT-компании, которые занимаются разработкой игр и высоконагруженных информационных систем авиации, видеонаблюдения и управления складом. Также в специалистах заинтересованы банки и компании-разработчики редакторов документов и видеоприложений.
Средняя зарплата С++ программистов в России — от 172 до 216 тысяч рублей. Ставка зависит от квалификации кандидата, сложности задач, круга обязанностей и финансовых возможностей работодателя.
Так, новичку без опыта компания «Бизнес Технологии» готова платить до 70 тысяч рублей.
«Випакс» обещает специалисту с опытом разработки от двух лет зарплату до 250 тысяч рублей.
Компания «Дубайт» ищет ведущего С++ программиста для развития системы для алгоритмической торговли и готова платить ему до 700 тысяч рублей.
Антон Ласточкин
Ведущий инженер-программист компании АО «КТ-Беспилотные системы»
Советую новичкам в профессии обратить внимание на вакансии государственных структур и промышленных предприятий, которым нужно программирование. Зарплата в таких местах, как правило, ниже среднего по рынку, но начать карьеру в них проще, а требования работодателей ниже.
Как стать разработчиком C++
В профессию С++ разработчика, как правило, идут выпускники вузов и ссузов с хорошим знанием компьютерных наук, информатики и IT-технологий, а также программисты, которым не хватает знания С++ для работы и продвижения по карьерной лестнице. На самом же деле попробовать свои силы в разработке на С++ может любой.
Сложнее всего — освоить профессию самостоятельно. Помочь в этом может базовый курс от «Викиверситета» Александра Семенко. В видеороликах автор уроков с 20-летним опытом программирования объясняет, как создавать IT-продукты на C++ в среде Visual Studio. Его занятия направлены на развитие навыков написания простых компьютерных игр.
Образовательная программа состоит из 95 уроков. По задумке автора, после окончания курса человек получает навыки, соответствующие уровню джуниор-разработчика. Преимущество курса — игровые элементы, недостатки — отсутствие обратной связи от преподавателя и оценки домашних работ.
Самостоятельная подготовка потребует также дополнительных занятий, чтения учебных материалов, освоения актуальных скиллов. Для трезвой оценки собственной квалификации следует найти ментора — опытного программиста, который даст обратную связь и подскажет, что нужно подтянуть для старта в профессии.
Разработке на С++ можно научиться в образовательном центре при МГТУ им. Баумана. Курс предназначен для специалистов, которые уже знакомы с основами программирования и баз данных. На занятиях студенты создают сетевые, офисные и научные приложения. Обучение даёт новичкам навыки работы с операторами, функциями С++, базовым инструментарием Qt.
Курс «Разработчик на С++» в Нетологии предназначен для тех, кто хочет освоить профессию с нуля. Обучение занимает 17 месяцев. За это время студенты получают навыки написания кода на С++, применения автотестов, алгоритмов, шаблонов, SQL-запросов, создания многофайловых IT-проектов и кроссплатформенных приложений на Qt.
Также они учатся применять самые популярные и часто используемые инструменты в отрасли: система контроля версий Git, программа автоматизации IT-проектов CMake, библиотека шаблонов STL, фреймворк Qt, конструктор электронных устройств Arduino, игровой движок Unreal Engine 4.
После окончания обучения у выпускников будет семь проектов, которые можно добавить к портфолио.
Что почитать, послушать и посмотреть С++ разработчику
- «Программирование на С++» — книга Нейла Дейла, Чипа Уимза и Марка Хедингтона для знакомства с языком. Авторы просто и понятно рассказывают о С++, объектно-ориентированных принципах, приводят упражнения с образцами кода.
- «Программирование на языке С++: практический курс» — пособие Марии Огневой и Елены Кудриной по изучению основ объектно-ориентированного и структурного программирования на С++ с большим количеством примеров.
- «Язык программирования С++. Полное руководство» — книга для новичков и опытных разработчиков, которые хотят узнать много полезной информации о С++. Учебник подготовили известные эксперты по языку: Стенли Липман и Жози Лажойе. В издании рассматриваются основы С++ и сложные элементы: классы, шаблоны, исключения, множественные исследования. Для простоты изучения материала авторы используют примеры с подробными пояснениями.
- «Гибкая разработка программ на Java и C++: принципы, паттерны и методики» — практическое руководство Роберта С. Мартина по созданию IT-проектов на С++. Автор рассказывает о работе специалиста на примере реальных задач заказчиков.
- «Справочник по С++» — онлайн-проект сообщества энтузиастов С++, где собрана полная информация о языке: концепты, классы, функции, библиотеки, шаблоны, макросы тестирования. Для демонстрации вариантов решения задач в разделах приведены примеры. Редакция справочника соответствует последнему стандарту языка, но есть информация и о более ранних версиях.
- Портал GeeksforGeeks — индийский проект Сандипа Джайна об IT. На сайте публикуются миллионы статей, новости, интервью экспертов, справочник о С++ и вакансии для разработчиков.
- Канал CppCast — англоязычный портал подкастов с новостями для разработчиков С++. Передачи ведут Фил Нэш, создатель платформы модульного тестирования Cathch2, и Тимур Думлер, член комитета по стандартам ISO C++. Приглашённые эксперты рассказывают о новых тестовых средах, библиотеках, обновлениях безопасности, интересных проектах.
- «Лекторий ФПМИ» — канал на YouTube с вводными лекциями о С++ от преподавателей МФТИ. Простым языком институтские учителя рассказывают о синтаксисе языка, операторах, классах, константах, виртуальных таблицах и шаблонах.
Резюмируем
Разработчик С++ — специалист, который пишет новые программы на языке программирования С++ и модернизирует уже существующие IT-проекты.
Профессионалы востребованы в IT-компаниях, занимающихся созданием и поддержкой сложных технологических продуктов. Работодатели платят программистам в среднем от 172 до 216 тысяч рублей.
Для старта в направлении нужно знать синтаксис языка С++, иметь навыки написания и тестирования кода, применения алгоритмов, шаблонов проектирования и программ, которые помогают автоматизировать и ускорить работу с IT-проектами.
Освоить профессию можно самостоятельно или на курсах. При выборе образовательной программы необходимо ориентироваться на уровень подготовки новичка. Некоторые проекты подразумевают знание основ программирования, другие — позволяют учиться с нуля.
Читать также
Языки программирования: для чего нужны, какие популярны, как выбрать и с чего начать изучение
Каким программистом стать — рассказываем о популярных направлениях
«Если вы выучили один язык программирования, то выучите и другие»: веб-разработчик рассказывает, как не заскучать в программировании и поменять язык разработки
Мнение автора и редакции может не совпадать. Хотите написать колонку для Нетологии? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.