Опасения по поводу производительности или раздувания - не повод отказываться от C ++. У каждого языка есть свои потенциальные подводные камни и компромиссы - хорошие программисты узнают об этом и, где необходимо, разрабатывают стратегии преодоления, плохие программисты ошибаются и обвиняют язык.
Интерпретируемый Python во многих отношениях считается «медленным» языком, но для нетривиальных задач опытный программист Python может легко создать код, который выполняется быстрее, чем код неопытного разработчика C.
В моей отрасли видеоигр мы пишем высокопроизводительный код на C ++, избегая таких вещей, как RTTI, исключения или виртуальные функции во внутренних циклах. Они могут быть чрезвычайно полезны, но имеют проблемы с производительностью или раздуванием, которых желательно избегать. Если бы мы пошли дальше и полностью переключились на C, мы бы мало выиграли и потеряли наиболее полезные конструкции C ++.
Самая большая практическая причина предпочтения C заключается в том, что поддержка более распространена, чем C ++. Есть много платформ, особенно встроенных, на которых даже нет компиляторов C ++.
Также существует вопрос совместимости для поставщиков. В то время как C имеет стабильный и четко определенный ABI (двоичный интерфейс приложения), C ++ его не имеет. ABI в C ++ более сложен из-за таких вещей, как vtables и конструкторы / деструкторы, поэтому он реализуется по-разному для каждого поставщика и даже версий набора инструментов поставщиков.
В реальном выражении это означает, что вы не можете взять библиотеку, созданную одним компилятором, и связать ее с кодом или библиотекой из другого, что создает кошмар для распределенных проектов или поставщиков промежуточного программного обеспечения для двоичных библиотек.