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