本篇文章3896字,读完约10分钟

把人送上月球的女程序员:登月计算机的雏形。

玛格丽特被奥巴马总统授予奖章。

玛格丽特和许多幕后技术人员一起观看了登月。

玛格丽特写的代码笔记本堆得比她自己还高。

玛格丽特,登月背后的英雄。

美国西部时间7月18日晚,全球最大的加州太阳能发电站伊凡帕太阳能发电站出现了一幅惊艳的画面。

日落和日出后,沙漠中10多万块太阳能电池板的镜子突然开始调整它们与月亮的角度。然后,月光反射在这些太阳能电池板的镜面上,明暗交织。当满月挂在空时,人们惊讶地发现,太阳能电池板反射的月光形成了一个长发女子的半身像,上面有一个数字和周围的英文字母:阿波罗11号,玛格丽特·汉密尔顿。

7月20日也是人类登月50周年。五十年前,阿波罗11号带着探索宇宙的梦想踏上了月球之旅。50年后,谷歌用太阳能电池板反射月光形成一幅肖像,向这位“阿波罗11号先驱”玛格丽特·汉密尔顿致敬。

实际上,被称为阿波罗11号先驱的玛格丽特本人并没有登上月球,但这个女人却是人类登上月球的第一个官员,只是因为她是人类历史上第一个真正的“软件工程师”(这个词是她自己发明的),是所有现代程序员的祖辈。

因为她,人类第一次在计算机的帮助下完成了登月的伟大工程,也因为她,阿波罗11号能够在登月的最后三分钟力挽狂澜,及时脱险,宇航员尼尔·阿姆斯特朗能够代表人类迈出那“决定性的一步”。

美国宇航局紧急招募她负责“登月飞船导航”。

玛格丽特·汉密尔顿1936年出生于美国印第安纳州。她是一名校长,但她有一个缺点:她懒得背东西。尤其是数学,她最讨厌背公式和推理,于是想出了一个“懒”的办法:“我懒得记每一个公式,所以我自己推导每一个数学公式,学推理也不用背……”

懒得记东西,热衷于推理和计算,也为她将来成为编程鼻祖打下了基础。

1955年,她成功进入密歇根大学,学习她最喜欢的数学专业。原因是一样的:她不用背东西,但她可能很懒。

玛格丽特1958年本科毕业,拿到学位后不久,马上就和男朋友结婚了。本来她打算继续读研。但为了支持丈夫去哈佛大学读法律硕士,她决定先打工挣钱,于是在麻省理工学院的实验室做了程序员。

谁知道呢,她老公拿到法学学位后,我希望她放弃马萨诸塞州的编程工作,去哈佛法学院当一名茶水工。玛格丽特果断拒绝:“我不会端茶倒水。总有一天,我会让你为我骄傲……”

玛格丽特选择留在马萨诸塞州的林肯实验室,开始学习计算机编程。当时的电脑都是电子管,计算能力很低。每回合占据几个房间的机器怪物可以承担有限的程序任务,主要用于科研和军事目的。

尽管如此,玛格丽特仍然有着浓厚的兴趣,她只需要逻辑推理,而不需要记忆,这正是她想要的。她开始如饥似渴地学习编程,很快就写了一个预测天气、探测敌方军用飞机数量的程序。她的小小成就很快引起了美国宇航局的注意,因为美国宇航局当时正在实施一项前所未有的伟大计划,迫切需要玛格丽特这样的人才。

1965年的一天,美国宇航局的几个人找到了玛格丽特,严肃地对她说:“我们想找一个能编程并帮助我们把人送上月球的人……”玛格丽特当时几乎惊呆了下巴。她久久不能说话,沉默了一会儿。她坚定地回答:“好,我去!”

当玛格丽特收拾行李搬到美国宇航局的工作室时,她发现自己是美国宇航局为“登月飞船导航”项目招募的第一个也是唯一一个程序员。

2女儿用错误的方式处理她的脑波来开发补丁

根据美国宇航局的想法,她将全权负责登月飞船的导航编程。

玛格丽特也没有被这一幕吓倒。既然她接了这么大的活,我们开始吧。她立即开始培训人员,组建团队。然而,她一启动“登月导航计算机”项目,就发现除了她自己,美国宇航局的其他人几乎都是白人。

那时候大部分人都没听说过计算机,更不用说软硬件的技术术语了。起初,玛格丽特用一个老鼻子让她的一些男人明白软件是什么,它是用来做什么的:“现在这似乎是一个笑话,但在那个时候,许多人真的认为软件是某种衣服或纺织品……”

当然,nasa为玛格丽特招募的这些人并不是素食主义者,他们都是美国数学领域的顶尖人才,他们很快跟上节奏,成为玛格丽特的得力助手。

然而,过了很久,玛格丽特开始感到有点不知所措。本来实验室同事大多是男同事,可以放心的在实验室工作。反正家里有老婆孩子。但是玛格丽特不一样。女儿还小,来实验室工作,很容易分心,担心女儿。经过长时间的思考,玛格丽特干脆每天带女儿去实验室工作,以便不影响登月,也照顾女儿。

玛格丽特经常工作到很晚,有时她不得不在周末努力工作。好在女儿终于可以照顾她了。当时女儿每天帮妈妈装宇航员,坐在模拟器里测试软件的操作调试。有一次,我女儿在"模拟着陆"时不小心提前打开了一个按钮,这让玛格丽特很吃惊。她不禁想到,如果宇航员在实际登月过程中犯了类似的错误,问题就大了。

