把人类送上月球的女程序员:登月前3分钟 她的代码力挽狂澜
把人类送上月球的女程序员: 登月计算机的雏形。
Margaret获得奥巴马总统颁发的勋章。
Margaret和众多幕后技术人员一道观看登月。
Margaret写的代码笔记本,堆起来比她本人还高。
登月幕后功臣Margaret。
美国西部时间7月18日晚上,位于加州的世界最大太阳能电站——伊万帕太阳能发电站出现一段无比惊艳的画面。
日落月升之后,沙漠里10万多面太阳能电池板的镜面突然开始调整自己和月亮的角度。随后,月光反射到这些太阳能电池板镜面上,明暗交织,当满月挂上当空之后,人们惊讶地发现,太阳能电池板反射的月光组成了一副长发女性的半身像,旁边还有一个数字和环绕的英文字母:阿波罗11号,Margaret Hamilton。
7月20日,也是人类登月50周年纪念日。50年前,阿波罗11号载着人类开拓宇宙的梦想,踏上了月球之旅。50年后,谷歌用太阳能电池板反射月光组成肖像,致敬这位“阿波罗 11 号 先 锋 ”,Margaret Hamilton。
其实,被称为“阿波罗 11 号先锋”的Margaret并没有亲自踏足月球,但这位女性却是人类登月的首功之臣,只因为她是人类历史上第一位真正意义上的“软件工程师”(这个词也是她本人发明的),所有现代程序员的祖师奶奶。
因为她,人类首次在计算机的帮助下完成登月这样的宏大工程,更因为她,阿波罗11号得以在登月的最后3分钟力挽狂澜,及时救险,宇航员尼尔·阿姆斯特朗也得以代表人类迈出那“决定性的一大步”。
1 NASA急招她负责“登月飞船导航”
Margaret Hamilton于1936年出生在美国印第安纳州,是个学霸,她却有一个缺点,懒得背东西。尤其在数学方面,她对背公式和推论深恶痛绝,于是她想出了“偷懒”的办法:“我太懒了,不想每一个公式都去记,于是每一条数学公式我都自己推导一遍,学会了推理就不用去死记了……”
懒得记东西,热衷于推理演算,也为她日后成为编程界的祖师奶奶埋下了伏笔。
1955年,她顺利考入了密歇根大学,就读自己最喜欢的数学专业,原因还是曾经那一个:不用背东西,可以偷懒。
1958年,Margaret本科毕业,在拿到学位后不久,立马就跟男友结婚了。本来打算继续读研,然而为了支持丈夫修读哈佛大学的法学硕士,她决定先工作挣钱,于是就到麻省理工的实验室里当了一位编程员。
谁知道,丈夫拿到法律学位之后,希望她放弃麻省的编程工作,到哈佛法学院当个茶水工。Margaret果断拒绝了:“我不会去端茶倒水的,总有一天,我会让你以我为荣……”
Margaret选择了继续留在麻省的林肯实验室,她开始学习计算机编程,当时的计算机还都是电子管的,计算能力很低,动辄占据好几个房间的机器怪兽,能够承担的程序任务也很有限,主要用于科研和军事目的。
尽管如此,Margaret依然有着浓厚的兴趣,不用背东西,只需要逻辑推理,这正中她的下怀,她开始如饥似渴地钻研编程,很快就写出了预测天气和侦察敌人军机数量的程序。她的小成就很快引起了美国宇航局NASA的注意,因为当时的NASA正在实施一项史无前例的伟大计划,急需 Margaret这样的人才。
1965 年的一天,NASA的几个人找到了Margaret,神情严肃地对她说:“我们要找会编程的人,帮我们把人送到月球上去……”Margaret当时差点惊掉了下巴,半晌说不出话来,沉默了一阵,她坚定地回答:“好,我去!”
等打包好行李搬到NASA 的工作室时,Margaret才发现,她本人是NASA为“登月飞船导航”项目招来的第一个编程员,也是当时唯一一个。
2女儿误操作她灵机一动开发补丁
按NASA的想法,给登月的宇宙飞船导航编程的事,以后就由她本人全权负责了。
Margaret也没被场面吓倒,既然接了这么大的活儿,那就开动吧,她立马开始培训人员,组建团队。然而,刚开始启动“登月导航计算机”项目,她就发现,除了她以外,NASA的其他人几乎都是小白。
在那个年代,大多数人没听说过计算机,更别提软件、硬件这些专业术语了,一 开始,Margaret费了老鼻子劲,才让她手下的一些大老爷们明白软件是个什么玩意儿,有啥用途:“现在看来是个笑话,但在当时,真的有很多人以为软件是某种衣服或纺织品……”
当然,NASA为Margaret找来的这帮人也不是吃素的,都是美国数学领域的顶尖人才,大家很快就跟上了节奏,成为Margaret的得力干将。
不过时间一长,Margaret 开始觉得有些力不从心了,原来,实验室里大都是男同事,可以放心地在实验室上班,反正家里有老婆带娃。但Margaret不一样,她的女儿年纪还小,一到实验室工作,就容易分心牵挂女儿。考虑了很久,为了既不影响登月,又能照顾到女儿,Margaret干脆每天把女儿带到实验室来上班。
Margaret经常加班到很晚,有时候周末也要赶工,好在女儿终于也可以照顾得到了。那时候,女儿就每天帮母亲假扮宇航员,坐进模拟器中,测试软件的运行和调试。有一次,女儿不小心在“模拟着陆”时,提前打开了一个按钮,这让Margaret心中一惊,她不由得想到:万一在实际登月运行中,宇航员也发生了类似的错误,问题可就大了。
这事儿给了Margaret灵感,她立刻向NASA报告,要求着手开始写程序补丁——防止宇航员提前开启某些程序的保护程序。
一开始,NASA的其他人认为这个程序没有必要:“我们训练有素的宇航员绝对不会犯下几岁小女孩那样的错误!”然而,Margaret据理力争,她认为在太空黑暗又孤独的环境下,人犯低级错误的概率相当大,研发这个程序补丁有相当的必要。最终Margaret赢得了这场争论,她主导的修正人为错误的保护程序,就这样嵌入了登月的阿波罗飞船上面。
这个保护性程序的实现方式就是:制定了程序优先级调度,让程序可以随时中止优先级较低的任务,专注于高优先级任务。举个例子:比如有人像Margaret的女儿一样,按错了按钮,提前启动了不该启动的程序,那也没关系,电脑能识别出错误,并在分析之后仍然执行当下应该执行的——优先级高的任务……
谁都没有想到,Margaret从女儿假扮宇航员,漫不经心的玩闹中得到的启发,竟然最终成为了挽救登月计划的决定性因素。
除了这个灵光乍现的神来之笔,Margaret大多数时候的工作都是枯燥乏味的,那时候,NASA的计算机刚刚换成集成电路板,但远没有如今的工业设计,Margaret的编程代码都是写在笔记本上的,然后像织毛衣一样,把硅材料和金属线圈一个个连接起来。这个过程需要无比的细心和高度的精神集中,接错了一条线,就全盘皆错。几年下来,Margaret写出的代码笔记本,堆起来比她本人还高。
而她装配好的第一台集成电路计算机,背后密密麻麻复杂的线路,交织成一张巨大的蜘蛛网,这是人类最早的集成电路计算机之一,更承载了史上第一个大型软件程序——飞船登月的导航程序!
3登月前惊魂分钟保护程序真的起了作用
历经艰苦卓绝的4年,决定性的一刻终于到来了,1969年7月16日,阿波罗11号宇宙飞船,在大推力火箭“土星5号”的推动下,伴着震天动地的轰鸣,飞向地球外的第一个天体——月球。
经过三天多的飞行,7月20日,阿波罗11号终于开始向月球背面的着落点飞去,一切顺利,飞船在慢慢下降。
忽然,还有3分钟就要着陆的时候,竟然出现了意外情况:一名宇航员不小心在启动按钮时点错了位置。宇航员阿姆斯特朗有些慌张,立刻开始报告:“1202程序警报!1202程序警报!”机上的电脑一共发出了5次紧急信号,这是阿姆斯特朗等人此前训练从未遇到过的。
30多万技术人员,8年耗资250亿美元的工程,全人类的希望,如今都要取决于这几声关键的警报和几行计算机代码了!
所有人的心都提到了嗓子眼,还有3分钟就要着落了,程序竟然现在开始报错!而这一警报显示:电脑运行过载了……
刹那间,指挥中心的空气仿佛凝结了,所有人都望向Margaret,脸上带着惊慌和疑问:
程序出问题了?
降落,还是不降落?
只有3分钟了!
千钧一发的那一刻,Margaret突然想到了当年,她受到女儿出错的启发写出来的那个保护软件:如果有人按错了按钮,提前启动了其他程序,这个保护程序一定会站出来阻止!现在应该是有人按错了按钮,保护程序启动阻止了并开始纠错,于是过载了。
根据她之前设计的程序,电脑会执行优先级高的任务——先让飞船在月球着陆,所以,此时该做的就是:忽略警报,继续向前!Margaret果断接过麦克风,坚定地喊话:“我们的软件程序足够聪明,相信我们,正常登陆吧!”
漫长的3分钟过去了,阿波罗11号终于在月球着落。
尼尔·阿姆斯特朗和队友巴斯走出船舱,迈出了人类文明史上的一大步……
4程序员祖师奶奶获奥巴马颁发的勋章
登月工程获得巨大成功,宇航员们成了万众瞩目的英雄,Margaret却和众多幕后技术人员一道,躲在了光环背后,多年不为世人所熟知。
多年过去,随着计算机技术的发展,计算机的运算能力有了长足的进步,软硬件的搭配之下,如今顶级智能手机的运算能力都是阿波罗11号计算机性能的10万多倍。
但 是 ,由Margaret领导编写的软件却是空前绝后的,它成功引导阿波罗飞船完成了登月任务,这是当今任何一台电脑都做不到的,因为那台性能并不强大的远古电脑上,运行着程序员祖师奶奶Margaret写下的代码,它无比精确,强大,可靠,一如心智无 比 强 大 的Margaret本人。
如今,那14.5万行,史无前例的,引导人类成功登月的代码早已被开源,放到了GitHub(著名的软件源代码托管服务平台)上,供后世“程序猿”们膜拜、瞻仰。
2016 年 ,Margaret获得了奥巴马总统给她颁发的总统自由勋章,表彰她在登月方面做出的杰出贡献。
一路走来,时过境迁,Margaret始终认为,为阿波罗11号编写导航程序的那些年,是她人生中最美好的时光。
在人类阔别月球50年之际,程序员 祖 师 奶 奶Margaret的感慨依旧发人深省:“我们不应该就此停下探索的脚步!我们应当更加无惧无畏,哪怕有专家跳出来说‘这不合理’‘那讲不通’,因为,我们在梦想变为现实的路上,除了你自己,世上没人能相信它可以实现,但是,只要你继续一往无前,梦想终究会变成现实……”
据“英国那些事儿”
新闻推荐
硅谷“钢铁侠”马斯克旗下的太空探索公司SpaceX离载人火星又近一步。近日,SpaceX公司在美国得克萨斯州南部对其未来飞船的...