影响人类登月进程的程序员

2019-11-15 01:42李嵩
太空探索 2019年11期
关键词:阿姆斯特朗美国宇航局阿波罗

文/李嵩

▲玛格丽特·汉密尔顿

50年前的7月20日,“阿波罗11号”的“鹰号”登月舱制动火箭点火,开始进入月表着陆的最后程序。这时候软件报警的红灯突然亮起,接着紧促的警报声开始钻进两名航天员尼尔·阿姆斯特朗和巴兹·奥尔德林的耳鼓。“错误代码1202?”,两名航天员即使训练有素,也都没有想起来这个代码代表的是什么错误类型。正在聚精会神驾驶“鹰号”的阿姆斯特朗见登月舱似乎一切正常,抬手就关闭了报警按键。没多久,软件报警灯再次亮起,这次的错误代码是“1201”。阿姆斯特朗这次没有关闭警报,他的注意力都集中在控制降落舱和即将用尽的燃料指示器上。在警报声中,“鹰号”依靠阿姆斯特朗的手动控制,平稳地降落在了月球表面。“休斯顿,这里是静海基地,‘鹰号’着陆成功!”几十万公里外的休斯顿欢声雷动,两名航天员的手也紧紧握在一起。他俩想不到的是,一位女程序员设计的控制软件刚刚拯救了他们两个的生命,也拯救了这次创造人类历史的航天行动。这位女程序员的名字叫做玛格丽特·汉密尔顿。

从数学天才到软件工程师

在事后调查中发现,软件错误代码的含义是“执行溢出”,原因是登月舱的轨道对接雷达在降落中没有被关闭,其传过来的大量无用数据占满了计算机的存储空间,使计算机不堪重负。好在控制计算机软件具有“异步”功能,优先选择处理了安全着陆方面的任务,而终止了处理无用的雷达数据的工作,使“鹰号”的计算机始终坚持在为阿姆斯特朗的着陆服务。这都得益于软件设计者玛格丽特·汉密尔顿超前的认识与异乎寻常的责任感,她设计的软件在错误出现时,经受住了考验。

▲玛格丽特为阿波罗计划编写的软件代码摞起来超过了她的身高,这张照片也成为阿波罗计划的经典瞬间之一

玛格丽特在少年时代就在数学方面展现出了特殊的天分,每个数学公式她都会详细推导,这样理解了过程就不用死记硬背了。1960年,24岁的玛格丽特凭借自己的数学才能在麻省理工学院谋得了一份编写程序的工作,赚取报酬资助自己的丈夫完成了法学进修,之后她的丈夫想让她去哈佛做个兼职,但玛格丽特回绝了,“我会让你以我为荣的,但绝不是你希望的那种方式。”玛格丽特把自己逻辑推理方面的才华应用到了编程方面,并渐渐在业内有了名气。

不久后,“阿波罗计划”正式启动,美国宇航局找到了玛格丽特,“我们要找会编程的人,帮我们把人送到月球上去。”玛格丽特的人生由此而改变。

当时并没有“软件工程”这一学科,甚至在“阿波罗计划”最早的预算中,根本就没有软件这一门类,给登月飞船上的计算机编写控制指令程序应该做什么,又要怎么做,没有人知道。用玛格丽特的话来说,“我们走进去的时候,没有人知道我们正在做的是什么,它就像是蛮荒的西部,没有被开发过,也没有人教我们。”

▲玛格丽特(左二)与同事一起讨论阿波罗飞船的导航软件

▲玛格丽特在阿波罗指令舱模拟机内调试程序

玛格丽特就这样成为了“阿波罗计划”的第一个程序员。她从“软件”的概念开始培训,带领一群美国宇航局四处搜罗来的数学天才“摸着石头过河”,开创了整套软件设计与测试的全部开发流程,甚至“软件工程师”这个词都是由她自己创造出来的。美国宇航局后来逐渐意识到了软件的重要性,并视其为在登月竞赛中击败苏联的关键环节之一。到了1968年,与玛格丽特一起从事与软件相关工作的人员已经达到了400人之众。

带航天员回家

