50年前的最美程序媛,用代码把人类送上月球

2019年7月18日入夜后,世界上最大的太阳能发电站——伊万帕太阳能发电站出现了不可思议的一幕。

沙漠里10万块太阳能电池板仿佛受到某种力量的控制,迎着月光缓缓变化角度,明暗交错间,10万块电池板定格成了一个女性的肖像,以及一个名字——Margaret Hamilton(玛格丽特·汉密尔顿)。

这让人不得不好奇,这位玛格丽特究竟何许人也?居然能让10万块电池板为她显现一幅“月光肖像”?

带着好奇在网上一搜,瞬间就被她的人生履历给震撼了。

原来,这位玛格丽特·汉密尔顿是负责人类首次绕月飞行阿波罗8号的软件工程师,就是她编写的程序,顺利帮助飞船完成人类首次登月任务!

可以说,没有玛格丽特,就没有阿姆斯特朗的一小步,也不会有人类的一大步。

而除了登月外,玛格丽特·汉密尔顿还曾为广大“码农”正名,首次使用了“软件工程师”一词来称呼包括自己在内的程序员。

因此,她也是历史上第一位真正意义上的软件工程师,被后人称为“把阿波罗送上月球的女程序员”和“软件工程师的祖师奶奶”。

为了感谢她所做出的贡献,2003年,她获得美国宇航局对个人的最高奖励——NASA杰出太空行动奖。

2016年,她再次获得美国最高荣誉的文职勋章——总统自由勋章,该勋章用于表彰推动美国进步的杰出人物,由总统奥巴马亲自颁发,领奖的还有比尔·盖茨和乔丹!

但比起这些头衔,其实玛格丽特传奇又波澜壮阔的人生经历,更让人钦佩!

大学里的“舞会女王”

有颜值却偏要拼才华

第一次看到玛格丽特的照片,会误以为她是好莱坞明星,清新靓丽的容貌让人很难联想她是一位计算机科学家。可是上帝有时候就是这么不公平,不光给了玛格丽特甜美可人的长相,还给了她智力超群的头脑。

1954 年,她从汉考克高中毕业,随后入读厄勒姆学院,并于四年后取得学士学位,专业是数学,辅修哲学。

在这段黄金岁月里,玛格丽特不仅是学校里人气明星,享有“舞会女王”的盛名,而且追求者众多,但玛格丽特最终嫁给了同样有学术追求的詹姆士·汉密尔顿,成了汉密尔顿太太。

大学毕业后,玛格丽特成了一名老师,一边在高中教数学和法语,一边等着丈夫拿到学士学位,等丈夫学成后,玛格丽特才有机会继续深造,研究抽象代数。

虽然在那个年代并不鼓励女性参与高强度的技术工作,但她却因为对代码的痴狂热爱,选择了一条非典型的程序员进化之路。

1960年,玛格丽特在麻省理工找了一份临时的软件开发工作,负责编写在计算机上运行的天气预报软件。

正是这份工作,让她一脚踏入了程序的殿堂。她自学了好几种软件语言,懂得了如何建立软件,随着日渐丰富的编程经验,玛格丽特也慢慢成了系统编程的专家。

1963年,麻省理工获得美国太空总署(NASA)的合约,负责登月项目的软件开发。

玛格丽特因为一直在麻省理工做软件研究项目,她当即获聘进入阿波罗项目组,开始为登月飞船写程序。

那一年,她27岁。飞往月球的事业,就从这一年开始了。

一边当科学家

一边当新手妈妈

在当时那个年代,软件工程还不是一个独立的科目,甚至连“软件工程”这个词都没有,但玛格丽特却要负责登月这种充满挑战的工作,实现从无到有的突破,难度之大可见一斑。

尤其是当时的编程条件可不像现在这样,坐在办公室使用着高级语言,对着显示屏敲敲键盘就把代码写好了。

▲和玛格丽特差不多高的代码

玛格丽特要先把代码写在纸上,在代码确认无误后,会有专业人员把代码内容像绣花一样,用金属线一点一点编织进内存里,当铜线穿过磁芯代表1,绕过磁芯则代表0,往往通宵达旦才只能完成一小部分内容,不敢想象最开始的编程竟是这么编出来的.....

而那个时候,玛格丽特的女儿年仅4岁,玛格丽特作为一名职业女性,同时肩负着母亲的责任,在兼顾工作的同时,还必须得要陪伴孩子。

