Почему C++ крут, актуален и бессмертен
118K118K открытий

Как С++ синьёр скажу, что это полная чушь.
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++ НЕТ альтернатив.

Ответить

Давайте отключим GC и получим, что ява с отключенным gc всего в 2 раза медленней плюсов без такового.
Аргументация уровня «Бог»

Ответить

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

Ответить

"Современные конфиги и оптимизаторы для C# и Java позволяют им работать на равных. Попробуйте отключить GC и вызывать его руками. Получите разницу всего в 1-1.5 раза."

Что-то Вы какие-то сказки про скорость Java рассказываете, что-то посерьезней HelloWorld-то оптимизировали по скорости? А по потреблению памяти? А мультитредовый проект оптимизировали хоть раз?

Ответить

Ну откуда вы лезете? Вы хоть понимаете разницу между компилируемых и интерпретируемых языков? Только не надо говорить про jit компиляцию и тому подобную динамическую ересть.

Ответить