戦闘機「F-35」にはC++の特殊ルール適用版が使われており例外処理や再帰関数が禁止されている

by Alexander Gorlin
アメリカ空軍や航空自衛隊が運用する戦闘機「F-35」はC++でコーディングされたソフトウェアを搭載しています。このC++コードは「Joint Strike Fighter Air Vehicle C++ Coding Standards(JSF AV C++)」と呼ばれるコーディング規則に沿って記されているとのことで、Googleの研究者で航空機関連プログラミングにも詳しいLaurieWired(Laurie Kirk)氏がJSF AV C++の特長を解説しています。
Why Fighter Jets Ban 90% of C++ Features - YouTube

1996年6月に欧州宇宙機構はアリアン5型ロケットの初回打ち上げを実施しました。しかし、ロケットは発射から数十秒後に爆発し、打ち上げは失敗。この失敗はロケットのソフトウェアで処理できない例外が発生したことが原因とされています。

ロケットと同様に、戦闘機にも複雑なコードを含むソフトウェアが搭載されており、コードの行数は戦闘機の世代ごとに指数関数的に増加。F-35には1000万行近くのコードが含まれており、安全性の高いコーディングを行う仕組みを作ることが重要でした。

F-35よりも前に開発された戦闘機にはアメリカ国務省が開発を主導した「Ada」というプログラミング言語が採用されていました。しかし、F-35の開発当時はすでにAdaが陳腐化しており、代わりにC++を採用することとなりました。C++を採用しつつアリアン5型ロケットのような失敗を防ぐために策定されたコーディング規格がJSF AV C++というわけです。

JSF AV C++の内容は一般公開されており、C++の生みの親であるビャーネ・ストロヴストルップ氏の個人サイトでも公開されています。
JOINT STRIKE FIGHTER AIR VEHICLE C++ CODING STANDARDS FOR THE SYSTEM DEVELOPMENT AND DEMONSTRATION PROGRAM
(PDFファイル)https://www.stroustrup.com/JSF-AV-rules.pdf

JSF AV C++には「例外処理」「再帰関数」「動的メモリ確保」といったC++の機能を制限する項目が含まれています。

ストロヴストルップ氏の公式ページにはFAQページが用意されており、JSF AV C++で例外処理を禁止した理由について「航空管制ソフトウェアなどのリアルタイム性と安全性が極めて重要なアプリケーションでは、計算に時間がかかりすぎると誰かが死ぬ可能性があります。このため、応答時間を保証する必要がありますが、現時点のツールでは例外処理の応答時間を保証できません」と記されています。

LaurieWiredはフライトシミュレーター「X-Plane 12」と自作のMFD(多機能情報表示ディスプレイ)を用いてJSF AV C++の効果を説明しています。

JSF AV C++に準拠していないコードの場合、例外が発生した際にシステムが動作不能に陥ってしまいました。JSF AV C++に従っていれば例外が発生してもエラーコードを返してそのまま次の処理に移行することができます。

JSF AV C++の思想は後のプロジェクトにも受け継がれており、NASAでは「F Prime」という安全な組み込みシステムを作るためのエコシステムが整備されています。

また、自動車業界でもJSF AV C++と同様の思想を受け継いだAUTOSARという規格策定団体が発足しています。

ただし、JSF AV C++は記事作成時点では古い規則となっており、最新のC++コアガイドラインを参照することが重要とのこと。

なお、LaurieWiredが開発した多機能情報表示ディスプレイのソースコードは以下のリンク先で公開されており、JSF AV C++に準拠したコードと準拠していないコードを見比べることができます。
GitHub - LaurieWired/XplaneFlightData: Xplane Demo for JSF C++ Standard
https://github.com/LaurieWired/XplaneFlightData

また、動画の中ではJSF AV C++準拠のコード非準拠コードの実例を示しつつ違いが解説されています。

・関連記事
30年近く極秘の存在だった世界初のマイクロチップ「MP944」とは? - GIGAZINE
アメリカ軍がAI自律戦闘機「X-62A」と人間が操縦する「F-16」の戦闘テストに成功 - GIGAZINE
NATOがAIベースの軍事システムを加盟国に配備するためビッグデータ分析企業と契約 - GIGAZINE
アメリカ空軍は今後10年でAI搭載機を1000機単位で導入予定 - GIGAZINE
ウクライナ軍がロシア軍機を破壊した「段ボール製ドローン」のスペックや特徴を画像付きで詳しく解説 - GIGAZINE
ウクライナの長距離攻撃ドローンまとめ、どういうドローンで実際にロシアを攻撃しているのか? - GIGAZINE
・関連コンテンツ
in 動画, ソフトウェア, 乗り物, Posted by log1o_hf
You can read the machine translated English article The F-35 fighter jet uses a special vers….







