アポロ11号のソースコード
Google Code Blog - Apollo 11 mission's 40th Anniversary: One large step for open source code...
アポロ11号の月面着陸から40周年ということで,最近やたらとアポロ計画関連の話題を見かける。そんな中,アポロ計画にちなんだ話題として Google Code Blog に投稿されたのが上のエントリー。 Google Code 上で公開されている Virtual AGC and AGS プロジェクトの中に, NASA のハードコピーから転記された本物の AGC (アポロ誘導コンピュータ)のソースコードがありますよ……とのこと。
このソースコードには,オリジナルのアセンブリコードに記されていたラベルやコメントまでしっかり転記されている。それらの記述に目を通していると,そのコードを書いた人の考えや気持ちが伝わってくるようで面白い。
例えば Lambda the Ultimate などで話題になっているのが [http://code.google.com/p/virtualagc/source/browse/trunk/Luminary099/LUNAR_LANDING_GUIDANCE_EQUATIONS.s?r=258:title=LUNAR_LANDING_GUIDANCE_EQUATIONS]
にある次の一節。
# Page 801 CAF TWO # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67 TS WCHPHOLD TS WCHPHASE TC BANKCALL # TEMPORARY, I HOPE HOPE HOPE CADR STOPRATE # TEMPORARY, I HOPE HOPE HOPE TC DOWNFLAG # PERMIT X-AXIS OVERRIDE ADRES XOVINFLG TC DOWNFLAG ADRES REDFLAG TCF VERTGUID
テンポラリのコードのまま月まで行ってはる! いやもちろん,実質的に問題の無いコードだからこそ,このような形で残っているのだろう。ただもうちょっと頑張ってもっともらしい事を書いておけば,40年後に総ツッコミを受けるようなことにはならなかったと思うのだけれど。
命名のセンスにも,今とはちょっと違うものが感じられる。 UI ルーチンの名前は [http://code.google.com/p/virtualagc/source/browse/trunk/Luminary099/PINBALL_GAME_BUTTONS_AND_LIGHTS.s?r=258:title=PINBALL]
だし,点火ルーチンの名前は [http://code.google.com/p/virtualagc/source/browse/trunk/Luminary099/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.s?r=258:title=BURNBABY]
だ(当時話題になっていた黒人運動家の言葉から引用したらしい)。
# # THE MASTER IGNITION ROUTINE WAS CONCEIVED AND EXECUTED, AND (NOTA BENE) IS MAINTAINED BY ADLER AND EYLES. # # HONI SOIT QUI MAL Y PENSE #
"Honi soit qui mal y pense" ――「思い邪なる者に災いあれ」の言葉に,どのような意味が込められているのだろう。このプログラムを担当した Peter Adler と Don Eyles は ,AGC 開発チームの中では最も若い2人組だった(Eyles は当時 23 歳)とのことだから,ベテランばかりの職場の中で若者らしい自己主張をすべく,意味深長な引用をしてみたり,ルーチンに妙な名前を付けてみたり,そういうちょっと青臭いことをしたのかな,と思う。