阿波罗计划曾将 12 位人类男性送上月球,但在这群成功男人的背后,却站着一位真正的女神。
▲关于阿波罗计划的一些秘密可能永远不会公开
今天,极客君就和你来聊聊那个时代的程序媛,那个时代的极客女神:
她的代码指引着他们准确飞向月球,又引导着他们平安返回地面——她就是玛格丽特·汉密尔顿(Margaret Hamilton),刚被授予美国的总统自由勋章。
▲女神的阿波罗计划工作照
我们的女神一开始并不写代码,但为了供丈夫去读哈佛法学院,她就找到了一份临时的编码工作,地点是麻省理工学院的人工智能实验室。
和初代黑客比代码
那时,计算机领域的黑客文化正在该实验室孕育。
当黑客们正尝试让 TX-0 输出巴赫的旋律时,玛格丽特就在 PDP-1 上帮助气象学研究对大气进行建模;当黑客们在 PDP-1 上沉迷于《太空大战》游戏时,女神开始为美国空军的 SAGE 系统编写防空软件。
▲PDP-1 电脑上的《太空大战》游戏
当黑客们的「午夜计算机改装组织」为 PDP-6 改装不兼容分时系统时,女神已经开始为阿波罗飞船编写导航软件,女神的女儿还要跟着她在实验室的地板上睡觉、玩耍。
▲玛格丽特和她的阿波罗 11 号代码
当然,黑客们并非没有为女神添加麻烦,她气象项目的 Vortex 程序就因黑客们对计算机的改装而崩溃过。
不过,对于智力上的挑战,女神也能乐在其中、漂亮地回击,黑客们也会知趣地把改装工作做得更好。
「编」出完美的导航软件
尽管导航软件的代码量很大,但真正的难题却是把代码变成可用的程序。
现在的程序员,把键盘敲出来的代码用现成的编译器编译一下就能运行,但当时的代码真要靠人们像结绳记事一样把代码的信息编织到内存中:
▲在当时的磁芯内存上“穿针引线”进行编码
线路穿过磁芯会生成信号,是为「1」;线路绕过磁芯则没有信号,是为「0」:
▲磁芯内存上的 「0」 和 「1」
把写好的代码编织成一个飞船可用的程序,需要数月的时间;一旦出错,返工的工作量之大就难以想象。
好在,阿波罗飞船的自动导航软件还是按期完成了。
地球轨道,阿波罗 7 号的测试里,导航软件运行得完美无瑕。
▲阿波罗 8 号从月球轨道看地球
可在月球轨道,阿波罗 8 号的测试中,由于返程时宇航员一时疏忽,清空了所有巡航数据,飞船顿时失去了方向。
接到紧急电话后,玛格丽特连夜奋战,花 9 小时过完每一行代码,然后重新上传数据后,阿波罗 8 号终于成功返航。
▲阿波罗 8 号飞船模型
拯救人类的第一次登月
真正的考验,还是随后的阿波罗 11 号,人类首次登月。
1969 年 7 月 20 日,休斯敦时间下午 4 点 14 分,阿姆斯特朗和奥尔德林正在登月舱内准备着陆。
▲准备着陆月球
忽然,登月舱的报警器开始警告电脑过载。
原来,登月舱分离前,不知是谁犯了个低级错误,没有关闭登月舱的对接雷达,让电脑继续监视那个用不着的雷达。
好在,玛格丽特把软件设计得足够聪明:电脑最宝贵的计算资源,会被优先用于最关键的部分,如安全登陆;而不怎么重要的对接雷达的数据,则可以忽略处理。
换言之,就是电脑可以随时中止低优先级任务,专注于高优先级任务。
▲人类首次登上月球
两个宇航员最终有惊无险地在月球表面着陆,此时,地球上才收到阿姆斯特朗报告安全的第一个声音:
休斯敦,这里是静海基地。「鹰」着陆成功。
若非玛格丽特那心思缜密的可靠软件,以当时电脑蛮荒时代的程序设计,登月电脑还真有可能崩溃。那样的话,登月舱就会毫无悬念地撞毁在月球,「人类的一小步」可能就是另一番结果:一个撞击坑再搭上两条生命。
▲宇航员凯旋而归
第一次登月回来,阿波罗 11 号的三位宇航员即获得当年的总统自由勋章。
直到近半个世纪后,拯救整个飞行任务的玛格丽特·汉密尔顿终于也获得了同样荣誉的认可。
▲奥巴马授予玛格丽特勋章
Geek君有话说
事实上,在阿波罗登月最初的计划中,压根就没有「软件」这两个字。NASA 后来才意识到这一点的重要性,逐渐把软件相关的团队扩大到了 400 多人。
但玛格丽特最初所负责的部分,连名字都被写作「Forget it」,因为那是「万一」任务失败之后的后备方案。一开始,所有人都觉得失败不可能发生,因而也没有人肯去重视。
可「不出错」毕竟只是理想状态,许多问题,玛格丽特早就考虑到了。
▲女神登上阿波罗飞船模拟器
每次程序确定之后,她的团队都会一遍遍严格地测试,使用模拟器(尽管还非常初级、简陋)来模拟登陆状况。
对于出现的 bug,她要求整个团队要理解错误,梳理错误的原因,并防止下一次程序出错。
在电脑和编程的「蛮荒年代」,她始终以一颗清醒而负责的头脑来制定最初的规范。
▲玛格丽特接受《连线》专访
之所以如此努力,玛格丽特回答得很谦虚:
(我)不想在报纸头版头条上看到「阿波罗计划失败,玛格丽特团队难辞其咎」。
评论