您的位置  > 互联网

她是程序员永恒的女神,却被称为“猪队友”

玛格丽特·汉密尔顿在麻省理工学院博物馆

她的一串密码让人类登上了月球,并两次解决了太空灾难。 她是程序员永远的女神。

2017年9月15日,土星探测器卡西尼号宣布自毁成功,完成了人类探索土星的悲壮使命。

但伟大就是伟大,事实上,卡西尼号也犯过可笑的错误。

卡西尼号还携带了惠更斯探测器,用于探测泰坦(又称泰坦,土星最大的卫星)。

玛格丽特·汉密尔顿在阿波罗命令舱的模型中

当时,“卡西尼-惠更斯”号完美登陆土卫六,但地面却始终没有收到仪器的数据。

经过彻底调查后,结果让所有人都大吃一惊。 原因是地面控制员忘记按下开始接收按钮。

最终,这个小错误导致大量数据丢失,其中本应收到的700张珍贵图片,却只剩下350张。

设计师大卫·阿特金森十八年的心血化为泡影,惠更斯被封为卡西尼号的“猪队友”。

事实上,这样的事情在航天史上从未发生过。 人为错误确实是低级的,但却是不可避免的。

比如执行人类首次登月任务的阿波罗计划,就差点因为一个按钮导致坠机。

但幸运的是,一位女程序员挺身而出,挽救了这场灾难。 她在“最无用”的部门做了最有用的事情。 只是当时很少有人知道她的贡献,现在她的故事又被提起。

没有她,就没有阿姆斯特朗的一小步,也没有人类的一大步。

玛格丽特·西菲尔德·汉密尔顿

玛格丽特·西菲尔德·汉密尔顿1936年出生在一个普通的美国家庭,她从小就是一个典型的“别人家的孩子”,成绩优秀,性格温柔。 高中毕业后,她顺利进入大学,主修数学。

在那里她还遇到了詹姆斯·汉密尔顿并成为汉密尔顿夫人。 大学毕业后,她自然而然地成为了一名教师,教数学和法语。 当时,她的丈夫汉密尔顿还在哈佛法学院学习。

所以在工作的同时,她也主动承担起了所有的家务。 丈夫完成学业后,玛格丽特有机会继续学习并获得抽象数学的另一个学位。

然而,年轻夫妇的生活并不富裕。 为了帮助养家糊口,玛格丽特还在 1962 年在麻省理工学院仪器实验室找到了一份额外的临时编码工作。正是这个决定让她进入了编程的殿堂。

最初,她负责编写在计算机上运行的天气预报软件。 但由于工作出色,他很快就获得了成为全职员工的资格,并加入了著名的林肯实验室。

当时,她的工作任务也从简单的程序转变为为美军的“SAGE”系统编写代码。 (注:“Saiki”系统被誉为国际互联网的鼻祖和阿帕网的前身,其主要目的是探测冷战时期苏联可能进行的核攻击。)

1962 年玛格丽特在 SAGE 项目期间的照片。

在 20 世纪 60 年代,程序员并不像今天这样受欢迎。 他们甚至无法与“程序员”相比,更不用说“软件工程师”这样响亮的头衔了。

就像当今科技界为数不多的女性程序员一样,玛格丽特当时是一个不折不扣的异类。

虽然这个名字不公平,但当时程序员的工作比现在复杂几十倍。

玛格丽特在打字机上打出了代码

那个年代,写代码可不是敲键盘那么简单。 玛格丽特首先需要用打字机在纸上写出代码,连调试功能都只能靠脑力检查。 确认后,这些资料就会交给一群精通女红的“小老太太”(Old)。

他们将使用磁环将信息编码到内存中,就像刺绣一样。 当铜线穿过磁芯时,代表1,当铜线绕过磁芯时,代表0。

然而,这些还不是最困难的。 那个时代是编程的“开拓时期”。 软件工程并不是一个非常精确的领域,很多东西还没有统一。 因此,如果你想编写一个软件,你至少必须学习几套汇编语言。

刚进来的玛格丽特,更像是一张白纸。 她还要面对各种让人崩溃的棘手程序。 但正是这些各种各样的问题引起了人们对编程的无尽兴趣。

玛格丽特正在手动编程

随着编程经验的积累,玛格丽特逐渐成为系统编程方面的专家。 另一方面,肯尼迪也在1961年启动了阿波罗登月计划,这成为玛格丽特人生的重要转折点。

当时,她还加入了阿波罗计划,为登月飞船编写程序。 在阿波罗计划之初,似乎还没有“软件”这样的东西。 甚至在原始文件列出的阿波罗任务的各种要求中,从头到尾都没有提到软件这个词,更不用说预算了。

玛格丽特·汉密尔顿站在阿波罗制导计算机 (AGC) 源代码清单旁边。

后来,随着阿波罗计划的逐步启动,NASA意识到软件的重要性,并逐渐将软件团队扩大到400人。 1965年,玛格丽特还成为整个软件编程部门的负责人。

1962 年 4 月 19 日,玛格丽特·汉密尔顿 ( ) 与一位前同事在一起。 在林肯实验室开发第一台 AN/FSQ-7 计算机的软件。 她的软件是一个雷达定位监控程序,用于检测潜在的敌机。

随着责任的增加,玛格丽特的压力也随之增加。 有一次她甚至梦见新闻标题是阿波罗号坠毁,但结果证明这是她自己编程的错误。

