これについては多くの議論がありました。主に、その理由は哲学的なものです.Cはシステム開発用の単純な言語として発明されました(アプリケーション開発ではありません). C++ を使用することについては多くの議論がありますが、使用しないことについても同じくらい多くの議論があります。 C++ を使用し、C にこだわります。
結局は歴史問題。ほとんどのカーネルは C で書かれているため、ほとんどのアプリケーションは C で書かれています。また、当時はほとんどが C で書かれていたため、人々は元の言語を使用する傾向があります。
この時点で、誰かが「OK、なぜカーネルは C で書かれていて、C++ に移植されていませんか?" .これは、しばらく前に kerneltrap で議論されました。このスレッドから引用できる 1 つの適切な説明は、yoshi314 による応答です (直接引用):
<ブロック引用>これは、ほとんどすべての C++ アプリが動作するために別の C++ 標準ライブラリを必要とするためです。そのため、カーネルに移植する必要があり、あらゆる場所で余分なオーバーヘッドが予想されます。
c++ はより複雑な言語であり、コンパイラはそれからより複雑なコードを作成します。そのため、問題がコード エラーではなく、コンパイラのバグに起因していることを見つけることは、c の方が簡単です。
また、C 言語はよりベアボーンであり、そのアセンブリ表現に従う方が簡単で、多くの場合、予測が容易です。
c++ の方が汎用性がありますが、c は低レベルまたは組み込みのものにより適しています。
一方、「ほとんどの Linux プログラム」というのはかなり誤解を招きます。グラフィカル アプリケーションを見てみましょう。 Python は、特に Linux の GUI 環境でますます定着しています。 Windows と .NET で起こっていることとほぼ同じです。
Linux の作成者である Linus Torvalds からの次のメールを読んだ後。上記の答えが間違っていると思わずにはいられません。彼は、C++ プログラマーは優れたシステムではないと考えているようです プログラマー。また、C++ の余分な機能は、短期的にはメリットと比較して、長期的にはより多くの問題を引き起こすことがよくあります。彼に同意しない人もいるかもしれませんが、彼が Linux オペレーティング システムに与えた影響を誇張することは困難です。
http://harmful.cat-v.org/software/c++/linus