it-swarm-ja.com

Rust将来的にCまたはC ++プログラムを置き換えることはできますか?

私は最近、興味深い 記事 を読みました。これは、メモリオーバーフローエラーが原因で、ボーイングのパワーシステムが崩壊し、フライトがフライングレンガに変わります。

これは低レベルのメモリ処理バグです。 Rustのようなプログラミング言語を使用すれば、このバグを解消できますか? Rustはメモリを単独で処理し、C言語のようなハードウェアに近いため、.

2
Avinash

実際、あなたが参照するジェネレータコントロールユニットのバグは、Rust(または固定サイズの整数を持つ任意の言語)が保護できる種類のメモリ処理バグではありません。内部のカウンタユニットがオーバーフローしました。これは、たとえば時間を追跡する固定サイズのカウンターで最終的に発生し、ユニットのprogrammed安全機能がそれを検出し、異常な動作として分類しました。異常な動作として不良と見なされ、ユニットは「フェイルセーフ」モードになりました。バグに無効なメモリアクセスが含まれていたことを示すものはありません。

そのため、C/C++からRustに切り替えても、このクラスのバグを防ぐことはできません。これは、最も安全な言語向けの最も賢いコンパイラでさえ、動作が正しくないことを認識できないアプリケーションロジックにあるためです。問題がある。

Rustすぐに安全が重要な領域で引き継がれないと思われる主な理由は、

  • レガシーコード。現在、ソフトウェアがゼロから作成されることはほとんどありません。ほとんどの場合、先行製品があり、その製品からの大量のコードを再利用すると、新しい製品を作成するためのリードタイムを短縮できるため、新製品が収益を上げるまでの時間を短縮できます。従来のコードは通常、CまたはC++で書かれています。
  • 認定コンパイラの欠如。規制されている業界では、責任を放棄することはできません。通常、ソフトウェアが有害なアクションを実行できないことを積極的に証明する必要があります。これには、ソースコードに存在しないバグを導入することなく、コンパイラがソースコードを機械語命令に忠実に変換したという証拠が含まれます。 C/C++コンパイラのコンパイラベンダーの中には、このような主張をすることに積極的に関与しているものがありますが、Rustコンパイラのベンダーはありません。企業に非常に大きな負担をかけるでしょう。 Rustに切り替えます。

メモリセーフな言語のみを使用して、メモリ処理エラーを回避できますか?簡単に言えば、はい。彼らは実際に、世界のインフラにおける重大なエラーの巨大な原因を排除する可能性を秘めています。 (これらの言語のコンパイラとランタイムシステムのimplementationにメモリ処理エラーが存在する可能性がありますが、これらは通常、平均的な業界のプログラマよりもはるかに少ない、はるかに有資格者によって書かれているため、リスクははるかに小さいです。)

これらの言語は、強化されたセキュリティの強さでC/C++を置き換えることができますか簡単に言えば、いいえ。現状のままでは、市場はセキュリティに報いることはありません。ソフトウェアショップは通常、プログラムエラーによる損害の責任を負いません。消費者はソフトウェアの品質を高めるために高い価格を受け入れず、あまりにも多くの民間および公共機関が簡単に興味を持っています。ハッキング可能なシステム。また、プログラマlove記憶に安全でない言語がプログラマに与える生の力。したがって、当面はメモリ管理システムに関連する追加のコストを賄うことができたとしても、当面は未定義の動作とその結果生じる脆弱性に悩まされることになります。

1
Kilian Foth