Для получения триального ключа
заполните форму ниже
Team License (базовая версия)
Enterprise License (расширенная версия)
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
GBP
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
>
C++ в современном мире

C++ в современном мире

06 Июн 2015

Дискуссии о текущем положении C++ в мире программирования, как правило, делят участников на два фронта: одни этот язык недолюбливают, пророча ему скорую гибель; другие же наоборот утверждают, что на C++ писали, пишут и будут писать. Я бы сказал, что истина находится где-то посередине, но это означало бы, что C++ находится в неком "подвешенном" состоянии, в котором он был, например, между выходами стандартов C++03 и C++11. На самом деле всё обстоит немного иначе. Как? Давайте попробуем в этом разобраться.

0329_CppPopularity_ru/image1.png

Идём ко дну?

0329_CppPopularity_ru/image2.png

Ничего подобного. Может быть C++ не настолько популярен в плане изучения начинающими программистами, как C# или Java, может быть под него не затачиваются новые технологии, выпускаемые корпорациями-гигантами, может быть он не продвигается теми же Microsoft и Oracle, но сказать, что C++ пошёл на дно - значит нагло соврать. Программное обеспечение, написанное с использованием C++, никуда не делось и требует поддержки. Новое ПО, например, игровые движки, также вовсю использует C++, а стандарты C++11, C++14 и готовящийся C++17 только подтверждают, что дела у этого языка программирования идут неплохо. Но давайте обо всё по порядку.

C++11, C++14, C++17...

0329_CppPopularity_ru/image3.png

Как упоминалось ранее, между стандартами C++11 и C++03 язык находился в своеобразном "подвешенном" состоянии. Вроде бы развивались и дополнялась такие библиотеки, как boost, Qt и прочие, появился C++/CLI, а нового официального стандарта всё не было и не было.

Так продолжалось достаточно долго, да и стандарт C++11, планировавшийся к публикации в 2009 году, вышел только двумя годами позже. Но тем не менее вышел. И не просто вышел, а принёс собой множество дополнений, расширений и "синтаксического сахара". Писать с использованием нового стандарта стало проще и удобнее, в стандартную библиотеку было добавлено множество средств, облегчающих программистам жизнь. Была введена официальная поддержка параллельного программирования, что немаловажно, списки инициализации, призванные сделать код понятнее, лямбда-функции, наверняка нашедшие своих любителей... И это, конечно не всё, но статья немного об ином - перечислять все нововведения здесь смысла нет.

Отлично, стандарт C++11 вышел, а что дальше? Опять простой на 8 лет? А вот и нет. Ни для кого не новость, что уже вышел стандарт C++14. Нет, о таком расширении, какое привнёс C++11, и речи не идёт, но дополнения и улучшения имеют место быть.

Но что не менее важно - тенденция не потеряна и на горизонте уже виднеются заготовки для нового стандарта - C++17.

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

А что же со старым ПО?

Существующее программное обеспечение

С использованием C++ написано множество программного обеспечения. И, конечно, его необходимо поддерживать. Хотите взглянуть на реальные примеры? Пожалуйста, соответствующий список в помощь. Наверняка вы найдёте там немало знакомых продуктов. Не думаю, что кто-то кинется переписывать существующий работающий С++ код на C# или Java, только потому, что так будет удобнее в дальнейшем, потому, что "сборщики мусора" и т.д. и т.п. Выходит, что знания C++ снова необходимы. А с учётом того, что C++ стал намного удобнее в работе с выходом новых стандартов, идея писать модули/дополнения на современном C++ имеет место быть и не выглядит безумной. В дальнейшем такой код будет куда проще поддерживать. В то же время это всё тот же производительный C++, с обширнейшим набором возможностей. А дополненная стандартная библиотека позволит использовать уже готовые решения без необходимости изобретения велосипедов.

Популярность среди начинающих

0329_CppPopularity_ru/image4.png

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

Высокий порог вхождения

0329_CppPopularity_ru/image5.png

Наверное, нет такого программиста, который бы не слышал о сложности С++. Безусловно, язык обширен, нюансов - несчётное множество. Но что мы получаем взамен? Производительность + глубинный контроль происходящих процессов (особенно если несколько спуститься с C++ к чистому C). Тут опять же следует упомянуть про стандарт C++11, который более приветлив к новичкам, предлагая удобный синтаксис, различного рода контейнеры, алгоритмы и прочие удобные вещи, предназначенные облегчить жизнь и написание кода.

Тем не менее, хоть вероятность этого весьма снижена, прострелить себе ногу при желании всё же можно.

Слабое продвижение

Думаю, ни для кого не секрет, как продвигаются такие языки как C# или Java корпорациями-владельцами: Microsoft и Oracle. Не буду наверняка говорить про Java, так как с тенденциями на этом фронте не слишком знаком, но вот со стороны Microsoft продвижения весьма заметно. Большинство технологий Microsoft затачиваются именно под C#. Хакатоны, проводимые Microsoft, опять же проходят с использованием C#. Нет, это не плохо, просто констатация факта.

