Почему 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++ — это и есть настоящее программирование.
Для бизнеса важна скорость внедрения больше, чем производительность. Подтверждений тьма, тот же веб не пишется на сях, хотя это возможно. Поэтому между ‘быстро запрогать’ и ‘запрогать, чтобы работало быстро’ почти всегда перевес к первому хоть и не абсолютный(например 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 нынче не в моде, а в некоторых местах за такие слова даже побьют :)
не в моде среди школьников и типакрутых спецов, в коммерческой разработке все в порядке с PHP :)
Всяк кулик свое болото хвалит :)
Я пишу много на чем, в том числе и Go и Node. Подбираются инструменты под задачу, поэтому забавно читать про это все вот)