C を単なる「石器時代の言語」と考えると、人々が C を使い続ける理由を誤解していると思います。私は C と C++ の両方が好きで、使用しています。私は、さまざまな理由とさまざまな種類の問題で、両方が好きです。
C 言語は、(ほぼ) 完全であり、非常に理解しやすいコンピューターのモデルを提示します。驚くことはほとんどありません。C++ は非常に複雑なモデルを提示し、プログラマーは厄介な驚きを避けるために多くのニュアンスを理解する必要があります。C++ コンパイラは、多くのことを自動的に行います (コンストラクタ、デストラクタ、スタックの巻き戻しなどの呼び出し)。通常はこれで問題ありませんが、バグの追跡を妨げる場合があります。一般に、C と C++ の両方を使用して自分の足を撃つことは非常に簡単ですが、C の方が単純な言語モデルであるという理由だけで、結果として得られる足の手術は C の方がはるかに簡単であることがわかります。
コンピュータの C モデルは、可搬性を保ちながら、可能な限りアセンブリに近いものです。この言語は自動的にはほとんど何もせず、あらゆる種類のクレイジーなメモリ操作を可能にします。これにより、安全でないプログラミングが可能になりますが、環境で非常に最適化されたプログラミングが可能になり、驚きはほとんどありません。C では、コード行が何を行うかを正確に伝えるのは非常に簡単です。これは、コンパイラが一時オブジェクトを作成および破棄できる C++ には当てはまりません。自動デストラクタが大量のサイクルを消費していることを明らかにするためにプロファイリングが必要な C++ コードがありました。これは、コード行に驚きがほとんどない C では決して起こりません。これは、以前ほど問題ではなくなりました。C++ コンパイラは、一時変数の多くを最適化するのに非常に優れています。まだまだ話題になるかもしれませんが、
最後に、C++ で記述されたコードはコンパイルに時間がかかることがよくあります。通常、犯人はテンプレートですが、テンプレートを削除すると、C++ コードが C に似たものになることがよくあります。そして、これが生産性にどれほど影響するかは、いくら誇張してもしすぎることはありません。デバッグ、修正、再コンパイル、テストのサイクルがコンパイル時間によって制限されると、生産性が低下します。はい、私はプリコンパイル済みヘッダーを知っており、気に入っていますが、機能はそれほど多くありません。
私が反 C++ であるという印象を受けないでください。私はその言語が好きで、使用しています。クラス、スマート ポインター、std::vector、std::string などがあると便利です。しかし、C が生きていて活躍しているのには理由があります。
別の視点、そして断固として C++ に反対する視点については、少なくともLinus Torvald のC++ に関する視点をざっと目を通しておく必要があります。彼の議論は、たとえあなたが同意しなくても、考える価値があります。