web-dev-qa-db-ja.com

ほとんどのLinuxプログラムがCで書かれているのはなぜですか?

ほとんどのLinuxプログラムがCで書かれているのはなぜですか?新しいC++で書かれていないのはなぜですか?

30
hpn

これについては多くの議論がありました。主に、その理由は哲学的なものです。 Cは、システム開発用の単純な言語として開発されました(アプリケーション開発はそれほどではありません)。 C++を使用することには多くの引数がありますが、C++を使用してCに固執するnotにはほぼ同じくらいの数があります。

結局、それは歴史的な問題です。ほとんどのアプリケーションはCで記述されているため、ほとんどのアプリケーションはCで記述されています。それ以来、ほとんどのものがCで記述されているため、人々は元の言語を使用する傾向があります。

この時点で、誰かが「OK」と尋ねる可能性があるので、なぜカーネルがCで書かれていて、C++に移植されていないのですか?」 。これについては、先ほど説明しました kerntrapで 。このスレッドから引用できる素晴らしい説明の1つは、応答です by yoshi314 (直接引用):

それは、ほぼすべてのc ++アプリが動作するために個別のc ++標準ライブラリを必要とするためです。そのため、それらをカーネルに移植する必要があり、あらゆる場所で余分なオーバーヘッドが発生することを期待しています。

c ++はより複雑な言語です。つまり、コンパイラーはそれからより複雑なコードを作成します。そのため、コードエラーではなく、コンパイラのバグが問題の原因であることを見つけることは、cの方が簡単です。

また、C言語の方が必要最低限​​であり、多くの場合予測が容易なアセンブリ表現に従うのが簡単です。

c ++はより用途が広いですが、cは低レベルまたは埋め込まれたものにより適しています。


一方、「ほとんどのLinuxプログラム」はかなり誤解を招くものです。グラフィカルアプリケーションをご覧ください。 Pythonは、特にLinuxのGUI環境でますます重要になっています。Windowsと.NETで起こっているのと同じことです。

37
polemon

Linuxの作成者であるLinus Torvaldsからの次のメールを読んだ後。上記の答えが間違っていると思わずにはいられません。彼はC++プログラマーはsystemsプログラマーは良くないと考えているようです。また、C++の追加機能は、短期的にもたらす利点と比較して、長期的にはより多くの問題を引き起こすことがよくあります。彼に反対する人もいるかもしれませんが、彼がLinuxオペレーティングシステムに与えた影響を誇張するのは困難です。

http://harmful.cat-v.org/software/c++/linus

7