виртуальные машины уже давно научились генерировать нативный код и код этот по скорости не уступает С/С++
Да, именно так пишут пропагандисты (и не только решетки). В общем случае это пока еще далеко от правды, хотя и находится в рамках одного десятичного (местами даже двоичного) порядка.
Еще, как я понимаю, может подтормаживать Garbage Collector, но эта проблема возникает только если создавать и уничтожать объекты миллионами.
Работа с кучей в серьезных масштабах - это серьезнейшая, на данный момент универально не до конца решенная задача. А с самоочищающейся кучей (GC) ситуация еще более непростая.
Что касается сборщика мусора, то он как раз ускоряет работу программы... кроме периодических моментов собственно сборки мусора - и есть области где эта непредсказуемость (а не тормоза как таковые) критична, но их немного
И оно с GC несопоставимо быстрее, хоят и не сводится к инструкции сложения
Да, но если сервису приходится пропускать через аллокатор огромный поток данных, заметная часть из которых оседает в 'глобальных переменных' и не может быть вынесена в треш по окончании отдельного запроса/подзадачи, он неимоверно начинает тормозить, домножая на ноль все прочие оптимизации и недостатки языка/технологии.
Для меня он плох тем, что слабо интегрируется с Linux.
Он отвратительно интегрируется много с чем пока еще.
например, если я напишу параметром какого-то шаблона Typelist<int, Typelist<char, bool> >, неправильно завершив список, или вообще напишу на месте списка не-список
C++ - это полноприводный гоночный автомобиль с тремя свободными дифференциалами, механической коробкой передач с тремя валами и двумя сцеплениями, четырьмя отдельными педалями тормоза на все колеса и двумя рулями на обе оси. Работая с ним - нельзя ошибаться!