玛格丽特十分钟爱这份有时枯燥,但却充满神秘感和挑战性的工作。工作之余她会和团队里的人讲讲冷笑话,还会在深夜工作结束后去喝一杯,也常在喝完酒后兴冲冲的赶回实验室修改一段突然想到的代码错误。

▲玛格丽特(前排左一)和同事们一起关注阿波罗8号飞行任务

▲2016年底,时任美国总统奥巴马为玛格丽特颁发自由勋章

在每次程序确定后,玛格丽特都要求她的团队使用模拟器一遍一遍地测试,虽然很多问题她早就想到了,但是毕竟“不出错”只是一个理想状态。被问起为什么如此有“责任感”,玛格丽特打趣说,是因为“不想在报纸头条上看到《阿波罗计划失败,玛格丽特团队难辞其咎》”。

在上世纪60年代的美国,女性婚育后还出来工作被认为是难以理解的事情。玛格丽特经常被邻居们责问:“你怎么能这么不顾你的小孩?”为了兼顾家庭和工作,玛格丽特在工作忙时都会把女儿劳伦带到实验室。每个挑灯夜战的晚上,劳伦都会在实验室的地板上睡着,醒来后独自玩耍。

一天,小劳伦照常在实验室陪母亲工作,无所事事的她开始摆弄控制舱模拟器键盘上的按键,正处在飞行状态的模拟器一下子就失灵了。原来小劳伦偶然启动了一个叫做“P01”的预运行程序,这个程序会删除导航系统内的数据。

虽然训练有素的航天员不会犯小劳伦这样的错误,但玛格丽特还是想在软件中增加一段代码,来防止这种事情的发生。但是这一想法被美国宇航局否决了,因为“航天员绝不会犯错,他们的训练近乎完美”,于是玛格丽特转而增加了一行操作说明,让所有美国宇航局的工程师和航天员都可以看到:“不要在飞行过程中启动P01”。但所有人都告诉她说,“那样的事情永远都不会发生”。

可是“墨菲定律”再次应验了。在“阿波罗8号”环绕月球飞行的任务中,航天员吉姆·洛威尔不小心启动了P01程序,所有导航数据都被清空,“阿波罗8号”找不到回家的路了。

玛格丽特和她的程序员们需要想出一个办法带航天员回家,而且还必须是一个完美无缺的办法。在花费9个小时研究了2000多页的程序列表后,玛格丽特向美国宇航局提交了她们的办法,休斯顿重新上传了一份新的导航数据,终于重启了“阿波罗8号”的导航系统。玛格丽特成功地让航天员们找到了回家的路,这之后,玛格丽特进一步完善了控制程序,使系统具有更强的防错能力,保证阿姆斯特朗稳健地迈出了人类的“一大步”。

2016年底,美国总统奥巴马为表彰玛格丽特在计算机编程领域做出的贡献,向她颁发了自由勋章。奥巴马在颁奖典礼上表示,玛格丽特代表了为人类航天事业默默无闻奋斗着的一代女性。

▲伊凡帕电站用太阳能电池板组成玛格丽特的月光肖像

当地时间2019年7月18日日落时分,美国莫哈韦沙漠内出现了十分壮观的场面。伊凡帕太阳能发电站的10多万面太阳能电池板开始自动调整角度,初生的月光照到这些角度不一的镜面上,明暗交织,满月时分,太阳能电池板反射的月光形成了由玛格丽特的半身像、“鹰号”登月舱及“阿波罗11号”、“玛格丽特·汉密尔顿”等字样组成的巨型画面。CNN评价道:“她用代码将人类送上月球,50年后,人类用月光肖像向她致敬。”

▲为纪念玛格丽特的杰出贡献,著名玩具制造商乐高按照她的经典照片制作的场景

猜你喜欢
阿姆斯特朗美国宇航局阿波罗
美国宇航局“Artemis”月球探测计划新进展
回望阿波罗11号
为何我想不到阿波罗尼斯圆
由阿波罗尼斯圆衍生圆锥曲线的优美性质
美国宇航局拍摄地表画面 色彩斑斓美丽
浮世绘
环法王赛车失而复得
重返月球