宇宙開発におけるソフトウェアバグ

FORTRAN のバグでロケットが落ちたとかいう話は,宇宙開発ネタとしてもマネタとしてもけっこう有名だけど,間違って覚えちゃってる人もけっこう多いんじゃなかろうか.



「DO 3 I=1,3」を「DO 3 I=1.3」と入力してしまったのは Mariner 1 じゃなくて Mercury のほうだし,このバグのせいで別に問題は起きなかった.バグのせいで指令破壊された Mariner 1 のほうはというと,抜け落ちてたのは「ハイフン」じゃなくて「バー」 (\bar) だよね.

なんと,そもそも NASA のサイトの説明が間違ってるらしいw.

それを受けてか,的川先生も「轟きは夢をのせて―喜・怒・哀・楽の宇宙日記」




以後アメリカはこれを "infamous hyphen (悪魔のハイフン)" と呼んで,ソフトウェアの軽視が致命傷になるという戒めとしたのでした.
として紹介していたけど,そもそも "infamous hyphen" でぐぐっても 3 件しかヒットしなかったよ….



ちなみに私が最初にこのネタを知ったのは,「エキスパート C プログラミング―知られざる C の深層」だったのだけどこの本にはちゃんと正しい内容が書いてあった.さすがだな.えらい.さらにこの本に

Hill, Gladwyn, "For Want of Hyphen Venus Rocket is Lost," New York Times, July 28, 1962.
という参考文献が挙がっているので,1962 年発行のこの記事がハイフン誤解の元凶だった可能性は十分にある.



さて,今ならこの Mariner 1 と Mercury の 2 つのバグに加えて,第 3 のバグも永く記憶されるべきだろう.1999 年に Mars Climate Orbiter が火星を目前にして失われたのは,ヤード・ポンド法メートル法の取り違えによ
るソフトウェアミスだった (1 ニュートンは 0.22 ポンド.この場合エンジン推力が 22% になり軌道投入ができなかった).だーかーらーいい加減メートル法使えよってあれほど言ってるだろwwwとか思うと同時に,「プログラムは思った通りには動かない.作った通りに動く」という諺を思いだし,ソフトウェアの律義さに涙がでる.



追記: 以下のサイトに,上記の NY Times の参考文献記事からの抜粋が載ってますね.

The hyphen, a spokesman for the laboratory explained, was
a symbol that should have been fed into a computer, along
with a mass of other coded mathematical instructions.
さらに,G. J. Meyer 氏のガセビア記述も引用したうえで,ソースがないことを指摘しています.ただ,FORTRAN の DO 文バグが Mercury 計画に実在したという事実までは思い至らなかったらしく,都市伝説かなんかかと思っているふしがあります.



関連記事: 宇宙開発をめぐる噂の真相シリーズ