这位女程序员的代码把人类送上月球,翻开她的故事才知道,代码背后竟有这样一段传奇..

2019-07-23信息快讯网

这位女程序员的代码把人类送上月球,翻开她的故事才知道,代码背后竟有这样一段传奇..-信息快讯网

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

她的一串代码让人类登月,两次化解航天灾难,是程序员永恒的女神

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

但伟大归伟大,其实在卡西尼身上也发生过让人哭笑不得的错误。

当年的卡西尼身上还带着一枚用于探测土卫六(也称泰坦星,土星卫星中最大的一个)的“惠更斯”号探测器。

这位女程序员的代码把人类送上月球,翻开她的故事才知道,代码背后竟有这样一段传奇..-信息快讯网

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

当时“卡西尼-惠更斯”号非常完美地登陆了土卫六,但是地面却一直没有收到仪器传来的数据。

经彻查后,结果让所有人大跌眼镜,原因竟是地面控制员忘了按启动接收按钮。

最后这个小失误导致了大量的数据丢失,包括原本应收到的700张珍贵图片,最后也只剩下350张。

而设计者大卫·阿特金森十八年的努力就这样功亏一篑,而惠更斯号则得名卡西尼的“猪队友”。

其实类似这种事情,在航天史上从来没少发生。人为错误确实低级,但却难以避免。

像执行人类第一次登月任务的阿波罗计划,也曾经因为一个按钮的事,差点导致机毁人亡。

但幸运的是,那次有一位女程序员挺身而出,拯救这场浩劫。她在“最无用”的部门里,却做了最有用的事情。只是当年极少人意识到她的贡献,到现在她的故事才被重新提起。

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

这位女程序员的代码把人类送上月球,翻开她的故事才知道,代码背后竟有这样一段传奇..-信息快讯网

▲玛格丽特·希菲尔德·汉密尔顿

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

在那里她也结识了詹姆斯·汉密尔顿,成了汉密尔顿太太。很自然地,大学毕业后她成了一名老师,教数学和法语。那时,她的丈夫汉密尔顿还在哈佛法学院继续深造。

所以一边工作的她,还主动承担起了所有的家务。等到丈夫学成后,玛格丽特才有机会继续深造,再读一个抽象数学的学位。

然而,他们小两口的生活并不富裕。为了帮补家用,1962年玛格丽特也额外找了一份在MIT仪表实验室的临时编码工作。也就是这个决定,让她一脚踏入了程序的殿堂。

最初,她负责编写在计算机上运行的天气预报软件。但因为工作异常出色,很快就获得了转正资格,并加入著名的林肯实验室。

那时,她的工作任务也从简单的程序变到为美国军方的“赛其”(SAGE)系统写代码。(注:“赛其”系统,被称为国际互联网的鼻祖,也是阿帕网的前身,主要目的是在冷战时期侦查苏联有可能发起的核攻击。)

这位女程序员的代码把人类送上月球,翻开她的故事才知道,代码背后竟有这样一段传奇..-信息快讯网

▲1962年,玛格丽特参加SAGE项目时期的照片。

在上个世纪60年代,程序员可没有今日这么风光,连“程序猿”都比不上,更别提“软件工程师”这样响亮的头衔。

和今日科技圈少有的女码农一样,当年的玛格丽特就是一个不折不扣的异类。

虽然名不正言不顺,但当年程序员们的工作可比现在复杂上几十倍。

这位女程序员的代码把人类送上月球,翻开她的故事才知道,代码背后竟有这样一段传奇..-信息快讯网

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

在那个年代,并不是敲敲键盘就能写出代码那么简单。玛格丽特首先需要将代码用打字机写到纸上,连Debug(排错)的功能都只能靠脑力检查。在确认无误后,这些信息才会交给一群精通针线活的“小老太太”(Little Old Ladies)。

她们会像绣花一样用磁环把信息编到内存里,当铜线穿过磁芯代表1,绕过磁芯则代表0。

然而这些都还不是最难的。那个年代正是程序的“开荒期”,软件工程也不是一个拿捏得十分准确的领域,很多东西还未统一。所以要想为一个软件编程,至少要学好几套汇编语言。

而刚进去的玛格丽特更像一块白纸,还需要面对各种棘手的程序,任谁都得崩溃。但也正是这些五花八门的难题,激起了对编程的无限兴趣。

这位女程序员的代码把人类送上月球,翻开她的故事才知道,代码背后竟有这样一段传奇..-信息快讯网

