Linus Torvalds は、Linux カーネルに C++ を導入することを検討できますか?

リニアストールヴァルド

Linus Benedict Torvalds は、Linux カーネルの開発を開始し、維持したことで知られるソフトウェア エンジニアです。

数週間前プロポーズに関するニュースをこのブログで共有します 生存能力の関係で長い年月を経て復活しました Linux カーネルに C++ コードを採用すること、 2018年に冗談として持ち出されたこの提案。

La 提案が再び開始されました カーネルメーリングリスト上で、しかし深刻な意味で ハンス・ピーター・アンヴィン Intel カーネルの主要な開発者と開発者は、Linux の 3 番目のプログラミング言語として C++ を組み込む可能性を提起しました。

Linux C++
関連記事
Linux上のC++、6年ぶりに話題が復活

の導入により、 休息と Linux, 多くの開発者とコミュニティの一部が素晴らしい道を見出しました Linux で先行しているだけでなく、 他のプログラミング言語を実装するためのさまざまな「アイデア」が登場、C++を実装するという提案は再び多くのカーネル開発者の間で議論を引き起こし、リーナス・トーバルズさえも、LinuxがC++に対応する準備ができていない理由を可能な限り最も受動的でわかりやすい方法で再び説明しています(皮肉)。

Rust は、ある瞬間から次の瞬間まで Linux では受け入れられなかったことを覚えておく必要があります。Linux 上の Rust プロジェクト (Rust for Linux) は、カーネルのメイン ブランチに受け入れられて組み込まれる前に、Linus Torvalds 自身による一連の改訂が行われたため、Linux の父はソフトではなかったということは言及する価値があります。改訂を行ったり、提案された変更についてコメントしたりするとき。

記事を展開する前に、記事の内容はすべて私がインターネット上で読んだ情報やニュースを解釈して生じた個人的な意見であるため、読者の皆様の解釈とは異なる可能性があることをお断りしておきます。コメントで共有したい場合は、喜んで時間を割いて読みます。

現在 第三のプログラミング言語として C++ が提案されているとされるケースでは、 そして私は「もちろん」と言います、 実装には同様の一連のレビューが必要です、Rust の場合よりもさらに厳密ではないにしても。そして、これについて言及するという事実は、C++ と Linus には小さいながらもすでに何年もの歴史があるからです。

言及した理由 C++ は 3 番目の Linux 言語として当てはまります。 「おそらく」、それは Linux の父である Linus Torvalds が C++ を好意的に見ていなかったし、今後もそう思わないためです。というのは、彼は機会あるごとに、C++ は「ひどい言語である」と何度も言及しているからです。

言及によりC++ の使用が検討された瞬間のいくつか Linux 上と ライナス・トーバルズは反対意見を表明しただけではないただし、C++ に対する「ある種の嫌悪感」が重ね合わされて、「単に Linux のオプションではない」理由について言及しています。 最近のものの 1 つはレビュー中にありました Rust 実装の Googleの投稿でのディスカッション中、C++ を含めることが提案として言及されました。

「ここでの解決策は簡単です。Rust の代わりに C++ を使用するだけです。」

どっちに ライナス・トーバルズさんは思わず笑ってしまい、次のように答えました。

"笑"。 「C++ は C の問題を何一つ解決せず、事態を悪化させるだけです。本当にゴミ言語です。

C が好きではない人は、実際に価値のあるものを提供してくれる言語を選んでください。メモリセーフな言語や「あの」言語などは、C の落とし穴の一部を回避したり、内部 GC の「ガベージ コレクション」をサポートしてメモリ管理を容易にした言語などです。 「C++ は間違った問題をすべて解決します。『コアを C++ で書き直せ』と言う人は無知すぎて、そのことさえ知りません。」

ライナス Torvalds は常に C++ を「無駄」と考え、「役に立たない」と考えていました。 まあ、「C++ は C 言語の問題をまったく解決できません。状況をさらに悪化させるだけです。」トーバルズ C 言語が好きではない人でも、本当に価値を付加できる言語を探せばよいと考えています。 たとえば、メモリセーフであり、C によって引き起こされる隠れた危険を回避できる言語 (Rust など)。

C++と比較すると、 Linus は、C が標準的な選択である理由について次のように述べています。

「人々が C によって引き起こされる危険性について話すとき、C が非常に強力である理由の一部についても話します。それは、『C によって、このような低レベルのものすべてを効率的に実装できるようになる』ということです」と Linus 氏は述べました。また、GC はほとんどの場合、プログラミングを簡素化するのに適していますが、一般に、低レベルのシステム プログラミングでは実行できるものではありません。

