これが行われたかどうかわからないため、これは回答というよりもコメントですが、ミッション開始後にミッションクリティカルソフトウェアが別のプログラミング言語に切り替わったことは本当に疑わしいです(リフトオフ)。
プログラミング言語の変更は大きなリスクです。すべての言語には、管理する必要のある独自の長所、短所、および癖があります。
たとえば、Cプログラミング言語では、開発者が簡単に足を踏み入れることができるいくつかの構成が可能です(例:overwrite /破損したメモリ)したがって、 NASAにはプロジェクトでCを使用する方法に関するガイドがあります。また、 ESAにもあります(実際の ESA C / C ++への代替リンクESAサイトのものがロードされなかったため、コーディング標準)。プロジェクトによっては、さらに厳しいルールが適用される場合があります(動的メモリ割り当てを使用しないなど)。
これらのルールは静的アナライザーやその他のツールによって適用されることが多いため、言語は実際にはエコシステムの一部です。最後になりましたが、ユニットテストと統合テストが必要です。言語を変更する場合は、プログラムのソースファイルだけでなく、エコシステム全体を変更する必要があります。
(もちろん、実際のプロジェクト管理もありますが、これはほぼ同じだと思います。 " 「言語を切り替えるだけです。)
正しいソフトウェアの開発は、非常に面倒で時間のかかる作業になる可能性があります。 ミッションクリティカルなプロジェクトの開発に数か月または数年を費やし、言語を切り替えることにした場合は、基本的に最初から始める必要があります(元の実装の一部を移植/再利用できる場合でも)。プログラミング言語を切り替えるときは、通常、切り替えたいと思います。新しい言語では、問題を解決するコーディングパターンを採用できるためです(たとえば、特定の部分の実装を簡単にしたり、安全に切り替えたりできます)。しかし、これはつまり、元のプロジェクトの設計を少なくとも部分的に変更して、これらの機能を利用することで、さらに多くのリスクをもたらす可能性があることを意味します。
正確性(または「正確に予測できる」ため)動作」)は非常に重要であり、新しい未知の問題を導入するよりも、既知の問題を処理する方が適切です。コンパイラ(または使用するコンパイラのバージョン)を変更するだけでも、変更が必要です。慎重に評価されました。コンパイラにはバグがあるか、コードの動作方法が変更されています。Cを例として再び使用すると、有名な i = i ++ + i ++; 未定義の動作があります。 / code>ここで、式の結果は標準で明示的に定義されておらず、すべてのコンパイラーが必要なことを実行できます(この場合、デーモンを鼻から飛ばすことができるという有名なジョークです)。コンパイラのバージョンを変更すると、そのようなコードは以前の動作を変更する可能性があります。
要点は、プログラミング言語の変更は非常にコストのかかる(時間とお金の)作業であり、多くのリスクをもたらします。そのため、このような切り替えのメリットは、関連するコストとリスクを上回っている必要があります。地上で使用されるソフトウェア(愚かな例:Cで記述された古いX11 UNIXソフトウェアからJavaへの切り替え)の場合を想像できますが、フライトハードウェアで使用されるソフトウェアでこれが発生することを想像するのは困難です。