这一事件激发了玛格丽特,她立即向美国宇航局报告,并要求开始编写程序补丁-保护程序,以防止宇航员提前打开某些程序。

起初,美国宇航局的其他人认为这个程序是不必要的:“我们训练有素的宇航员永远不会像几岁的女孩一样犯错!”然而,玛格丽特认为,在黑暗和孤独的环境中,犯低级错误的概率相当高,因此开发这个程序补丁是非常必要的。玛格丽特最终赢得了辩论,她领导的纠正人为错误的保护计划被嵌入到登陆月球的阿波罗飞船中。

实现这种保护性程序的方式是制定一个程序优先级计划表,让程序随时停止优先级较低的任务,专注于优先级较高的任务。例如,如果有人,像玛格丽特的女儿,按错了按钮,启动了不该提前启动的程序,这并不重要。计算机可以识别错误,并在分析后仍然执行现在应该执行的任务-高优先级...

没有人认为玛格丽特从她女儿假装成宇航员和漫不经心地玩耍中得到的灵感是拯救登月计划的决定性因素。

玛格丽特的工作大部分时间都很无聊,除了这个突然的灵感。当时,美国宇航局的计算机刚刚被集成电路板取代,但它与今天的工业设计相去甚远。玛格丽特的编程代码写在笔记本上,然后就像织毛衣一样,硅材料和金属线圈一个接一个地连接起来。这个过程需要非常小心和高度集中。如果你走错了路,那你就大错特错了。多年来,玛格丽特写的代码笔记本堆积得比她自己还高。

她组装的第一台集成电路计算机交织成一个巨大的蜘蛛网,后面有许多复杂的线条。它是人类最早的集成电路计算机之一,也承载着历史上第一个大型软件程序——宇宙飞船登月导航程序!

3在登陆月球之前,电击分钟保护计划确实有效

经过四年的努力,决定性的时刻终于到来了。1969年7月16日,阿波罗11号宇宙飞船在大推力火箭土星5号的驱动下,飞往月球——地球之外的第一个天体。

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

突然,在着陆前三分钟,发生了一件意想不到的事情:一名宇航员在启动按钮时意外地走错了位置。宇航员阿姆斯特朗惊慌失措,立即开始报告:“1202计划警报!1202程序报警!”船上的计算机发出了五个紧急信号,阿姆斯特朗和其他人以前从未遇到过。

30多万技术人员,8年250亿美元的工程,全人类的希望现在就靠这些关键的警报和几行计算机代码!

大家心都提到嗓子眼了,三分钟就要落地了。程序现在应该开始报错了!这个警报表明电脑超载了...

刹那间,指挥中心里的空气体似乎凝结了,每个人都看着玛格丽特,脸上带着惊慌和怀疑:

程序有问题?

落地不落地?

只剩下三分钟了!

在关键时刻,玛格丽特突然想到了她女儿的错误启发她写的保护软件:如果有人按错了按钮,提前启动了其他程序,这个保护程序一定会站起来停止!现在应该是有人按错了按钮,保护程序开始停止,开始纠错,所以过载了。

按照她之前设计的程序,电脑会执行高优先级的任务——让飞船先登陆月球,那么这个时候要做的就是无视警报继续前进!玛格丽特果断地接过话筒,坚定地喊道:“我们的软件程序够聪明,相信我们,正常登录!”

经过漫长的三分钟,阿波罗11号终于登上了月球。

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

4程序员的奶奶被奥巴马授予勋章

登月计划非常成功,宇航员成为英雄,但玛格丽特和许多幕后技术人员隐藏在光环后面,多年来不为世人所知。

多年来,随着计算机技术的发展,计算机的计算能力取得了很大的进步。软硬件结合,顶级智能手机的计算能力是阿波罗11号电脑的10万倍以上。

然而,玛格丽特写的软件是空,它成功地引导阿波罗飞船完成了登月任务,这在今天的任何一台计算机上都做不到,因为性能不佳的古代计算机运行的是程序员的祖母玛格丽特写的代码,它像头脑一样准确、强大、可靠,无与伦比。

如今,引导人类成功登月的前所未有的14.5万行代码,已经被开辟出来,放在github(著名的软件源代码托管服务平台)上,供“程”的后人膜拜和瞻仰。

2016年,玛格丽特被奥巴马总统授予总统自由勋章,以表彰她对登月的杰出贡献。

一路走来,时间变了。玛格丽特总是认为她为阿波罗11号写导航程序的那几年是她一生中最美好的时光。

在距离月球50年之际,程序员的老祖宗玛格丽特的情感依然发人深省:“我们不应该在这里停止探索!我们应该更加无所畏惧,即使有专家跳出来说‘这不合理’和‘那没有意义’,因为除了你自己,世界上没有人能相信它能实现,但只要你继续向前走,梦想最终会变成现实……”

据《英国事》新闻推荐,

离火星更近了一步:spacex星际飞船成功测试了它的第一次自由悬挂

“钢铁侠”马斯克在硅谷的探索公司Spacex离载人火星又近了一步。最近,spacex公司在美国德克萨斯州南部建造了未来的宇宙飞船...