▲玛格丽特正在手动编程

随着日渐丰富的编程经验,玛格丽特也慢慢成了系统编程的专家。而另一边肯尼迪也在1961年发起的阿波罗登月计划,这就成了玛格丽特人生重要的转折点。

那时的她也加入到了阿波罗计划,为登月飞船写程序。在阿波罗计划的最初,好像并没有“软件”什么事。就连在原始档案列出的阿波罗任务的各项需求中,竟从头到尾都没有提到软件这个词,更别提预算什么的。

这位女程序员的代码把人类送上月球,翻开她的故事才知道,代码背后竟有这样一段传奇..-信息快讯网

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

之后随着阿波罗项目逐渐启动,NASA才意识到软件的重要,逐渐把软件团队扩大到400人。在1965年,玛格丽特也成了整个软件编程部的部长。

这位女程序员的代码把人类送上月球,翻开她的故事才知道,代码背后竟有这样一段传奇..-信息快讯网

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

随着责任变重,玛格丽特的压力也越来越大。有一次她甚至还做梦见到,新闻头条是阿波罗坠毁,最后追查下来竟是自己的程序有误。

当时她从梦中惊醒,就连夜跑回实验室,竟然还真的在程序中发现了一个小错误并改正。

在那段日子里她的女儿劳伦也出生了,所以特别忙的时候玛格丽特还不得不将女儿带去实验室。

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

这位女程序员的代码把人类送上月球,翻开她的故事才知道,代码背后竟有这样一段传奇..-信息快讯网

▲汉密尔顿和她的女儿劳伦

身边的人都对这位“工作狂妈妈”十分不理解,常问她“你怎么忍心这么不顾自己的孩子”。虽然心有愧疚,但她还是对神秘的程序十分痴迷,不能自拔。

一天,女儿劳伦在指令舱模拟器中玩耍。当她在键盘上乱按时,一条错误的信息突然弹出。原因是她不小心启动了一个叫P01的预运行程序,导致原本还在飞行状态的模拟器瞬间崩溃。

看到这种情况,玛格丽特就提议在整个系统中多加一段代码,防止类似的状况发生。如果在飞行过程中,宇航员操作出了什么差池,还有挽回的地步。

但是当时所有人都觉得宇航员是受过严格训练,操作是完美的,“绝对不可能出错”。再加上当年的计算机存储空间和运算能力十分有限,决策者也不想添加任何“累赘”的部分。

所以玛格丽特也无可奈何,只能在操作系统中添加了一个备注:“不要在飞行中选择P01模式”。

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

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

这位女程序员的代码把人类送上月球,翻开她的故事才知道,代码背后竟有这样一段传奇..-信息快讯网

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

但就在飞行的第5天,宇航员Jim Lovell还是在无意间按下了P01模式。这个模式的启动后,所有导航数据都会被清空。

这样下去,飞船将无法把宇航员送回地球,在太空中迷路是分分钟的事。
知道要出大事了,决策者也十万火急地打电话到玛格丽特那,让她想一个补救的办法。

于是,玛格丽特也马上带着MIT的一群程序员,连夜奋战了9个小时,才设计出了一个新的计划。当时这份新的导航数据上传后,大家才松了一口气。

一切又回到正常的轨道,阿波罗8号也顺利载着宇航员返航。

这次事件后,决策者与玛格丽特都更明显地感受到软件对登月计划的重要性。

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

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

登月时期,人类能用的电脑都是超小内存、计算速度极度缓慢的。系统能永久保存的不过1.2万字节,而临时存储的空间就更小了,只有1024字节。

用玛格丽特的话来说就是“今天看起来这简直不可思议”。所以就在阿波罗11号离月球不远处时,电脑也因过度运转,大量地弹出错误信息,系统几近崩溃。

如果电脑扛不住,飞船将毫无疑问坠毁,成为世上最“悲壮”的登月。但就是在这么“不可思议”的硬件条件下,玛格丽特设计的系统竟然顶住了所有压力。

原因是她首创的“异步处理程序”,教会了电脑如何“抉择”,为阿波罗11号解决了危机,也为自己赢得了荣誉。飞船在登月过程中,除了要控制推进外,还会进行着一系列不那么重要的计算。

那时玛格丽特就考虑到,当大量数据涌入电脑,系统扛不住时应该怎么办。所以为了保险起见,她细心地在原有的基础上添加了这个“异步处理程序”,来解决问题。

