言語仕様と宇宙開発にまつわるエピソードとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 言語仕様と宇宙開発にまつわるエピソードの意味・解説 

言語仕様と宇宙開発にまつわるエピソード

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/26 08:19 UTC 版)

FORTRAN 77の言語仕様」の記事における「言語仕様と宇宙開発にまつわるエピソード」の解説

FORTRANの「空白無視する」という言語仕様が招く、コンマピリオド打ち間違いコンパイルエラーにならず、間違ったプログラムになる、という例を説明する。 Cで、次のように書くプログラム一部があったとするint i; (中略) for( i=1; i<=5; i++ ) { 何らかの処理; } これをFORTRAN66で書くと次のように書ける。 DO 10 I=1,5 何らかの処理 10 CONTINUE 最初の行は、整数型変数Iを1から5まで1ずつ増加させつつ、行ラベル10の行までを繰り返し実行することを表す。行ラベル10CONTINUE文ループ制御端末ではなく、どこにでも置ける「何もしない機能の文である。 この、DO文コンマピリオド打ち間違えたとする。すると、空白無視するFORTRAN66では、この行は、 DO10I=1.5 という、「DO10Iという実数型変数1.5という実数代入する代入文」と解釈されるFORTRANでは変数宣言が無い場合、DO10Iは実数型変数暗黙に示すからである。この結果、このプログラムは(他のどこからも参照されない)変数DO10Iへの代入とただ1回の「何らかの処理」が実行されるだけとなり、意図した繰り返し処理は起こらないC言語などでは、空白文字字句要素切れ目として解釈されるため、DO と 10 と Iが結合して一つ字句要素になることはない。 「これが原因NASA宇宙ロケット制御不能になり爆破された」という話が度々語られる。しかしこの話は、1960年代前半のほぼ同時期にあった、二つ異なった事件混同による、ある種の「都市伝説」である。 要約すると、 FORTRANの言語仕様原因生じたバグは、実機ではなくソフトウェアだけでの実行結果の異常として発覚し修正されたため、実際ロケット打ち上げには関係していない。これはマーキュリー計画において起きた宇宙機ロストつながったプログラムミス言語仕様とは関係なく、プログラムするべき、として示され数式において、必要な線が欠けていたため発生した。これはマリナー1号において起きたプログラミングコーディング)に間違い無くても、要求され仕様時点でその中にバグがあるかもしれない、という教訓となっている。 DO文によるバグは、1963年マーキュリー宇宙船軌道計算ソフトウェア開発中に、スタッフ一人計算精度問題があることに気づいた。コード調査した結果、「DO 10 I=1.10」という行を発見した。それが原因で、ループにより近似の精度高めるはずのコードが、ループしないため精度高めことなく通り過ぎてしまっていた。これを「DO 10 I=1,10」と修正したところ、期待した精度得られるようになった宇宙機喪失つながった事故は、1962年金星探査マリナー1号打ち上げるアトラスロケットには、Rate SystemおよびTrack System呼ばれる種類制御系統が搭載されていた。Rate System搭載型であり、地上型Track System前者対すバックアップとして動作する1962年7月マリナー1号打ち上げ直後に、ロケットguidanceアンテナ必要な性能発揮しなくなり搭載型システムのみに頼ってロケット制御されることになった。しかし搭載型システムには次のような仕様バグがあった。「このようにプログラムすべき」として指示されていた手書き数式中の、平均化を示す線(しばしば「ハイフン」と言及されるが、正確にオーバーライン)が欠落しており、そのため平均化した値を使うべきところでそのままの値が使われ微妙なタイミング差の平滑化理に問題があった(プログラム自体は「指示され仕様通り正しく書かれていた。指示され仕様間違っていたのである)。結果として制御コンピュータは、ロケット正常に上昇しているにも関わらず異常な補正動作ロケット指示し続け正常なコースから外れていった。結局ロケットには破壊指令送られ自爆しマリナー1号大西洋へと沈んだ

※この「言語仕様と宇宙開発にまつわるエピソード」の解説は、「FORTRAN 77の言語仕様」の解説の一部です。
「言語仕様と宇宙開発にまつわるエピソード」を含む「FORTRAN 77の言語仕様」の記事については、「FORTRAN 77の言語仕様」の概要を参照ください。

ウィキペディア小見出し辞書の「言語仕様と宇宙開発にまつわるエピソード」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「言語仕様と宇宙開発にまつわるエピソード」の関連用語

言語仕様と宇宙開発にまつわるエピソードのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



言語仕様と宇宙開発にまつわるエピソードのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのFORTRAN 77の言語仕様 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS