{"id":14270,"url":"\/distributions\/14270\/click?bit=1&hash=a51bb85a950ab21cdf691932d23b81e76bd428323f3fda8d1e62b0843a9e5699","title":"\u041b\u044b\u0436\u0438, \u043c\u0443\u0437\u044b\u043a\u0430 \u0438 \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a \u2014 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0433\u043e\u0440\u0435","buttonText":"\u041d\u0430 \u043a\u0430\u043a\u043e\u0439?","imageUuid":"f84aced9-2f9d-5a50-9157-8e37d6ce1060"}

Почему C++ крут, актуален и бессмертен

Колонка от образовательного портала GeekBrains, автора курса «Разработчик С++».

В начале 80-х годов прошлого века сотрудник Bell Labs Бьёрн Страуструп после долгих мучений с существующими языками программирования провёл эксперимент со скрещиванием C и Simula. Он даже не рассчитывал, что его детище, получившее название C++, привлечёт столько внимания.

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

Поэтому, если вы думаете, что C++ безнадёжно устарел, у нас для вас новость – отправить на пенсию его может только какая-нибудь невероятная технологическая революция. И вот почему.

Он быстр

Откройте любой тест производительности языков программирования (к примеру, этот), и в топе вы увидите C++, лишь С однозначно быстрее. Скорость исполнения кода — пожалуй, главный аргумент в пользу того, почему C++ был, есть и будет востребован в ИТ.

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

В противовес этому часто ставится скорость написания кода, которая, например, у интерпретируемых языков на порядок выше. В этом есть доля истины — C #, Java и конечно же Python даже визуально занимают меньше места, с их помощью можно создавать сложные программы, затратив минимум времени. Однако подумайте, что лучше для конечного пользователя: время разработки приложения или его медленная работа? Ответ очевиден.

Он универсален

Компиляторы C++ есть на каждой операционной системе, большинство программ легко переносится с платформы на платформу, со средой разработки и библиотеками у вас точно не возникнет проблем. C++ — это демонстрация идеи классического программирования, когда 90% мыслей связано с кодом и лишь 10% с используемой периферией.

Достаточно просто вспомнить, где он используется: микроконтроллеры, IoT, роботы, десктопные и мобильные приложения, веб, игры, системы моделирования, прогнозирования, обработки статистики и в нейронных сетях. Везде. Просто не существует такой области программирования, где C++ был бы бесполезен.

Да, сегодня сложно найти приложение, которое бы «от» и «до» было бы создано на C++. Но частично его использует почти любой крупный проект, поэтому его знание всегда будет являться плюсом в резюме программиста.

Он активно поддерживается

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

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

Он полезен в качестве фундамента для обучения

Java, JavaScript, C #, как и огромное количество других популярных языков программирования, содержит в основе принципы C++. Именно поэтому учебные программы многих вузов содержат курс «плюсплюс», который идёт сразу за получением основ на C.

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

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

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

Он востребован

Всё вышеописанное является причиной тому, что программисты C++ востребованы по всему миру, что не в последнюю очередь сказывается на зарплатах. Так, средняя зарплата по России составляет 75 тысяч рублей. Более того, в отличие от многих популярных языков, офисная работа с которыми предполагает переезд в крупный город, востребованность программистами C++ имеет распределённый характер.

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

Ну и самое главное, почему C++ — настоящий must-know для амбициозного программиста: работая с ним, ты ощущаешь, что куда больше создаёшь, чем используешь. Достаточно сложный синтаксис, тысячи строк кода даже в простых программах, механизмы работы с памятью и периферией — поначалу всё это жутко бесит из-за постоянных ошибок. Но потом приходит дисциплина, опыт и ты понимаешь, что C++ — это и есть настоящее программирование.

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

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

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

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

Алексей Кузнецов, программист Mail.Ru Group

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

Я бы сказал, что C++ скорее не универсален, а широко распространён. Да, действительно, компиляторы есть под большинство существовавших и существующих платформ. Но найти приложение, которое «от и до» написано на C++, вовсе не так сложно.