実際、メーリングリストでは次のように述べられています。 1992 年のある時点で、Linux 上で C++ を使用する試みが行われました。 (Linux の誕生からほぼ 1 年後) しかし、トーバルズ以来、これは単なる「試み」にすぎませんでした。 この試みについて言及します:

それはひどいです。信じてください。C++ でカーネル コードを書くというのは、まったく愚かな考えです。

実際のところ、C++ コンパイラは信頼性がありません。 1992 年にはさらに悪化しましたが、いくつかの基本的な事実は変わっていません。

– C++ の例外処理全体が根本的に壊れています。カーネルに関しては「特に」壊れています。
– メモリ割り当てなどを背後に隠すことを好むコンパイラや言語は、カーネルにとって適切な選択ではありません。
– C では、「C++ のようなゴミを使わずに」オブジェクト指向コード (ファイル システムなどに便利) を書くことができます。

これらのコメントや他の多くのコメントを考慮すると、 Linus Torvalds が C++ をひどい言語だと考える理由が少し理解できます。、によって使用されている言語を批判することに加えて、«低品質のプログラマでは、完全で完全なゴミを生成することがはるかに簡単になるほどで​​す.»そしてそれがそれです Torvalds 氏にとって、C++ はある時点で苦い味だったようです。あなたの批判では、私が C++ を試しようとしているように見えるので、そうですね。 メールで言及しましたが、:

「C++ は非常に悪い設計の選択につながります。 STL や Boost などの「優れた」言語ライブラリ機能や、その他の完全でまったくゴミな機能を常に使用し始めます。これらはプログラミングに「役立つ」かもしれませんが、次のような問題を引き起こします。

動作しないときの無限の痛み (そして、STL、特に Boost が安定していて移植可能であると私に言う人は、あまりにもナンセンスで、面白くさえありません)
「非効率的な抽象プログラミング モデルでは、2 年後に一部の抽象化があまり効率的ではなかったことがわかりますが、今ではすべてのコードが周囲のすべてのきれいなオブジェクト モデルに依存しており、アプリケーションを書き直さないと修正できません。」

したがって、出版物のタイトルに戻り、Linus Torvalds が C++ に対して抱いている憎悪の氷山の一角をすでに少し理解しているので、あまり調査する必要はありません。 Torvalds 氏にとって、Linux には C だけで十分なので、他の言語は必要ありません。 そしてこの間ずっと、C は彼の仕事に適した言語であり、これまでも、そしてこれからもそうなるでしょう。ライナスは嫌いなプログラミング言語、特に C++ を攻撃し続けるでしょう。

そして、それ C++ が単純に考慮されない多くの理由の 1 つ Linux の場合、 それは例外を許可するということです一方、Rust は C を好みません。 カーネルプログラミングでは許可されません 例外がキャッチされないとオペレーティング システムが無効になる可能性があるため、カーネルが失敗することなど考えるべきではありません。

Y Torvalds が C++ を検討するようになったということを考えると、「想定」では Linux上、これは利点以上のものになる可能性があります 3 番目以上のプログラミング言語を含めること、 問題になるだろう、たとえば次のような実装があるため、 Rust では現在、いくつかの問題が明らかになり始めていますについての出版物ですでに言及したものなど、 Linux 上の Rust の現状。

Linux の Rust ドライバー
関連記事
Linux 上の Rust: 進歩、課題、および現状

現在の課題の中で、記事の中で言及していますが、その 1 つは次のとおりです。 « コードのレビュー担当者をさらに募集します 開発中です」に加えて、 GCC ベースの Rust コンパイラの進歩は減速しており、 あまりにも彼らがRustでカーネルの大部分を書き換える可能性はほとんどありません。 短期的には、あらゆる種類のエラー、特に互換性の問題を引き起こすことなく実行できる可能性は非常に低いです。

これらの問題がある場合、 Rustに反映されているもの C++ またはその他の言語で追加します。 Linuxで追加できるものは、 カーネル開発に大きな影響が及ぶ可能性がある これでは、最初は 2 か月ごとにバージョンを受け取るのではなく、より長いバージョン間の開発となり、より多くの開発者とより多くのレビュー担当者が必要となり、これらすべてがより大きな労力につながります。

間違いなく、C++ を第 3 のプログラミング言語として導入するというアプローチは検討されていません。すでに述べたように、これに対する主な障害の 1 つはリーナス トーバルズ自身です。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:AB Internet Networks 2008 SL
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。