web-dev-qa-db-ja.com

重要な制御ソフトウェア(原子力発電所など)のプログラミングにLusterが使用されるのはなぜですか?

だから、ウィキペディアに述べられているように:

Lustreは、リアクティブシステムをプログラミングするための、正式に定義された宣言型の同期データフロープログラミング言語です。 1980年代初頭に研究プロジェクトとして始まった。言語の正式なプレゼンテーションは、1991年のIEEE議事録に記載されています。 1993年には、Esterel Technologiesによって開発された産業環境SCADEのコア言語として、商用製品での実用的な産業用途へと発展しました。現在、航空機、ヘリコプター、原子力発電所の重要な制御ソフトウェアに使用されています。

なぜこのような言語が重要な制御ソフトウェアに使用されているのか、なぜ開発されたのかと思います。たとえば、Cで記述できますか?

なぜこの種の特定の言語を設計する必要があるのですか?それらが「より高速」であるか、それらが存在するシステム用に厳密に設計されているためですか?

7
Josip Ivic

重要な制御ソフトウェアにこのような言語(Lustre)が使用されるのはなぜですか。

一部のソフトウェアツール(または方法論)は部分的にコードw.r.t.一部の形式化された仕様、および他の一部の(または同じ、SCADEなどの)ソフトウェアツールが一部のCコードを生成生成できるため(「より安全」でおそらく高速になる)手書きのコードがLusterソースから現実的に達成できるものよりも)。

静的ソースプログラム分析 について読んでください。

someCプログラム(コーディングスタイルが制限されている)が何らかの方法で「安全」または「正しい」w.r.tであることを証明するためにいくつかのツールが存在することに注意してください。一部の形式化された仕様。例えば Frama-C を調べてください。

また、一部のプログラミング言語サブセット(たとえば、Ocamlの大部分、そのおかげで type system ですが、悪名高い Obj.magic trick )プログラムがクラッシュしないことを設計により「保証」することができます(w.r.t.いくつかの仮説)。

しかし、覚えておいてください No Silver BulletHalting Problem の決定不能性のため、ソフトウェアを完全に証明することは望めません(そして、その仕様とその環境を完全に正式化することは望めません) ;ソフトウェアがabstractions...)であることを受け入れる必要があります

Lattnerのブログもお読みください: 未定義の動作についてすべてのCプログラマが知っておくべきこと

ところで、いくつかの業界(原子力、航空機、さらには医療機器など)には、安全性が重要なソフトウェアに関する仕様と規制があります。たとえば DO-178C 民間航空機の場合。このような場合、ソフトウェアのコストは通常​​の電話アプリケーションよりもlot(たとえば、コードの行ごとに)高く、ソフトウェアの開発方法は非常に異なります(そしてはるかに官僚的:文書化し、すべての変更を正式に受け入れてテストする必要があります(1行のパッチでさえも)。