宇宙開発におけるソフトウェアバグ
FORTRAN のバグでロケットが落ちたとかいう話は,宇宙開発ネタとしてもマネタとしてもけっこう有名だけど,間違って覚えちゃってる人もけっこう多いんじゃなかろうか.
「DO 3 I=1,3」を「DO 3 I=1.3」と入力してしまったのは Mariner 1 じゃなくて Mercury のほうだし,このバグのせいで別に問題は起きなかった.バグのせいで指令破壊された Mariner 1 のほうはというと,抜け落ちてたのは「ハイフン」じゃなくて「バー」 (\bar) だよね.
それを受けてか,的川先生も「轟きは夢をのせて―喜・怒・哀・楽の宇宙日記」
で
として紹介していたけど,そもそも "infamous hyphen" でぐぐっても 3 件しかヒットしなかったよ….
以後アメリカはこれを "infamous hyphen (悪魔のハイフン)" と呼んで,ソフトウェアの軽視が致命傷になるという戒めとしたのでした.
ちなみに私が最初にこのネタを知ったのは,「エキスパート C プログラミング―知られざる C の深層」だったのだけどこの本にはちゃんと正しい内容が書いてあった.さすがだな.えらい.さらにこの本に
という参考文献が挙がっているので,1962 年発行のこの記事がハイフン誤解の元凶だった可能性は十分にある.
Hill, Gladwyn, "For Want of Hyphen Venus Rocket is Lost," New York Times, July 28, 1962.
さて,今ならこの Mariner 1 と Mercury の 2 つのバグに加えて,第 3 のバグも永く記憶されるべきだろう.1999 年に Mars Climate Orbiter が火星を目前にして失われたのは,ヤード・ポンド法とメートル法の取り違えによ
るソフトウェアミスだった (1 ニュートンは 0.22 ポンド.この場合エンジン推力が 22% になり軌道投入ができなかった).だーかーらーいい加減メートル法使えよってあれほど言ってるだろwwwとか思うと同時に,「プログラムは思った通りには動かない.作った通りに動く」という諺を思いだし,ソフトウェアの律義さに涙がでる.
追記: 以下のサイトに,上記の NY Times の参考文献記事からの抜粋が載ってますね.
さらに,G. J. Meyer 氏のガセビア記述も引用したうえで,ソースがないことを指摘しています.ただ,FORTRAN の DO 文バグが Mercury 計画に実在したという事実までは思い至らなかったらしく,都市伝説かなんかかと思っているふしがあります.
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.
関連記事: 宇宙開発をめぐる噂の真相シリーズ
- 第 2 弾: チャレンジャー号の都市伝説 [2006-05-18]
- 第 3 弾: 「一方ロシアは鉛筆を使った」の真実 [2006-07-31]
- 第 4 弾: Mr. Gorsky の真相 [2006-11-18]
- 第 5 弾: Mars Global Surveyor の通信途絶の真の原因はソフトウェア更新時の人為ミスか [2007-01-14]
- 第 6 弾: ガチャピンは本当に宇宙へ行っていた [2007-08-25]
- 第 7 弾: ガチャピン「また宇宙に行きたい」 [2008-05-23]