Благодаря корням низкоуровневого языка C, С++ позволяет проводить агрессивную оптимизацию такого уровня, который просто недоступен на языках высокого уровня. Правда, за это приходится платить сложностью управления ресурсами, которая в отличие от языков высокого уровня ложится на программиста.
Я бы сказал, что C++ скорее не универсален, а широко распространён. Да, действительно, компиляторы есть под большинство существовавших и существующих платформ. Но найти приложение, которое «от и до» написано на C++, вовсе не так сложно.
C++ активно поддерживается — тут всё верно: есть очень большое сообщество программистов, десятки книг, сотни форумов. Ищущий всегда найдёт ответ. Язык действительно позволяет многое понять, цена — сложность, а значит время на изучение.
С мнением, что если изучить С++, то любой другой язык не вызовет затруднений, я категорически не согласен.
Вакансий действительно много: практически везде, где жёсткие требования к производительности, требуются программисты С++. «Работая с ним, ты ощущаешь, что куда больше создаёшь, чем используешь», – увы, это так, но это один из его недостатков. Я бы не стал преподносить это как достоинство.
Как С++ синьёр скажу, что это полная чушь.
1) Он быстр
Нет. Он не быстр. Современные конфиги и оптимизаторы для C# и Java позволяют им работать на равных. Попробуйте отключить GC и вызывать его руками. Получите разницу всего в 1-1.5 раза.
Скорость компиляции у С++ в 20-50 раз медленнее. И растет не линейно. Проект может начать компилироваться часами просто из-за какой-то либы и шаблонов.
2) Он универсален
Нет. Он универсален только с версии С++11. Да и тащить приходится кучу сторонних библиотек (типа boost). И там тоже есть баги. С++ абсолютно не переносим. Компиляторы ловят разные ошибки разными способами. Если включить -Wall на MSVC и GCC, то они будут падать на разных ошибках и разных ворнингах. Ах, а чего только стоят средства отладки... для каждой платформы они абсолютно разные. Хочешь хорошо дебажить плюсцы - будь гуру линуха и его средств, и гуру винды и его средств.
3) Он активно поддерживается
Вы можете найти проекты, в которых рядом с сырой памятью (и фичами из С) будут фичи из С++17. Мммм, найс. Счастливой отладки.
4) Он полезен в качестве фундамента для обучения
Нет. Фундамент для обучения это С.
5) Он востребован
Нет. Он не востребован. Просто на нем было написано столько, что это физически переписать нереально. Поэтому приходится поддерживать эти все продукты.
Вывод:
С++ это как Perl или С. Круто только в 2х случаях:
1) ты студент
2) ты супер-гуру-маньяк плюсов
Для остальных это ад.
Достаточно написать что ты сеньор и далее много текста с частными случаями, ничего в общем не опровергающими, и тебе поверят
По всем пунктам уже разжевали. Я много лет писал чувствительные к скорости выполнения части приложений, которые почти наверняка установлены или были установлены у вас на компьютере и/или телефоне.
И правда жизни в том, что на C++ прямо сейчас пишется очень много именно нового кода, потому что альтернативы нет. Здесь в долине тусовка довольно тесная, и я прекрасно вижу, что Facebook, Microsoft, Google, Amazon пишут великие тонны абсолютно нового C++ кода прямо сейчас в то время, как LinkedIn, например, на сервере весь в жаве, включая критичные части, от чего они иногда серьезно страдают.
Ну так, чтобы уж не без аргументов:
1) Активное использование стека, placement new, свои аллокаторы, устранение false sharing и прочих проблем с кешем при полном сохранении ООП. Да, C умеет то же самое, но там нет ООП.
2) Он универсален точно так же, как и C. Если что-то не работает, не используй это. Моя библиотека в одном популярном мессенжере много лет назад компилировалась под 11 таргетов на С++03 включая все мобильные платформы, и там был STL.
3) Прямо сейчас так выглядит мой текущий проект. Он активно работает на >миллиарде устройств без крешей (за исключением "космических лучей", на таких масштабах довольно веселые эффекты, но это единицы в день).
4) Он полезен как универсальный фундамент для изучения любого императивного языка в ООП. Большего брейнфака нет ни в одном подобном языке, поэтому если ты хорошо знаешь C++, ты знаешь их все.
5) Уже говорил в начале.
братулец, C++ требует от программиста более высокой культуры написания кода, чем другие языки. тут нельзя малодушничать, лениться или давать волю эмоциям ;]
Почему Вы тогда стали C++ Senior, если для Вас в нем столько минусов?
Так и что же учить в таком случае? :)
В пользу C++ есть один, но несокрушимый аргумент: у C++ НЕТ альтернатив.