把人类送上月球的女程序员:她的代码跟登月本身一般浪漫

时间:2019-08-12        

  美国西部时间 7 月 18 日晚上,位于加州的世界最大太阳能电站——伊万帕太阳能发电站出现一段无比惊艳的画面。

  日落月升之后,沙漠里 10 万多面太阳能电池板的镜面突然开始调整自己和月亮的角度。

  随后,月光反射到这些太阳能电池板镜面上,明暗交织,当满月挂上当空之后,人们惊讶地发现,太阳能电池板反射的月光组成了一副长发女性的半身像,旁边还有一个数字和环绕的英文字母:阿波罗 11 号,Margaret Hamilton….

  50 年后,在全世界人民将 我的一小步,人类的一大步 背到滚瓜烂熟的今天,谷歌用太阳能电池板反射月光组成肖像,致敬这位 阿波罗 11 号先锋 ,Margaret Hamilton。

  其实,被称为 阿波罗 11 号先锋 的 Margaret 并没有亲自踏足月球,但这位女性却是人类登月的首功之臣,只因为:

  Margaret 是人类历史上第一位真正意义上的 软件工程师 (这个词也是她本人发明的),所有现代程序员的祖师奶奶。

  更因为她,阿波罗 11 号得以在登月的最后 3 分钟力挽狂澜,及时救险,宇航员尼尔 · 阿姆斯特朗也得以代表人类迈出那 决定性的一大步 ....

  Margaret Hamilton 于 1936 年出生在美国印第安纳州,打小开始,Margaret 就很喜欢读书,也非常享受学习的乐趣,然而,这位天生学霸却有一个缺点,懒得背东西 …..

  尤其在数学方面,Margaret 对背公式和推论深恶痛绝,于是她想出了 偷懒 的办法:

  我太懒了,不想每一个公式都去记,于是每一条数学公式我都自己推导一遍,学会了推理就不用去死记了 …..

  1955 年,她顺利考入了密歇根大学,就读自己最喜欢的数学专业,原因还是曾经那一个:

  读大学期间,Margaret 一边继续 偷懒 弄弄数学,一边还忙着谈恋爱。

  1958 年,Margaret 本科毕业,在拿到学位后不久,立马就跟男友结婚了 …..

  本科毕业,Margaret 本来打算继续读研,然而为了支持丈夫修读哈佛大学的法学硕士,Margaret 决定先工作挣钱,于是就到麻省理工的实验室里当了一位编程员。

  谁知道,拿到法律学位之后,丈夫却希望 Margaret 放弃麻省的编程工作,到哈佛法学院当个茶水工,因为在当时,丈夫就读了哈佛法律系的妻子,被称为 法学之妻 ,都可以直接进哈佛当茶水工,工作轻松愉快,还能和陪在另一半身边 …..

  我不会去端茶倒水的,总有一天,我会让你以我为荣,但绝不是你希望的那种方式 ….

  Margaret 选择了继续留在麻省的林肯实验室,她开始学习计算机编程,当时的计算机还都是电子管的,计算能力很低,动辄占据好几个房间的机器怪兽,能够承担的程序任务也很有限,主要用于科研和军事目的。

  尽管如此,Margaret 依然有着浓厚的兴趣,不用背东西,只需要逻辑推理,这正中她的下怀,Margaret 开始如饥似渴地钻研编程,很快就写出了预测天气和侦察敌人军机数量的程序。

  在 Margaret 自己看来,只是发挥自己数学才能的小小成就,然而她的小成就却很快引起了美国宇航局 NASA 的注意,因为当时的 NASA 正在实施一项史无前例的伟大计划,急需 Margaret 这样的人才。

  1965 年的一天,NASA 的几个人找到了 Margaret,神情严肃地对她说出了如下的话:

  让 Margaret 差点惊掉了下巴,半晌说不出话来,沉默了一阵,她坚定地回答:

  她本人是 NASA 为 登月飞船导航 项目招来的第一个编程员,也是当时唯一一个。

  按 NASA 的想法,给登月的宇宙飞船导航编程的事,以后就由她本人全权负责了 …..

  Margaret 也没被场面吓到,既然接了这么大的活儿,那就开动吧,她立马开始培训人员,组建团队。

  然而,刚开始启动 登月导航计算机 项目,她就发现,除了她以外,NASA 的其他人几乎都是小白 ….

  在那个年代,大多数人没听说过计算机,更别提软件,硬件这些专业术语了,一开始,Margaret 费了老鼻子劲,才让她手下的一些大老爷们明白软件(software)是个什么玩意儿,有啥用途:

  现在看来是个笑话,但在当时,真的有很多人以为软件是某种衣服或纺织品 ……

  当然,NASA 为 Margaret 找来的这帮人也不是吃素,也都是美国数学领域的顶尖人才,大家很快就跟上了节奏,成为 Margaret 的得力干将。

  不过时间一长,Margaret 开始觉得有些力不从心了,原来,实验室里其他男同事也不比 Margaret 大多少,虽然一个个都有子女,但因为是男人,可以放心地在实验室上班,反正家里有老婆带娃。

  但 Margaret 不一样,她的女儿年纪还小,一到实验室工作,就容易分心牵挂女儿。

  考虑了很久,为了既不影响登月,又能照顾到女儿,Margaret 干脆每天把女儿带到实验室来上班。

  Margaret 经常加班到很晚,有时候周末也要赶工,好在女儿终于也可以照顾得到了。

  那时候,女儿就每天帮母亲假扮宇航员,坐进模拟器中,测试软件的运行和调试。

  有一次,女儿不小心在 模拟着陆 时,提前打开了一个按钮,这让 Margaret 心中一惊,她不由得想到:

  万一在实际登月运行中,宇航员也发生了类似的错误,问题可就大了 .....

  这事儿给了 Margaret 灵感,她立刻向 NASA 报告,要求着手开始写程序补丁——防止宇航员提前开启某些程序的保护程序。

  然而,Margaret 据理力争,她认为在太空黑暗又孤独的环境下,人犯低级错误的概率相当大,研发这个程序补丁有相当的必要。

  最终 Margaret 赢得了这场争论,她主导的修正人为错误的保护程序,就这样嵌入了登月的阿波罗飞船上面 ….

  制定了程序优先级调度,让程序可以随时中止优先级较低的任务,专注于高优先级任务。

  比如有人像 Margaret 的女儿一样,按错了按钮,提前启动了不该启动的程序,那也没关系,电脑能识别出错误,并在分析之后仍然执行当下应该执行的——优先级高的任务 ……

  谁都没有想到,Margaret 从女儿假扮宇航员,漫不经心的玩闹中得到的启发,竟然最终成为了挽救登月计划的决定性因素!

  除了这个灵光乍现的神来之笔,Margaret 大多数时候的工作都是枯燥乏味的,那时候,NASA 的计算机刚刚换成集成电路板,但远没有如今的工业设计,

  Margaret 的编程代码都是写在笔记本上的,然后像织毛衣一样,把硅材料和金属线圈一个个连接起来。

  几年下来,Margaret 写出的代码笔记本,堆起来比她本人还高 ....

  而她装配好的第一台集成电路计算机,背后密密麻麻复杂的线路,在这个大背景下,赌王千王至王,交织成一张巨大的蜘蛛网,

  这是人类最早的集成电路计算机之一,更承载了史上第一个大型软件程序——飞船登月的导航程序!

  历经艰苦卓绝的 4 年,决定性的一刻终于到来了,1969 年 7 月 16 日,阿波罗 11 号宇宙飞船,在大推力火箭 土星 5 号 的推动下,伴着震天动地的轰鸣,飞向地球外的第一个天体——月球。

  经过三天多的飞行,7 月 20 日,阿波罗 11 号终于开始向月球背面的着落点飞去,一切顺利,飞船在慢慢下降。

  机上的电脑一共发出了 5 次紧急信号,这是阿姆斯特朗等人此前从未训练遇到过的。

  30 多万技术人员,8 年耗资 250 亿美元的工程,全人类的希望,如今都要取决于这几声关键的警报和几行计算机代码了!

  所有人的心都提到了嗓子眼,还有 3 分钟就要着落了,程序竟然现在开始报错!而这一警报显示:

  刹那间,指挥中心的空气仿佛凝结了,所有人都望向 Margaret,脸上带着惊慌和疑问:

  千钧一发的那一刻,Margaret 突然想到了当年,她受到女儿胡闹的启发写出来的那个保护软件:

  但是,根绝 Margaret 之前设计的程序,电脑会执行优先级高的任务——先让飞船在月球着陆,

  尼尔 · 阿姆斯特朗和队友巴斯走出船舱,迈出了人类文明史上的一大步 …..

  那一天,全球 6 亿人见证了阿波罗 11 号飞船,在 Margaret 设计的软件下,顺利登陆月球的庆幸。

  登月工程获得巨大成功,宇航员们成了万众瞩目的英雄,Margaret 却和众多幕后技术人员一道,躲在了光环背后,多年不为世人所熟知。

  多年过去,随着计算机技术的发展,计算机的运算能力有了长足的进步,软硬件的搭配之下,香港白小姐精准资料,如今顶级智能手机的运算能力都是阿波罗 11 号计算机性能的 10 万多倍 ....

  但是,由 Margaret 领导编写的软件却是空前绝后的,它成功引导阿波罗飞船完成了登月任务,这是当今任何一台电脑都做不到的,因为那台性能并不强大的远古电脑上,运行着程序员祖师奶奶 Margaret 写下的代码,它无比精确,强大,可靠,一如心智无比强大的 Margaret 本人。

  如今,那 14.5 万行,史无前例的,引导人类成功登月的代码早已被开源,放到了 GitHub(著名的软件源代码托管服务平台)上,供后世 程序猿 攻城狮 们膜拜,瞻仰 …..

  2016 年,Margaret 获得了奥巴马总统给她颁发了总统自由勋章,表彰她在登月方面做出的杰出贡献。

  一路走来,时过境迁,Margaret 始终认为,为阿波罗 11 号编写导航程序的那些年,是她人生中最美好的时光,她也最终实现了让丈夫以她为荣的誓言。

  在人类阔别月球 50 年之际,程序员祖师奶奶 Margaret 的感慨依旧发人深省:

  我们应当更加无惧无畏,哪怕有专家跳出来说’这不合理’,’那讲不通’,因为,我们在梦想变为现实的路上,除了你自己,世上没人能相信它可以实现,但是,只要你继续一往无前,梦想终究会变成现实 ….