私は最近、興味深い 記事 を読みました。これは、メモリオーバーフローエラーが原因で、ボーイングのパワーシステムが崩壊し、フライトがフライングレンガに変わります。
これは低レベルのメモリ処理バグです。 Rustのようなプログラミング言語を使用すれば、このバグを解消できますか? Rustはメモリを単独で処理し、C言語のようなハードウェアに近いため、.
実際、あなたが参照するジェネレータコントロールユニットのバグは、Rust(または固定サイズの整数を持つ任意の言語)が保護できる種類のメモリ処理バグではありません。内部のカウンタユニットがオーバーフローしました。これは、たとえば時間を追跡する固定サイズのカウンターで最終的に発生し、ユニットのprogrammed安全機能がそれを検出し、異常な動作として分類しました。異常な動作として不良と見なされ、ユニットは「フェイルセーフ」モードになりました。バグに無効なメモリアクセスが含まれていたことを示すものはありません。
そのため、C/C++からRustに切り替えても、このクラスのバグを防ぐことはできません。これは、最も安全な言語向けの最も賢いコンパイラでさえ、動作が正しくないことを認識できないアプリケーションロジックにあるためです。問題がある。
Rustすぐに安全が重要な領域で引き継がれないと思われる主な理由は、
メモリセーフな言語のみを使用して、メモリ処理エラーを回避できますか?簡単に言えば、はい。彼らは実際に、世界のインフラにおける重大なエラーの巨大な原因を排除する可能性を秘めています。 (これらの言語のコンパイラとランタイムシステムのimplementationにメモリ処理エラーが存在する可能性がありますが、これらは通常、平均的な業界のプログラマよりもはるかに少ない、はるかに有資格者によって書かれているため、リスクははるかに小さいです。)
これらの言語は、強化されたセキュリティの強さでC/C++を置き換えることができますか簡単に言えば、いいえ。現状のままでは、市場はセキュリティに報いることはありません。ソフトウェアショップは通常、プログラムエラーによる損害の責任を負いません。消費者はソフトウェアの品質を高めるために高い価格を受け入れず、あまりにも多くの民間および公共機関が簡単に興味を持っています。ハッキング可能なシステム。また、プログラマlove記憶に安全でない言語がプログラマに与える生の力。したがって、当面はメモリ管理システムに関連する追加のコストを賄うことができたとしても、当面は未定義の動作とその結果生じる脆弱性に悩まされることになります。