GNU/Linux >> Linux の 問題 >  >> Linux

ほとんどの 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 オペレーティング システムに与えた影響を誇張することは困難です。

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


Linux
  1. Linux –異なるLinux / UNIXカーネルは交換可能ですか?

  2. Linux で .so.1 ファイルが必要なのはなぜですか?

  3. Bash がどこにでもあるのはなぜですか (すべてではないにしても、ほとんどの Linux ディストリビューションで)。

  1. Linuxがエッジコンピューティングにとって重要である理由

  2. xtermを使い続ける理由

  3. ほとんどの Linux ディストリビューションで Perl がデフォルトでインストールされるのはなぜですか?

  1. Unix / linuxでディレクトリへのハードリンクが許可されていないのはなぜですか?

  2. Windows、Mac OS X、Linux はどの言語で書かれていますか?

  3. Linux の Makefile はなぜ便利なのですか?