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

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

Это начало конца?

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

C++11, C++14, C++17…

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

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

Хорошо, у нас есть стандарт C ++ 11, и это здорово. Но что дальше? Застой еще на 8 лет? Ни за что. Не секрет, что C ++ 14 уже выпущен. Трудно сравнивать инновации C ++ 11 и C ++ 14 (/ Он не такой инновационный, как C ++ 14), но он все же принес некоторые дополнения и улучшения.

Очень важно, чтобы эта тенденция сохранялась, и уже есть некоторые наброски нового стандарта C ++ 17.

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

А как насчет существующего программного обеспечения?

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

На C ++ создано большое количество программного обеспечения. Конечно, мы должны это поддерживать. Хотите посмотреть на примеры из жизни? Пожалуйста, сверьтесь с этим списком. Вы обязательно (/ держу пари, найдете) там много известных продуктов. Я не верю, что кто-то возьмется за работу по переписыванию всего существующего кода C ++ на C # или Java только потому, что с ним будет легче работать в будущем, из-за сборщиков мусора и так далее. Похоже, что знание C ++ по-прежнему актуально. Учитывая, что работать с C ++ стало намного удобнее, идея использовать его для написания модулей / приложений не кажется безумной. Позже поддерживать такой код будет намного проще. В то же время это тот же высокопроизводительный C ++, что и раньше, но в него добавлено огромное количество новых функций. Расширенная стандартная библиотека также даст нам возможность использовать готовые решения вместо того, чтобы создавать их заново.

Популярность среди новичков

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

Высокая сложность изучения языка

Каждый программист знает, что C ++ - это сложно. Да, он обширен, и в нем много нюансов. Но что мы получаем взамен? Высокая производительность + абсолютный контроль всех процессов (особенно в оригинальном C). Опять же, мы не можем не упомянуть стандарт C ++ 11 с его улучшенным удобством для пользователя, простым синтаксисом, различными контейнерами, алгоритмами и другими полезными вещами, призванными облегчить жизнь и работу программистов.

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

Низкое продвижение

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

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

Тем не менее, он не может сравниться с масштабами продвижения C # и Java.

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

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

Индекс TIOBE

Но это все просто слова, а, как говорится, картинка рисует тысячу слов.

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

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

Заключение

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

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

C ++ жив и занимает свою нишу.

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