{"id":14268,"url":"\/distributions\/14268\/click?bit=1&hash=1e3309842e8b07895e75261917827295839cd5d4d57d48f0ca524f3f535a7946","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c \u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f71e1caf-7964-5525-98be-104bb436cb54"}

Почему 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 комментариев
Написать комментарий...
Rogozhkin

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

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

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