专栏名称: JavaScript
面向JavaScript爱好人员提供:前端最新资讯、原创内容、JavaScript、HTML5、Ajax、jQuery、Node.js等一系列教程和经验分享。
目录
相关文章推荐
51好读  ›  专栏  ›  JavaScript

她的编程能力可以把你传送到月球

JavaScript  · 公众号  · Javascript  · 2017-03-12 11:23

正文

转自:http://www.jiemian.com/article/407993.html


月亮也被人们称作月球,是环绕地球运行的一颗卫星。它是一颗固态的卫星,也是离地球最近的天体。月球一向给人们以神秘,圣洁的印象。


古有嫦娥奔月,话说嫦娥就是住在月球上的一位仙女。但这仅仅只是一个神话传说。那个时候没人能够却到月球,人们把这种对未知的渴望寄予了神话传说。

当科技越来越发达,人们对宇宙的好奇,逐渐成为现实。


1969年美国阿波罗号宇宙飞船成功登陆月球。这预示这人类第一次登真正的登上月球。


然而当大家都只知道这次探月计划功不可没的“阿波罗”宇宙飞船的时候,却不知道如果没有这位女程序员默默的奉献人类连地球都飞不出去。


那么这样一位功不可没的女程序员她是谁呢?


玛格丽特·汉密尔顿

(玛格丽特在阿波罗控制舱的模拟器内,图片来源:Margaret Hamilton)


机缘巧合,参与月球计划

24岁的玛格丽特·汉密尔顿才数学系本科刚毕业。这时的她和丈夫还有了一个四岁的女儿劳伦。本来她计划着去到MIT 找到一份程序员的工作,来帮助她的丈夫读完哈佛学业和补贴家用,然后自己再去读数学研究生。


可没想到的是玛格丽特所在的实验室,启动了阿波罗登月计划,预将把人类送上月球,改变未来科技。这在当时是多么一件伟大的壮举。但是在当时的年代作为职场妈妈已经是件很不寻常的事,而玛格丽特竟然还是个给太空飞船写代码的程序员。实在是令人无法理解。玛格丽特回忆说,“他们对我说,你怎么能离得开女儿啊?”。但是她深爱这份工作的神秘和新奇,她也很喜欢同事之间的情谊;下班后他们会在MIT的职员俱乐部一起喝点小酒,讲只有技术宅才能听懂的笑话。旁人听得一头雾水,但在实验室里,她说,“我是兄弟们的一员”。

(玛格丽特和她的女儿劳伦,图片来源:Margaret Hamilton)

周末或者平常的夜晚,玛格丽特会把女儿劳伦带来实验室。四岁的劳伦累了就在地板上熟睡,而玛格丽特忙着编写代码——这些代码,最终都会添加到阿波罗控制舱的计算机里。


成为编程专家

玛格丽特的事业发展渐渐上了轨道,她和同事一起为世界上第一部便携式计算机写代码,同时也创造了计算机编程的核心理念。玛格丽特成了系统编程的专家,也在多场重要的技术争论中得到认可。


在阿波罗计划的早期,人们并没有过多思考软件是怎么一回事。一开始,软件并没有受到重视。但随着阿波罗计划的推进,软件在这个任务中的重要性也明晰起来。1965年,玛格丽特开始负责“阿波罗”号计算机的飞行软件。对玛格丽特而言,这是一段激动人心的日子,整个美国都指望着她的工作成果。但是有时候压力也会让她夜里睡不着。有一次,在参加过一个深夜派对之后,玛格丽特又冲回实验室去修改一段突然想起来出错了的代码。“我总是在幻想报纸的新闻标题,它们会追问错误是如何发生的,而最终原因会指向我”。


(玛格丽特站在阿波罗计算机指导手册(AGC)的源代码程序列表旁边,这些材料摞起来比她的人还要高。图片来源:Margaret Hamilton)


不可能发生的事

一天,劳伦在摆弄MIT控制舱模拟器的显示器键盘一体机。当她在键盘上乱按的时候,原本正在飞行状态的模拟器一下子崩溃了。虽然一般来说宇航员不会犯这样的错,但玛格丽特还是想加一段代码防止这种状况的发生。这一提议被NASA否决,“他们一遍又一遍地跟我说宇航员不会犯任何错误,他们被训练得近乎完美,,“所有人都说,‘那样的事情永远都不会发生’。”

(左下角的是玛格丽特,她和其他同事正在MIT为阿波罗8号提供后方支持。图片来源:Margaret Hamilton)


但事情的的确确发生了。时间大约在1968年的圣诞节,进入阿波罗8号飞船的第五天飞行,宇航员吉姆·洛威尔(Jim Lovell)不小心在飞行中启动了P01程序。当电话从休斯顿打来的时候,玛格丽特正在仪器实验室的2层会议室。启动P01程序导致导航数据全部清空,阿波罗计算机无法计算出如何返回地球。玛格丽特和MIT的程序员们需要想出一个补救的办法,必须是无错漏的完美办法。在花费9小时钻研过面前8英寸厚的程序列表后,他们有了一个计划。休斯顿方面需要上传一份新的导航数据,而后一切都会顺利进行。多亏了玛格丽特,还有调皮的劳伦,阿波罗号上的宇航员才得以重返地球。


同样值得感激的是玛格丽特和她开创的工作,这些让人类认清软件编程能带领他们走上月球。让这登上月球从梦境变成现实。