ほとんどのLinuxプログラムがCで書かれているのはなぜですか?なぜ新しいC ++で書かれていないのですか?
ほとんどのLinuxプログラムがCで書かれているのはなぜですか?なぜ新しい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オペレーティングシステムに与えた影響を誇張するのは困難です。
C++
はより新しいですがC
、それは少し無関係です。それらは異なる言語です。