C++ активно поддерживается — тут всё верно: есть очень большое сообщество программистов, десятки книг, сотни форумов. Ищущий всегда найдёт ответ. Язык действительно позволяет многое понять, цена — сложность, а значит время на изучение.

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

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

Игорь Семенов, ведущий программист Mail.Ru Group
0
197 комментариев
Написать комментарий...
Артём Лисовский

Для бизнеса важна скорость внедрения больше, чем производительность. Подтверждений тьма, тот же веб не пишется на сях, хотя это возможно. Поэтому между ‘быстро запрогать’ и ‘запрогать, чтобы работало быстро’ почти всегда перевес к первому хоть и не абсолютный(например web based мобильные приложения против нативных). Бизнесу важно проверить гипотезу, выйти на рынок, заработать как можно скорее и потом оптимизировать.
И да, наши мощности почти никогда не нагружены на 100%, поэтому ‘надо сделать самый оптимизированный продукт’ чаще всего звучит как ‘я умею только си, джава и пайтон для лохов’ - непродуктивный буллшит зажравшегося прогера, которому вы до сих пор почему-то доверяете. Нет потребности в повсеместной оптимизации. Если у вас на сайте полтора человека и для загрузки страницы нужно сорок sql запросов это не значит, что нужно оптимизировать. Скорее всего ваш сайт так и будут посещать полтора человека, даже если вы будете отдавать его статикой моментально. Любая оптимизация должна быть оправдана экономически, а не теоретически, поэтому написанное лишь неимоверно субъективное и необоснованное практически мнение.
Я рад, что вы постигли с++ и получаете в среднем 75 тыс в России. Этим можно субъективно гордиться, но объективно это так себе результат, в долине с++ не сдался почти никому. На что брать ориентир айтишнику, если не на долину.

Ответить
Развернуть ветку
Вася Пражкин

Так и есть и чем дальше - тем важнее быстрее запуститься неважно на чем, а потом, если стартап поддержан инвестициями или прибылью, уже набрать коллектив и переписать с нуля. Поэтому максимально быстрые на старте технологии сейчас крайне актуальны, а C/C++/Go уже потом вводятся, когда нагрузки появляются серьезные.

Ответить
Развернуть ветку
Евгений Гаврилов

А Go чем вам не угодил? Его и придумали, как простую замену C/C++. Чтобы вливаться в работу было просто, чтобы не было проблем с поддержкой, чтобы был быстр. Не вижу проблем запускать веб-сервис на GO, особенно, если требуется микросервисная архитектура. Другое дело, что сейчас не так много спецов по GO, но с каждым годом всё больше и больше

Ответить
Развернуть ветку
Вася Пражкин

Go нужен, когда юзеров сотни тысяч хотя бы, а иначе тот же nodejs справится вполне. Я полагаю, Вы не станете отрицать, что кодеры на JS немного более доступны, чем кодеры на Go :)
Да и Go все же замена C, а не плюсам, как ни крути..

Ответить
Развернуть ветку
Евгений Гаврилов

JS просто больше времени существует. Как я и говорил, пока мало спецов на GO. Обычно это переходящие с PHP. Кто работает с нодой, тому не нужен GO по религизоным соображениям :)

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

А вообще странно, что упомянули JS и ноду, но не упомянули PHP, на котором вообще стартовать не проблема, а спецов вагон и целая тележка. У серверного JS намного меньше специалистов.

Ответить
Развернуть ветку
Вася Пражкин

PHP нынче не в моде, а в некоторых местах за такие слова даже побьют :)

Ответить
Развернуть ветку
Сева Nort

не в моде среди школьников и типакрутых спецов, в коммерческой разработке все в порядке с PHP :)

Ответить
Развернуть ветку
Вася Пражкин

Всяк кулик свое болото хвалит :)

Ответить
Развернуть ветку
Сева Nort

Я пишу много на чем, в том числе и Go и Node. Подбираются инструменты под задачу, поэтому забавно читать про это все вот)

Ответить
Развернуть ветку
194 комментария
Раскрывать всегда