Obawy przed wydajnością lub rozdęciem nie są wystarczającym powodem, aby zrezygnować z C ++. Każdy język ma swoje potencjalne pułapki i kompromisy - dobrzy programiści dowiadują się o nich i tam, gdzie to konieczne, opracowują strategie radzenia sobie, biedni programiści upadną i obwiniają język.
Interpretowany Python jest pod wieloma względami uważany za „wolny” język, ale w przypadku nietrywialnych zadań wykwalifikowany programista Pythona może z łatwością stworzyć kod, który będzie wykonywany szybciej niż niedoświadczony programista w C.
W mojej branży gier wideo piszemy kod o wysokiej wydajności w C ++, unikając rzeczy takich jak RTTI, wyjątki lub funkcje wirtualne w pętlach wewnętrznych. Mogą być niezwykle przydatne, ale powodują problemy z wydajnością lub wzdęciami, których należy unikać. Gdybyśmy mieli pójść o krok dalej i całkowicie przejść na C, niewiele zyskalibyśmy i stracilibyśmy najbardziej przydatne konstrukcje C ++.
Największym praktycznym powodem preferowania C jest to, że obsługa jest bardziej rozpowszechniona niż C ++. Istnieje wiele platform, szczególnie osadzonych, które nie mają nawet kompilatorów C ++.
Jest też kwestia kompatybilności dla dostawców. Chociaż C ma stabilny i dobrze zdefiniowany ABI (Application Binary Interface), C ++ nie. ABI w C ++ jest bardziej skomplikowane z powodu takich rzeczy jak vtables i konstruktorzy / destruktory, więc jest implementowany inaczej dla każdego dostawcy, a nawet wersji łańcucha narzędzi dostawcy.
W rzeczywistości oznacza to, że nie można wziąć biblioteki wygenerowanej przez jeden kompilator i połączyć ją z kodem lub biblioteką z innego, co tworzy koszmar dla rozproszonych projektów lub dostawców oprogramowania pośredniego bibliotek binarnych.