两次挽救“阿波罗”号飞船的程序员
2018-11-30侯美玲
◎侯美玲
1961年,载人登月飞行任务阿波罗工程正式启动。作为世界航天史上具有划时代意义的项目,美国国家航空航天局(NASA)动用了200多所大学和80多个科研机构,麻省理工学院便是其中之一。
1963年,玛格丽特·汉密尔顿加入麻省理工学院实验室。作为一名女性,她被分配在技术最末端的部门做编码工,后来被调入软件部应急组。应急组的工作是制定登月任务失败后的备用程序,保障飞船重新启动。阿波罗工程是当时世界上最严谨的项目,失误率被控制在万分之一以下,没有人相信它会失败,当然也没人希望它失败。于是应急备用方案显得“很多余”。方案甚至没有正式名称,倘若有人提到时,干脆称之为“Forget it”。
被边缘化的应急组处境尴尬,例会没有相应席位,成员无法进入研究核心区域,当初立志要在此干一番事业的人也变得消沉起来。玛格丽特却是个例外,她像一座雕塑,总是安安静静坐在桌前编程。遇到别人推来推去的繁琐工作时,她就抢着去尝试。下班后,她会把4岁的女儿劳伦带到办公室,和她一起加班。
一天深夜,玛格丽特像往常一样编码,劳伦独自一人玩耍。劳伦一边唱儿歌《Brush Your Teeth》,一边好奇地围着飞船指令舱模拟器转圈。当劳伦的小手指戳到P01键时,令人吃惊的一幕发生了,电脑屏幕上出现了一系列错误代码。原来,当模拟器处于飞行状态时,一旦触动预发射键P01,系统就会出现严重错误。遗憾的是,整个软件系统没有对此设置任何防范程序。
意识到问题的严重性后,玛格丽特把劳伦安抚在脚下的地板上睡觉,自己快速草拟了一份《关于紧急设置意外触动P01键纠错系统的计划》。
第二天一早,当她兴冲冲地把计划呈给上司时,对方嘲笑道:“增加备用纠错系统,防止人工失误后系统瘫痪,可笑!难道你不知道我们的宇航员是经过最严格训练的?他们绝对不会犯这样的低级错误!”无奈之下,她只好在操作系统中增加了一个备注:“飞行时勿动P01”。
计划虽然未被采纳,但玛格丽特没有放弃。工作之余,她抓紧时间编写应急程序。那段时间,她写出的代码稿纸摞在一起直抵房顶。同事博朗克见状,不解地问:“既然上级都不支持,干吗还要费力地去做呢?”她打趣道:“我可不想在报纸头版头条看到这样一条新闻——阿波罗计划失败,玛格丽特·汉密尔顿难辞其咎。”博朗克笑了,讥讽道:“阿波罗工程有30多万人参与,你充其量不过是一颗钉子,能起多大作用?”玛格丽特正色道:“阿波罗上安装的每一颗钉子都有自己的作用,离开任何一个都不行。”
玛格丽特一门心思想着应急程序的编写工作,经常为此废寝忘食。有一次,在闺蜜的生日晚宴上,蛋糕刚刚切开,她想起程序中的一个错误,头也不回地冲向学校计算机房,留下众人一脸惊愕。
1968年的圣诞节,阿波罗8号正在执行环绕月球飞行任务,宇航员罗威尔无意中触动了P01键。
接收到信号时,休斯顿中央控制室乱作一团。大家清楚,这意味着几分钟内所有的导航数据将清零,系统即将崩溃,罗威尔生死堪忧。
就在所有人束手无策时,有人想到了玛格丽特。软件部临时任命她为组长,带领一支20人的小分队前去“灭火”。
她之前编写的程序派上了用处,连续奋战9小时后,错误信息被纠正,系统恢复运行。
掌声如雷鸣般响起,总指挥韦伯眼含热泪,感激地握着她的双手说:“你挽救了阿波罗8号。”第二天一早,NASA下发文件,软件部应急组扩大5倍,玛格丽特任部长。
1969年7月21日3时48分,距离阿波罗11号着陆月球表面还有3分钟时,飞船舱内警报响起。飞行中的一个意外导致上千个错误数据涌入电脑存储区,飞行系统面临瘫痪。事故发生后,玛格丽特没有惊慌,用补丁软件及时修补漏洞。3分钟后,飞船正常着陆。
2016年11月22日,玛格丽特和比尔·盖茨、乔丹站在一起,接受时任总统奥巴马颁发的自由勋章。从边缘到中央,从幕后到前台,玛格丽特实现了人生最华丽的逆袭。