无奈之下,玛格丽特只好把女儿劳伦带到查尔斯河畔的办公室里。让孩子自己在旁边玩,玩累了就直接在地板上睡觉,自己则在旁边给阿波罗飞船的软件写代码。

当时的美国对女性有着各种各样的束缚,像玛格丽特一样把孩子扔在一边,自己却当个埋头“工作狂”,在很多人看来都是一件疯狂且不负责任的行为,所以常常会遭到他人质问:“你怎么忍心这么不顾自己的孩子?”

就连身边的朋友和家人也都委婉地劝说她可以换一份轻松地工作,反正女人最后还是要回归相夫教子的正路,甚至她的丈夫也对她说家里有一个人拼事业就好了,希望她可以全身而退做家庭主妇。

但已经参与到人类历史进程项目中的玛格丽特当然不愿半途而废,她知道阿波罗项目于她的意义。

而且在60年代的美国,女性是社会的二等公民,玛格丽特想通过阿波罗项目证明女性一样可以在高新技术领域有所作为,一样可以肩负重责。

而在阿波罗项目的重要环节上,玛格丽特终于证明了自己的价值,也证明了女性的力量。

两次化解航天灾难

神级程序媛力挽狂澜

你一定想不到,正因有玛格丽特的存在,才化解了两次航天灾难事故的发生。

一次是在1968年12月26日,人类首次绕月飞行的阿波罗8号发射后的第5天,宇航员Jim Lovell在无意间按下了P01模式,这个模式启动后,导致所有导航数据都被清空,飞船在太空中迷路,无法把宇航员送回地球。

得知消息的玛格丽特马上带着MIT的一群程序员,连夜奋战了9个小时才设计出了一个新的计划,让阿波罗8号飞船才回到正常的轨道,顺利载着宇航员返航地球。

虽然这次完美解决了危机,但玛格丽特最大的挑战还在后面。

1969年7月16日,阿波罗11号飞船在火箭的助推下离开地球,飞向人类仰望了百万年的月球。

但就在7月20日,阿波罗11号快要着陆月球表面时,警报突然拉响,大量突然涌入内存区的数据导致电脑过载,电脑即将崩溃。

如果不及时修复,整个系统失去控制,阿波罗11号将直接坠毁在月球,登月计划将化作熊熊烈火和一堆残骸。

千钧一发之际,玛格丽特果断地告诉宇航员忽略警报,继续执行。

果然电脑在短暂崩溃后还是执行了降落程序,飞船稳稳地停在月球表面,在全世界的目光中,阿姆斯特朗走出飞船,迈出了“人类的一大步”!

后来复盘才明白,原来玛格丽特的软件是以“异步执行思想”开发的,高优先级的任务能打断低优先级任务。所以当一些错误的数据涌入电脑导致崩溃时,电脑依然能优先执行重要的着陆程序。

玛格丽特后来说:“如果当时的程序不能识别错误并从错误中恢复,我怀疑阿波罗不能成功登月。”

经此一役,玛格丽特在业界声名鹊起,尽管隔了47年后国家才表彰她为阿波罗计划做出的卓越贡献,但她在软件工程领域崇高的地位从那一刻就已经奠定。

结束阿波罗项目后,玛格丽特转战商界创立了自己的软件公司,继续为软件工程事业发挥光和热。

玛格丽特的启示 : 

成为自己所在领域的“登月者”

随着科学技术的进步,虽然现在的编程在各方面已经超越了当时的水平,如今一台智能手机的运算能力都是阿波罗飞船计算机的10万倍。

但玛格丽特开发的软件依然是前无古人后无来者的创举,当年那14.5万行登月的代码,已经放到了GitHub上,成为神迹一般的存在,供后世学习仰望。

更可贵的是,玛格丽特的经历为后世的程序员们树立了大胆创造、勤奋刻苦的职业典范,更鼓励了所有有梦想的人,要勇于开创,不惧艰险,成为自己所在领域的“登月者”!她的成就也鼓舞无数女性去参与高精尖的技术领域,打破男性主导的神话。

人类登月计划虽然在50多年前已经完成,但是还有很多星辰大海的事业等待我们去开启,最后以玛格丽特一段振奋人心的讲话来做结——

“我们不应该就此停下探索的脚步!我们应当更加无惧无畏,在梦想变为现实的路上,除了你自己,世上没人能相信它可以实现。但是,只要你继续一往无前,梦想终究会变成现实!”

ForChange 2021

(0)

相关推荐