Прежде всего, я сомневаюсь, что кто-то может дать точный ответ - просто нет способа точно сказать, сколько на самом деле используется тот или иной язык. Почти все, что можно измерить, является вторичным измерением, например, сколько людей размещают объявления о работе, используя этот язык. Проблема в том, что это имеет тенденцию показывать относительно новые языки как доминирующие в гораздо большей степени, чем это есть на самом деле.
В связи с этим я считаю следующее. В свое время C++ был новым горячим языком, и был "пузырь", когда он доминировал на рынке. Этот пузырь сдулся довольно давно. С тех пор использование C++ растет в абсолютном выражении, но рынок растет (довольно значительно) быстрее, поэтому его использование сокращается в относительном выражении.
Однако есть несколько причин, по которым это не отражается в большинстве вторичных показателей, таких как объявления о вакансиях. Несколько очевидных из них включают:
Есть еще один эффект, о котором я почти не решаюсь упомянуть, но он верен, как бы мало это многим ни нравилось: есть и программисты, и менеджеры, которые больше радуются "новому", чем эффективному. Это приводит к появлению большой группы подражателей, которые постоянно находятся в движении к новейшей и величайшей "технологии" (будь то язык, фреймворк, платформа или что-то еще). Они получают работу, бездельничают (или, что еще хуже, действительно пишут код), а затем переходят к следующей жертве... эээ... работодателю. Они вызывают большой "отток" и раздувают количество объявлений о работе, но не производят практически ничего или почти ничего, что имело бы реальную ценность. Эта группа давно перешла с C++ на Java, и уже давно перешла с Java на C#, Ruby on Rails, Hadoop и все, что волнует менеджеров на этой неделе.
Чтобы не показаться излишне негативным, я должен добавить, что на этом пути некоторые из них действительно находят что-то, в чем они хороши, и (в основном) остаются с этим. К сожалению, на каждого такого выпускника приходится по меньшей мере еще пять новых, которые присоединяются к этой толпе...
"C++ фактически отошел к встроенным системам, ОС, браузерам"
"другие разработки специального назначения"
Вы имеете в виду 99% кода, который люди используют ежедневно?
C++ все еще активно используется во многих критически важных финансовых приложениях. Например, большинство платформ Bloomberg основаны на C++ с очень небольшим количеством front end на других языках. Многие инвестиционные банки и хедж-фонды используют алгоритмические торговые системы, полностью написанные на C++ (например, Tower Research Capital, Knight Capital и т.д.).
Если вы давно не работали с C++, вам, возможно, придется привыкать к целой куче ставших стандартными библиотек. Когда я занимался большей частью C++, STL был довольно новым, и вы либо принимали библиотеки Microsoft, либо нет. Если бы я вернулся к C++ сейчас, мне пришлось бы изучить все новые библиотеки, чтобы быть эффективным.
Я думаю, что большинство переходов на другие языки связано с веб-разработкой и веб-ориентированной разработкой. Главным исключением из этого является Google, где по-прежнему в основном используют C++ и Python.
C ++ по-прежнему полезен для многих высокопроизводительных приложений. Существуют и другие технологии, и в зависимости от ситуации разные языки лучше подходят для ваших нужд. Но если вам нужна высокая производительность, хороший контроль над тем, что делает ваш код, а также гибкий сетевой и программный стек, C ++ по-прежнему является хорошим выбором.
Лучшее предложение: позвольте проблемам прийти к вам и найдите язык, который лучше всего подходит для ситуации, а не искать язык и искать проблемы.
Тем не менее: если вы хорошо знаете C ++, вы можете научиться / программировать что угодно.
На сегодняшний день C ++ является единственным языком, который является как объектно-ориентированным , так и скомпилированным (или, по крайней мере, имеет развитую экосистему оптимизирующих компиляторов). Это оставляет его единственным выбором для большинства крупномасштабных проектов с интенсивными вычислениями.
Для меня наиболее ярким примером являются игры и игровые движки - это огромные проекты, которые сжимают машины за доли миллисекунды. MS пытается получить некоторую поддержку для XNA (управляемая среда разработки игр - в основном оболочка DirectX), но, скорее всего, никогда не получит ее для производства игр AAA.
Это никуда не делось, если вам нужно сделать что-то очень-очень быстро. Если "достаточно быстро" в порядке, то C # и Java в порядке, но если у вас есть вычисления, которые занимают часы или дни, или вам нужно, чтобы что-то произошло в микросекундной шкале времени (например, высокочастотная торговля), C ++ по-прежнему остается языком .
Чаще всего мы теряемся в круговороте ажиотажа. Сначала была Java, затем - PHP, а сейчас - Python. Но дело в том, что разработка настольных приложений общего назначения по-прежнему требует использования таких библиотек, как Carbon / Cocoa для Mac, GTK / QT для Linux, MFC для Windows. Все они основаны на C / C ++. Так и большинство приложений написано для этих платформ. Так что называть C ++ как встраиваемый неправильно, хотя да, он широко используется сейчас, в отличие от ранее, когда это был просто сборка или C на максимуме. На мой взгляд, если вам нужно высокопроизводительное приложение с красивым графическим интерфейсом, это все равно нужно делать на C / C ++.
В разных доменах преобладают разные языки. Интересно, что, по вашему мнению, это может быть неважно, если быть отнесено к встроенным системам, хотя на самом деле именно там и происходит разработка программного обеспечения; хотя бы по количеству проектов / продуктов.
Существует много способов измерения, и некоторые из них представлены здесь: http://langpop.com/ . Факты свидетельствуют о том, что C ++ остается важным.
Я не уверен, подпадает ли игровая индустрия под «разработку общего назначения», но если вы хотите разработать что-то, над чем вы собираетесь работать, чем отдельная консоль, C ++ - это то, что на обед. Хотя многие игровые и 3D-библиотеки имеют расширения для других языков, все они имеют расширения для C / C ++.
C ++ по-прежнему используется везде, где требуется максимальная производительность. Его главное преимущество в том, что вы можете использовать буквально все. В дополнение к тому, что говорили другие люди, вы также можете использовать его для поддержки веб-сайтов, например, OkCupid использует его почти исключительно.
Как показывает недавний хип-хоп на Facebook, в конце концов, если вы можете себе это позволить (т. Е. У вас большая и компетентная команда), вы всегда можете что-то получить, используя это. Тогда это тоже вопрос масштаба, кроме промышленности.
C ++ обычно используется для системной работы, обычно определяемой как программное обеспечение, в котором пользовательский интерфейс не является центральным, а не работа приложений - где пользовательский интерфейс является центральным. Так что для общего использования в бизнесе это, вероятно, не очень интересно, и эти проблемы лучше решать с помощью языка более высокого уровня. Однако всегда будет существовать работа над системами низкого уровня, и C или C ++ являются практическим ответом на эти проблемы прямо сейчас.
C++ все еще очень популярен. Например, в сочетании с Qt он часто используется.
Как язык общего развития? Что ж, это зависит от вашей отрасли, но я работал в двух разных отраслях, и всегда много работы над C ++:
Я где-то читал, что Nyse / Euronext использует Java, но они отключают сборщик мусора и работают на серверах с безумным объемом памяти.
Если я посмотрю на приложения, которые я установил на ноутбуке, на котором я пишу это сообщение, я вижу много C / C ++ и мало (если есть) управляемых приложений. Примеры? Google Chrome, Firefox, iTunes, uTorrent, Spotify, Picasa, Google Планета Земля, OpenOffice, Notepad ++, IrfanView ... этот список можно продолжать и продолжать. Я зарабатываю на жизнь написанием настольных приложений, которые установлены на тысячах ПК по всему миру, и C ++ по-прежнему остается моим предпочтительным языком. Отсутствие зависимостей (WTL - ваш друг) является огромным плюсом IMHO (и моих клиентов я должен добавить!) Однако YMMV - как опытный разработчик, я думаю, что достаточно продуктивен в C ++, но я не могу говорить за все.