Для C++ такой поддержки нет. Да, для него выпускаются различные инструменты, позволяющие облегчить работу и процесс создания приложений. Тут стоит вспомнить тот же Qt, недавно вышедший ReSharper C++ от JetBrains. В Visual Studio 2015 ввели поддержку некоторых нововведений из последних стандартов, плюс некоторые дополнительные функции - работать стало удобнее.

Но с масштабом вышеупомянутых продвижений это всё же в сравнение не идёт.

Специализация

Несмотря на то, что C++ - язык, дающий разработчику, как говорится, все карты в руки, область его применения не всеобъемлюща и занимает определённую нишу. Конкуренты есть, это тоже оказывает свое влияние. Взять, например, мобильную разработку. Основные платформы заняты теми или иными языками: Windows Phone - C#, Android - Java, iOS - Objective-C. И это вовсе не означает, что под эти платформы нет возможности писать на C++, вопрос лишь в том, насколько это будет удобно и будет ли также эффективно. Для веба, разработка под который с каждым годом становится популярнее и популярнее, C++ тоже не очень подходит. Возможность работы с сокетами есть, библиотеки, наподобие Wt, есть. Но вы много слышали о веб-приложениях, работающих на С++? Вот и я нет. С учётом того, что мобильная и веб-разработка стали очень популярны и только набирают обороты, понятен выбор начинающих в пользу других языков.

TIOBE Index

Слова словами, но, как говорится, лучше 1 раз увидеть, чем 100 раз услышать.

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

0329_CppPopularity_ru/image6.png

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

Заключение

0329_CppPopularity_ru/image7.png

Думаю, что вы уже сформировали мнение о текущем положении C++ в современном мире. Позвольте и мне высказать своё.

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

Популярные статьи по теме
Зло живёт в функциях сравнения

Дата: 19 Май 2017

Автор: Андрей Карпов

Возможно, читатели помнят мою статью под названием "Эффект последней строки". В ней идёт речь о замеченной мной закономерности: ошибка чаще всего допускается в последней строке однотипных блоков текс…
Статический анализ как часть процесса разработки Unreal Engine

Дата: 27 Июн 2017

Автор: Андрей Карпов

Проект Unreal Engine развивается - добавляется новый код и изменятся уже написанный. Неизбежное следствие развития проекта - появление в коде новых ошибок, которые желательно выявлять как можно раньш…
Характеристики анализатора PVS-Studio на примере EFL Core Libraries, 10-15% ложных срабатываний

Дата: 31 Июл 2017

Автор: Андрей Карпов

После большой статьи про проверку операционной системы Tizen мне было задано много вопросов о проценте ложных срабатываний и о плотности ошибок (сколько ошибок PVS-Studio выявляет на 1000 строк кода)…
PVS-Studio для Java

Дата: 17 Янв 2019

Автор: Андрей Карпов

В седьмой версии статического анализатора PVS-Studio мы добавили поддержку языка Java. Пришло время немного рассказать, как мы начинали делать поддержку языка Java, что у нас получилось и какие дальн…
Как и почему статические анализаторы борются с ложными срабатываниями

Дата: 20 Мар 2017

Автор: Андрей Карпов

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

Дата: 14 Апр 2016

Автор: Андрей Карпов

Вы угадали, ответ - "42". Здесь приводится 42 рекомендации по программированию, которые помогут избежать множества ошибок, сэкономить время и нервы. Автором рекомендаций выступает Андрей Карпов - тех…
Как PVS-Studio оказался внимательнее, чем три с половиной программиста

Дата: 22 Окт 2018

Автор: Андрей Карпов

PVS-Studio, как и другие статические анализаторы кода, часто выдаёт ложные срабатывания. Но не стоит спешить считать странные срабатывания ложными. Это короткая история о том, как PVS-Studio вновь ок…
Бесплатный PVS-Studio для тех, кто развивает открытые проекты

Дата: 22 Дек 2018

Автор: Андрей Карпов

В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub, GitLab или Bitbucket. Им предоставляется возмо…
Технологии, используемые в анализаторе кода PVS-Studio для поиска ошибок и потенциальных уязвимостей

Дата: 21 Ноя 2018

Автор: Андрей Карпов

Краткое описание технологий, используемых в инструменте PVS-Studio, которые позволяют эффективно обнаруживать большое количество паттернов ошибок и потенциальных уязвимостей. Статья описывает реализа…
Любите статический анализ кода!

Дата: 16 Окт 2017

Автор: Андрей Карпов

Я в шоке от возможностей статического анализа кода, хотя сам участвую в разработке инструмента PVS-Studio. На днях я был искренне удивлён тому, что анализатор оказался умнее и внимательнее меня.

Комментарии (0)

Следующие комментарии

На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Этот сайт использует куки и другие технологии, чтобы предоставить вам более персонализированный опыт. Продолжая просмотр страниц нашего веб-сайта, вы принимаете условия использования этих файлов. Если вы не хотите, чтобы ваши данные обрабатывались, пожалуйста, покиньте данный сайт. Подробнее →
Принять