当时她从梦中惊醒,连夜跑回实验室。 她实际上发现了程序中的一个小错误并纠正了它。

她的女儿劳伦也在那几天出生,所以玛格丽特不得不在特别繁忙的时候带着女儿去实验室。

当她工作的时候,她的小女儿就在她旁边玩耍,当她累了的时候,她就睡在地板上。

汉密尔顿和她的女儿劳伦

周围的人不理解这位“工作狂妈妈”,常常问她“你怎么忍心这么忽视孩子?” 尽管她感到愧疚,但她仍然沉迷于这个神秘的程序,无法自拔。

有一天,女儿劳伦正在指令舱模拟器中玩耍。 当她在键盘上随意打字时,弹出了一条错误消息。 原因是她不小心启动了一个名为P01的预运行程序,导致还在飞行中的模拟器瞬间崩溃。

看到这种情况,玛格丽特提议在整个系统中额外添加一段代码,以防止类似的情况发生。 如果宇航员在飞行过程中操作出现问题,仍有恢复的空间。

但当时大家都觉得宇航员经过严格训练,操作完美,“绝对不可能出错”。 此外,当时的计算机存储空间和计算能力非常有限,政策制定者也不想添加任何“繁琐”的部件。

于是玛格丽特只好在操作系统中添加了一条注释:“飞行时请勿选择P01模式”。

但可怕的事情还是发生了。

1968年12月21日,人类首次绕月飞行的阿波罗8号发射升空。

汉密尔顿(最左边)和一些同事在综合分析室支持阿波罗 8 号任务。

但在飞行第五天,宇航员吉姆不小心按下了P01模式。 启动该模式后,所有导航数据将被清除。

如果再这样下去,飞船将无法将宇航员送回地球,几分钟后就会在太空中迷路。 知道要出大事,决策者紧急给玛格丽特打电话,让她想办法补救。

于是玛格丽特立刻带领麻省理工学院的一群程序员连夜工作了9个小时才设计出新的方案。 新的导航数据上传后,所有人都松了一口气。

一切恢复正常轨道,阿波罗8号带着宇航员成功返回。

这次事件之后,决策者和玛格丽特都更加意识到软件对于登月计划的重要性。

软件几乎成为美国赢得太空竞赛的重要筹码,玛格丽特加班的次数越来越频繁,时间也越来越长。

但玛格丽特面临的最大挑战还在后面。 就在阿波罗11号飞船即将登陆月球的前几分钟,在这样的关键时刻,危机还是发生了。

登月时期,人类可用的计算机内存极小,计算速度极慢。 系统只能永久保存12000字节,临时存储空间更小,只有1024字节。

用玛格丽特的话说,“今天看来令人难以置信。” 所以当阿波罗11号距离月球不远的时候,电脑就超负荷运转,弹出大量错误信息,系统几乎崩溃。

如果计算机无法处理,飞船无疑会坠毁,成为世界上最“惨烈”的登月事件。 但在如此“难以置信”的硬件条件下,玛格丽特设计的系统顶住了一切压力。

原因在于她开创性的“异步处理程序”教会了计算机如何“决策”,为阿波罗11号解决了危机,也为自己赢得了荣誉。 在登陆月球的过程中,飞船除了控制推进之外,还进行一系列不太重要的计算。

当时,玛格丽特考虑的是,当大量数据涌入计算机,系统无法承受时该怎么办。 所以为了保险起见,她小心翼翼地在原来的基础上添加了这个“异步处理程序”来解决这个问题。

当没有足够的空间运行时,计算机最宝贵的存储空间就会保留给最关键的部分,比如最重要的事情——鹰号登陆月球。 其他低优先级任务,例如雷达交换数据任务,将暂时被切断。

每个人都看到了阿姆斯特朗在月球上迈出的第一步。

然而,并不是所有人都知道,有这样一位女程序员,为女性迈出了一大步。

玛格丽特发起拯救人类的登月计划时年仅33岁。 除了登陆月球之外,这位开创性的女极客还为“程序员”正名,并首次使用“软件工程师”一词来指称包括她自己在内的程序员。

她说:“我希望给予那些制作软件的人尊重,因为他们和其他制作硬件的人一样,在这个宏伟的工程中各司其职。”

登月成功后,玛格丽特也从NASA退休,创办了自己的公司,继续在软件行业打拼。

2003年,她还因其原创贡献而获得了美国宇航局最高个人奖——美国宇航局杰出太空行动奖。 2016年,她再次获得美国最高平民荣誉总统勋章,并与盖茨、乔丹同台领奖。

回顾自己从零开始当程序员的一生,她说自己是世界上最幸运的人。 因为“除了做先锋别无选择,没有时间做初学者”。

也感谢汉密尔顿和她开创的工作,人类能做什么、能成为什么的问题不仅在外太空被改写,也给地球带来了深刻的变化。 软件工程是汉密尔顿首创的概念,已应用于从登月到所有人类事业的各个领域。 到了 20 世纪 70 年代,汉密尔顿离开了 NASA 和阿波罗计划,后来创立并领导了多家软件公司。

如今,距离她的公司麻省理工学院汉密尔顿技术公司仅几个街区,她的职业生涯开始于此,也是编码革命的中心,仍在仰望星空。