首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

这个美女程序员写的代码,带人类成功登月!

玛格丽特·汉密尔顿在 MIT 博物馆

玛格丽特·汉密尔顿(Margaret Hamilton)没有想着要发明现代软件的概念,并且还让人类登陆月球。那是1960 年,还是一个不鼓励女性从事高技术工作的年代。

汉密尔顿是一个24岁的数学学士,她在 MIT 找到一份程序员的工作,本来的计划是支持她丈夫哈佛法学院 3 年学业,然后就轮到她去读一个数学研究生学位。

但是阿波罗空间项目开始了。汉密尔顿在实验室开创了工程技术方面的史诗壮举,帮助改变了人类 —— 和数字技术 —— 能力所及的未来。

玛格丽特·汉密尔顿在阿波罗指令舱实体模型内

1960年代,作为一个有工作的妈妈,汉密尔顿是不寻常的;但是作为一个太空船程序员,汉密尔顿极其激进。汉密尔顿周末和晚上会把女儿劳伦带到实验室。4岁的劳伦睡在查尔斯河畔的办公室地板上时,她妈妈在一边编程,创造着最终将会装入阿波罗指令舱计算机中的程序。

玛格丽特·汉密尔顿站在阿波罗导航计算机 (AGC) 源码清单旁,代码届的「著作等身」

“当我最初从事这个,没有人知道我们在干什么。这里就像是蛮荒西部。”——玛格丽特·汉密尔顿

汉密尔顿和她的女儿劳伦

当汉密尔顿的职业生涯开始起航,软件世界由于约翰·肯尼迪 1961年启动阿波罗项目而处在大爆发的边缘。在汉密尔顿工作的 MIT 仪器实验室,当她和同事们为世界上第一个便携式计算机编写代码时,他们实际上在发明计算机程序编程的核心理念。她成为系统编程的专家,并且在重要的技术争论中胜利。

汉密尔顿(左一),在支援阿波罗八号任务时,在综合分析室与部分同事在一起

1965 年,汉密尔顿开始负责阿波罗计算机的机载飞行软件。这是一个令人兴奋的时刻,整个美国依赖着她所做的工作。但有时压力使汉密尔顿彻夜难眠。一次午夜聚会后,她冲回计算机实验室,校正一段她突然意识到的缺陷代码。“我总是想象报纸的头条新闻,他们会倒查问题是怎么发生的,最终会倒查到我。”

到1968 年中期,400 多人在从事阿波罗的软件开发工作,因为软件将是美国赢得登月竞赛的手段。当然,实际情况表明软件将帮助世界做的更多。汉密尔顿和同事们在为阿波罗宇宙飞船编程的时候,他们也在孵化一个价值4000亿美元的产业。

一个雷神的工人在把铜线穿到电磁环上

对汉密尔顿而言,编程就是要在一堆堆穿孔卡片上打眼,卡片在巨大的霍尼韦尔大型机上做整晚的批处理计算,模拟阿波罗着陆器的工作。

“我们必须在阿波罗起飞前模拟所有的一切,” 汉密尔顿回忆。一旦代码固定下来,就会被载往附近的雷神(Raytheon)工厂,那里有一群妇女,阿波罗计划称为“小老太太”的专业女缝工,把铜线穿过电磁环(穿芯的线是1;绕芯的线是0)。忘记 RAM 或硬驱;在阿波罗上,内存是实打实地硬线联接,几乎牢不可破。

雷神工厂的“小老太太”们

阿波罗载有两个近乎一样的机器:一个在登月舱(着月的老鹰号),另一个载着宇航员往返地球的指令舱。

这些70磅的阿波罗号计算机是有别于其他的便携式计算机。由 MIT工程师哈尔·莱宁和汉密尔顿的老板狄克·巴顿设计,这是最早使用集成电路而非晶体管的重要计算机之一。就像闵代尔讲的,它是第一个计算机机载导航系统,设计为由人来控制,但是具备“电传操纵系统”自动驾驶技术——当今喷气客机标配的计算机导航系统前身。

这个系统在永久存储器里存储12,000 多个“字”——雷神工人穿的那些铜“缆”——在可擦写存储器中有 1,024 个字。

“这是第一次,在宇宙飞船内设置重要计算机,并为任务赋予许多职责,”曾在 MIT的仪器实验室为登月舱写代码的唐·埃尔斯说。“我们证明了这是能够做到的。”没有它,内尔·阿姆斯特朗到不了月球。并且,没有汉密尔顿、埃尔斯和MIT工程师团队写的软件,计算机就是一废品。

「这是永远不会发生的」

一天,劳伦在玩 MIT 指令舱模拟器的显示器键盘单元,昵称 DSKY (读dis-key)。当她摆弄键盘时,一条错误信息弹出来。当模拟器处于飞行中,劳伦启动了一个叫 P01的发射前程序,使模拟器崩溃。宇航员无论如何都不会这么做,但是,汉密尔顿想增加代码来预防崩溃。

这个想法被 NASA 否决。“我们被多次告知,宇航员不能犯任何错误,”她说。“他们训练得完美无缺。”于是,汉密尔顿转而建立了一条程序标注 —— NASA的工程师和宇航员都能看到的一个程序文档附言,上面写着:“飞行中不要选择P01”。

汉密尔顿想把错误检查代码添加到阿波罗系统,防止系统混乱。但这在她的上司看来是多余的。“所有人说,‘这是永远不会发生的’” 汉密尔顿回忆道。

但这的确发生了。刚好就在1968 年圣诞节前后——阿波罗8号第一次载着宇航员到月球有人轨道飞行的历史时刻的第五天——宇航员吉姆·拉威尔在飞行中无意中选择了P01。

当休斯顿的电话打进来,汉密尔顿正在仪器实验室的二楼会议室。启动 P01 程序擦掉了拉威尔收集的所有的导航数据。这可是个问题。没有这些数据,阿波罗计算机没法把宇航员带回家。

花了九个小时钻研桌子上厚达8英寸的程序清单后,他们想出了一个方案。休斯顿只要上传新的导航数据,一切就会恢复正常。感谢汉密尔顿——还有劳伦——阿波罗号宇航员回家了。

也感谢汉密尔顿和她开创的工作,关于人类能够做什么、成为什么这个问题,不仅在外太空被改写,更给地球带来深刻变革。软件工程学,这个汉密尔顿开创的概念,从登月到所有人类活动,都找到了用武之地。

到了20世纪70年代,汉密尔顿离开了NASA和阿波罗计划,之后创建和领导过多个软件公司。今天,距离她的公司汉密尔顿科技几条街就是麻省理工,那个她的事业开始的地方——那个代码革命的中心,仍然在仰望着星空。

加入我们

学习编程不再是一个人的战斗

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180118B0NULJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券