Кому и для чего нужен C++?

Разработчикам ИИ, нейронных сетей и игр, физикам и даже музыкантам

C++ — как конструктор Lego: вы можете собрать свой замок мечты, а можете кричать от боли, наступая на забытые на полу детали. На нем пишут игры и обучают нейросети, благодаря ему работает поиск Google и роботы торговых бирж. Вместе с Никитой Лестенко, ментором курса «Программирование на С++», рассказываем, где применяют язык и зачем его учить.

Язык: C++

Год появления: 1985

Популярность (индекс TIOBE, февраль 2021): 4-е место

Приветствие и возведение двойки в степень от 0 до 16

Кратчайшая история создания C++

Первые версии языка C++ (си-плюс-плюс, еще его называют «си-пи-пи» и «плюсы») появились в начале 1980-х годов. Их создатель — датский программист из компании Bell Laboratories Бьерн Страуструп. Он моделировал распределения вызовов по АТС (автоматическим телефонным станциям).

Тогда у Страуструпа было два типа языков: низкоуровневые и языки на основе Фортрана или Алгола, которые были очень медленными.

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

Страуструп объединил возможности объектно-ориентированного С и языка Simula, основанного на Алголе. Главное привнесенное в C новшество — классы, основной элемент в объектно-ориентированном программировании, содержащий в себе данные и код, который ими управляет.

Класс ‎‎«‎Счет»‎ содержит данные о балансе и способы работы с ним: пополнение, снятие и проверка счета

Так появился «‎C с классами»‎ или «‎новый C»‎, который в 1983 году получил свое окончательное название — C++. «++» — это оператор, который означает «добавить единицу». То есть к возможностям языка C добавили еще одну.

А мне нужен С++?

Да, если вы хотите разрабатывать сложные продукты и сервисы. Опытные С++-программисты — это разработчики ИИ, беспилотных автомобилей, нейронных сетей, банковских, поисковых и ГИС-систем, операционных систем, микроконтроллеров, браузеров, серверов и видеоигр.

Основные области использования C++

  • разработка игр и игровых движков (Unreal Engine, Unity);
  • GPU-вычисления (cryptocurrency, deep learning);
  • разработка высоконагруженных и высокопроизводительных приложений.

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

Производительность — важная характеристика любой компьютерной игры. Counter-Strike, StarCraft: Brood War, Diablo I, World of Warcraft — все они появились давно и были написаны на C++, как и операционные системы консолей Xbox и PlayStation, ядра популярных игровых движков Unreal Engine или Unity, на базе которых сделано огромное количество 3D-игр, симуляторов, шутеров и стратегий.

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

Благодаря распараллеливанию (одновременному выполнению большого количества несложных математических операций) язык подходит для биткоинов и нейросетей. Первые можно майнить на С++, вторые — обучать: большинство библиотек для глубокого обучения (TensorFlow, Caffe, Shogun, Pytorch C++ API и т.д.) используют С++-код CUDA и OpenCL.

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

С помощью С++ Mozilla Corporation разработала opensource-браузер Firefox, была создана Amadeus — система электронного бронирования авиабилетов, гостиниц, круизных туров и проката автомобилей (через нее проходит 5000 транзакций в секунду, более миллиарда транзакций ежедневно), благодаря С++ работают Яндекс.Поиск и поисковый движок Google.

С++ нужен не только программистам, но и:

  • техническим художникам: связующему звену между обычными художниками и 3D-моделистами на игровом проекте и разработчиками игрового движка (у которых очень популярен С++) для решения проблем необходимо разбираться в языке и понимать, как все запрограммировано;
  • математикам: такие типовые задачи вычислительной математики, как решение систем алгебраических уравнений, дифференцирование и интегрирование функций, оптимизация, интерполяция, экстраполяция и аппроксимация, решаются при помощи реализаций численных методов на С++;
  • физикам и химикам: на С++ моделируются среды и физические процессы;
  • музыкантам: да, даже им! Это могут быть исследования акустических эффектов, попытки формализации творческого процесса или даже создание музыки: на «‎алгорейвах»‎ люди зажигают под треки, генерируемые алгоритмами, которые вживую на сцене пишет диджей-программист, — вот это настоящий киберпанк.

А еще C++ — это круто, потому что с его помощью:

  • пишут критическое ПО для истребителей F-16 и F-35;
  • разрабатывают пакеты программ и библиотек ROOT для обработки экспериментальных данных физики высоких энергий;
  • по поверхности Марса самостоятельно ездят роверы NASA и летает телескоп Хаббл;
  • делает практически все Microsoft (Windows OS, пакет Office, Internet Explorer, Visual Studio);
  • творят искусство (генеративное) художники: пишут алгоритмы для генерации предметов живописи и скульптур.

Плюсы и минусы языка

Плюсы

  • Высокая производительность, потому что он не накладывает никакой избыточной нагрузки на программу, не использующую какие-либо возможности.
  • Поддержка множества стилей программирования (процедурное программирование, абстракцию данных, объектно-ориентированное программирование и обобщенное программирование). Поэтому разработчик может сам выбрать, в каком стиле ему писать программу.
  • Большое сообщество.

Никита Лестенко:

«‎Помимо того что стандарты С++ постоянно обновляются и в него внедряется все больше улучшений, у языка огромное сообщество программистов. Учитывая сложность языка — не лентяев и опытных. Вы не останетесь один на один с проблемой: помимо литературы — от фундаментальных трудов до новых справочников, — у вас будет код, наработанный десятилетиями».

Минус

Высокий порог входа. Решения об изменениях в С++ принимают на заседаниях комитета, участие в которых формально может принять любой разработчик. Но отправляться на такие собрания в другую страну за свой счет трудно, поэтому большинство участников — представители крупных IT-корпораций, таких как Google, Яндекс или Facebook. А вот представителей интересов студентов или стартапов немного. Поэтому эксперты могут принять концепции, которые им кажутся очевидными, а для остальной аудитории они будут сложными.

Курс 

Профессия «C++ разработчик»

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

Узнать больше

C++ сложно выучить?

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

Программируя на С++, нужно держать в голове сразу много нюансов: отслеживать типы данных, контролировать выделение и освобождение памяти. Сейчас появляется все больше средств, которые перекладывают эти обязанности на сам язык. Уже на этапе написания кода современные IDE (среды разработки) помогают следить за соблюдением стандартов, отлавливают большое количество ошибок, не всегда очевидных человеку без глубокого знания языка, автоматизируют процесс написания большого объема кода с помощью типовых конструкций.

Никита Лестенко:

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

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

Полезные ссылки

Книги:

Другое:

Бонус: С++ как оружие

Чем больше возможностей у системы, тем больше шансов, что они будут неправильно реализованы. Сам Бьёрн Страуструп говорил, что на С++ писать безопасный код легче, чем на его предшественнике С, но если все же допустить оплошность — выстрелом оторвет ногу целиком. Если сравнить С++ с оружием, то это будет гибрид ружья с ножом: из него можно стрелять, но и самому пораниться легко.

Сравнение языков с оружием. Источник

Какие курсы вам подходят

Профессия «C++ разработчик»

От 3200 Р/мес

8,5

Подробнее о курсе

Профессия «C#-разработчик»

От 3750 Р/мес

12 мес

Подробнее о курсе

Профессия «Разработчик игр на Unity»

От 4500 Р/мес

8,5

Подробнее о курсе
Блог SkillFactory
Добавить комментарий