Почему С++ - круто

C++ уже 40 лет не сходит с первых позиций по популярности языков программирования, а последние годы, его популярность только увеличивается. Применяемость языка на сегодняшний день невероятно широка. C++ применяется как для реализации низкоуровневых задач (программирование микроконтроллеров, реализация операционных систем и драйверов) так и для высокоуровневого программирования (реализация Web сервисов, Desktop и даже Web frontend разработки). Это и множество других преимуществ делает его столь популярным и востребованным в мире.
C++ уже 40 лет не сходит с первых позиций по популярности языков программирования

Бьёрн Страуструп
автор языка программирования C++

Почему C++ уже 40 лет не сходит с первых позиций популярности

Сильными сторонами языка является:

  • Быстрый
  • Универсальный
  • Масштабируемый
  • Активно поддерживаемый
  • Стабильный
  • Востребован
  • Полезен как фундамент для обучения

 

https://lh5.googleusercontent.com/B7wnzcUB3o2FwkuVgGFsecJfpKtAGAjgS-gWjsYkTMibAVPxZT9DfwtrtJ5-L43XHncCuAibv7P9MOzZSSOL4I3lGXvln1VvdPtCirS6N9swKmcDbj04rknHNVTAM7I9-_17cVe2

Быстрый.

Если посмотреть на тесты производительности языков, все остальные языки сравнивают по производительности с C++. Да мы можем видеть на ряде тестов что кто-то незначительно выигрывает но разобравшись оказывается что проблемы в неоптимальной реализации например std::io. C++ дает много возможностей для оптимизации на уровне кода. Так как код получается довольно низкоуровневый, и язык практически не накладывает ограничений для оптимизации. Вот почему, например, проекты для перебора паролей делают ставку на C++.

Универсальный.

C++ может быть использован для разработки следующих компонент:

  • OS
  • Драйверов операционных систем
  • Прошивок для микроконтроллеров
  • Кроссплатформенных Desktop (UI) приложений
  • Сетевых приложений и Web серверов
  • Мобильных приложений для iOS и Android
  • Разработка игр (Unreal движок)
  • AI/ML

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

А также у языка есть огромный перечень поддерживаемых платформ.

Масштабируемый

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

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

Активно поддерживаемый.

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

С другой стороны, последние годы, появляются все новые и новые стандарты:

C++11,14,17 скоро выйдет 20й, которые делают язык лучше и популярнее, а его применяемость растет, что в свою очередь увеличивает поддержку сообщество.

Стабильный.

Развитие языка подчиняется исключительно комитету стандартизации. На который не имеют влияния даже крупные компании производители компиляторов, как пример Microsoft. Для каждой версии языка выделяется свой стандарт ISO. Огромное количество реализованного кода не дает возможности менять стандарты без оглядки на обратную совместимость. Плюс, стабильность была неоднократно доказанная годами и написанными проектами.

Востребован

.

На C++ написано огромное количество проектов с момента его появления, которые продолжают разрабатываться и поддерживаться. Также на нем стартует много нового, поэтому язык настолько востребован. Пример индекс TIOBE за декабрь 2019

https://lh5.googleusercontent.com/gf6GBaprpi-vE2ziJ3ri5gK5VRJ__BrnhoO49XezUKeCbz5pNGhwwTusQFswVJ6tnUrmBT8scsju7nDMv9EwafzrDAdVp6WYPsCZzrOvrMWyEXzlKznXpKRaNXoVD9ee2rn0PRMY

 

В мае 2019, например, C++ был третьим в рейтинге. Примечательно, что и C не сдает свои позиции и даже в последнее время благодаря развитию IOT, начал добавлять в популярности. Да и по другим рейтингам, C++ ниже 6го места не падает, даже с учетом взрывного роста популярности Web.

И если посмотреть на средние зарплаты C++ разработчиков, они всегда были в топе.

Почему программирование стоит начинать изучать с C++

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

  • Понимание того, что такое программа и программный код
  • Понимание того что такое ресурсы приложения
  • Статическая типизация
  • Реализация ООП.
  • Стандартная библиотека (STL).

 

 

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

Какие проекты реализуются на C++.

 

Вот небольшой список хорошо известных проектов, разрабатываемых на C++:

  • Adobe Systems (Photoshop, Illustrator, Acrobat ...)
  • Amazon (облачные решения)
  • OS X (ряд ключевых частей системы)
  • Facebook. (ряд высокопроизводительных и высоконагруженных сервисов)
  • Google (поисковой движок, Chrome браузер ...)
  • Mozilla (Firefox браузер)
  • Microsoft (Windows, VS, SQL ...)
  • Sun (виртуальная машина java,OpenOffice, части OS Solaris ...)
  • KDE (linux  K Desktop Environment)

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

 

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

Неожиданные применения C++

Появление в 2017 году технологии WebAssembly расширило применение C++, позволив ему выполнится в браузере оптимизируя скорость выполнения. В отличии от JIT, скорость WebAssembly существенно выше. Ускорение происходит благодаря использовании бинарного синтаксиса, сокращающего скорость синтаксического разбора приложения и низкоуровневой модели работы с памятью. Технология сейчас поддерживается всеми популярными браузерами и начала приобретать популярность в мире.

Взрывная популярность блокчейна также не прошел мимо C++. Благодаря сильным сторонам С++ его начали использовать для реализации сетей. Но в этом нет ничего неожиданного, а вот использования его как языка написания смартконтрактов - это уже было интересно, как пример сети EOS, NEO и Ontology. И причем, реализация на C++ гораздо более полноценная (включающая STL, ООП) чем применение других языков.

Куда движется развитие C++.

Повышение безопасности

Дальнейшая оптимизация (Параллелизм STL не только для CPU, но и для GPU)

Упрощение языковых конструкций (инициализация структур через make_unique)

Улучшение формирования ошибок компилятором

Уменьшение времени компиляции (модули)

Исключение препроцессора (consteval, source_location)

Поддержка современных конструкций

  • Гетерогенные контейнеры (хранение данных разных типов в одном контейнере).
  • Улучшенная работа со строками (std::format даст возможность работать со строками в python стиле).
  • Ranges аля Java Streams или LINQ для C#.
  • Coroutines на подобии JavaScript генераторов.

Модули

Рефлексия как статическая, так и динамическая. 

Заключение

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

 

Запросить консультацию по телефону

Оставляйте ваши контактные данные и мы запишем вас на бесплатный пробный урок!


Введите телефон в формате "0993334444" (без пробелов)