当没有足够空间运行时,电脑最宝贵的存储空间便会留给最关键的部分,比如最重要的——让鹰号在月球登陆。而其他低优先级的任务,如雷达交换数据任务将会被暂时切断。

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

然而,不是每个人都知道这背后,有这么一位女程序员也为女性迈出了一大步。

玛格丽特拯救人类的登月计划时,年龄不过33岁。除了登月,这位先驱女极客还曾为广大“码农”正名,首次使用了“软件工程师”一词来称呼包括自己在内的程序员。

她说:“希望给予做软件的人们以尊重,因为他们和其他做硬件的人一样,在这个宏大的工程里各司其职。”

登月成功后,玛格丽特也功成身退,离开NASA出来创建自己的公司,继续在软件行业努力。

这位女程序员的代码把人类送上月球,翻开她的故事才知道,代码背后竟有这样一段传奇..-信息快讯网

▲2003年,她也因当初的贡献获得美国宇航局对个人的最高奖励,NASA杰出太空行动奖。2016年,她再次获得美国最高的民事荣誉总统勋章,与盖茨、乔丹同台领奖。

回顾那段从零开始的程序员生活,她说自己是世界上最幸运的人。因为“别无选择,只能成为先驱者,没有时间成为初学者”。

也感谢汉密尔顿和她开创的工作,关于人类能够做什么、成为什么这个问题,不仅在外太空被改写,更给地球带来深刻变革。软件工程学,这个汉密尔顿开创的概念,从登月到所有人类活动,都找到了用武之地。到了20世纪70年代,汉密尔顿离开了NASA和阿波罗计划,之后创建和领导过多个软件公司。

今天,距离她的公司汉密尔顿科技几条街就是麻省理工,那个她的事业开始的地方——那个代码革命的中心,仍然在仰望着星空。

编辑:金婉霞

责任编辑:顾军

来源:微信公众号“程序员的那些事”、腾讯科技

曾指控华为抄袭却被发现使用华为代码,思科解释:忘了删
上海家政行业从业人员突破50万人,即将启动家政服务立法程序
斯坦福大学研究团队开发出超算编程语言,大大节省程序员时间和成本
“稳”为底色, 中国经济就是这样“韧”性
人类和癌症的战争进入相持阶段?
人类登月50周年在即,NASA首次“分享”月球岩石样本,阿姆斯特朗“战袍”再现身
80岁陈伟霆长这样,粉丝:依然爱你!
乌拉那拉·京、钮钴禄·朗……吴京、那英、惠英红、郎朗、佟大为之间有这样的交集你造吗?
日本京都动画纵火犯:抄袭!安倍晋三这样说
北横通道施工,长宁路的交通组织这样调整!
深切缅怀李吉林老师!让我们读她的作品《我,长大的儿童》,感受李老师对教育和孩子的深爱
高希希电影《八子》:面向“新新人类”的“初心”叙事
如是真哲学家,开出租也可关心人类命运|哲学广播剧⑮
人类月球日 | 那个把19台着陆器、5台月球车、12名宇航员送上月球的十年,足够疯狂也点燃了人类!
《蒙娜丽莎》搬迁100步,卢浮宫怎样保证她的安全?
彭斯宣布美国将驻留月球开采资源,俄专家:月球没什么资源
24岁时她因病失明,如今她为奥斯卡电影撰写万字解说词,她说:完成这件事,她的人生不会遗憾太多
点亮生命的火炬——“中国网事·感动2019”二季度网络感动人物群像
上海发布今年首个高温黄色预警
越吃越瘦?真有负卡路里食物? 为9只松狮蜥灌肠后,实验员得出了这样的结论……
苏富比拍卖耐克“月球鞋” 以近45万美元成交价创纪录
沪首张生活垃圾分类实效“成绩单”是这样诞生的!
【新时代·幸福美丽新边疆】头脑灵活了,腰包鼓起了!新疆人这样走上康庄大道
日本女孩连续50天被夸奖,竟然变成这样?其实,教育孩子也是同一个道理……
上海德威国际学校前校长面临涉毒指控,学校这样回应…
后人类时代,短期意识正在夺走思考力? |哲学广播剧⑰
嫦娥四号:月球上的第八个“工作日”来啦!
十年了,有一个角色就长在袁泉的身体里,陪着她结婚,生子,陪着她的灵魂
吉祥航空与东航在港澳、新加坡和芬兰航线共享代码
且听虫鸣——上海自然博物馆发布“听有虫”有程序,让孩子听虫“有门道”
©2014-2024 dbsqp.com