关于登上月球我该怎么写代码这件事——玛格丽特·汉密尔顿小传

关于登上月球我该怎么写代码这件事——玛格丽特·汉密尔顿小传

首页角色扮演代号月亮更新时间:2024-05-09

1969年UTC(世界统一时间)7月20号晚上8:17'43'',代号为鹰的登月舱着陆在月球宁静之海(一般称为静海地区),这宣示着美国人先苏联一步,把人送上了月球。阿姆斯特朗说出了“个人一小步,人类一大步”的名言,现在应该基本编入了世界各国中小学生的课本中,他和他的搭档奥尔德林与柯林斯值得被人类所纪念。故事发生在他们登月的前刻,是的,前刻,就是在他们着陆在月球前一刻,在登月舱上的发动机点火减速,登月舱开始进入下降轨道的时刻。“1202”“1202”......登月舱的主控计算机开始不断重复这个编号为1202的码,这是计算机在报错。

代号为“鹰”的登月舱

这可吓坏了阿姆斯特朗和奥尔德林啊,怎么回事啊,眼看就要降落了,这不会摔在月球上吧。他俩的心情可想而知,同时和他俩一样急的还有在NASA(美国国家航空航天局)负责决策的贝尔斯。是不理会这个警告继续着陆进程呢,还是取消登月,就地(月)返回呢?时间是不等人的呀,两个宇航员精神极度紧张,地面人员着急忙慌地查找手册,当时呢不像现在这样方便,没有便携小巧的计算机,技术手册都是一张一张地打印出来的,那是每一本都比砖块要厚呀,可以对比下方的图片,仅仅登月计划的导航程序就已经是如此高度,在这种时刻要找到一个错误代码的含义,难度可想而知。所幸呢,工程师加曼之前测试的时候遇到过这种情况,这是计算机处理雷达返回的数据太多,搞得计算机自身崩溃了,

“1202”呢,就是代表系统崩溃重启来结束阻塞进程以保证登录程序的进行的代码。

玛格丽特·汉密尔顿,旁边的纸堆就是阿波罗登月计划的导航程序

加曼就告诉贝尔斯不用管“1202”或是“1201”这俩错误代码,可以继续执行登月任务,就这样阿姆斯特朗他们被中控计算机“虚晃一枪”后有惊无险地降落在月球静海,开启了人类的地外探索的新篇章。

而我们的主角呢,大家已经见过了,就是上图站在纸堆旁的女士,玛格丽特·密函尔顿,就是她,写了这个开创性意义的代码。

玛格丽特1958年毕业于厄勒姆学院,由于主修的是数学,她先是去了一所高中任教师,后来呢又打算去布兰迪斯大学攻读抽象代数的研究生。在1960年她偶然得到了一份麻省理工学院的软件编程工作,主要编写一个天气预报的软件,就在那里玛格丽特累积了大量的软件编程工作实战经验,为她后来极为惊艳的人生奏起了扎实的前奏。

1961年,玛格丽特去了林肯实验室,也一并为美国空军剑桥研究实验室编写软件,她一方面照顾女儿,一方面还要参与复杂且累人的项目,但是这位天才对这两方面“刚刚好”都懂,这些任务她都出色完成!

阿波罗计划是一个庞大的系统工程,其中“MIT仪器实验室”是当时服务于登月计划的一个部分,在这里玛格丽特的天分被NASA所发现,在不到一年的时间里玛格丽特便成为了首席工程师。1965年玛格丽特成为软件编程部的部长,但有意思的是,在阿波罗计划初期,NASA竟然并没有考虑到“软件”的事情,随着项目启动,他们才后知后觉得意识到软件的重要,逐步把软件的团队扩大到400人左右。当然,在背后推动这一切的人中肯定有玛格丽特。

由于项目紧迫,玛格丽特经常带着女儿劳伦在自己工作的地方。一天,劳伦在指令舱模拟器中玩耍。当她在键盘上乱按时,一条错误的信息突然弹出。原因是她不小心启动了一个叫P01的预运行程序,导致原本还在飞行状态的模拟器瞬间崩溃。为了解决这种罕见情况,玛格丽特就提议在整个系统中加一段代码,防止类似的状况发生。若是在飞行过程中,宇航员操作出了什么失误,还有挽回的地步。

玛格丽特和女儿劳伦

但这一提议后来被否决,原因是大家都觉得宇航员是训练有素,而且不会随意触碰设备,发生这种事情的概率极低,再加上当时计算机极其有限的运存,决策者并不想加上这种近似“累赘”的代码,玛格丽特最终只是在代码旁加了“不要在飞行中选择P01模式”。

但是无巧不成书啊,这种事情偏偏让阿波罗8号赶上了,1968年12月21日,阿波罗8号发射,它所执行的任务是实现人类的首次绕月飞行,这是为登月前测试阿波罗指挥舱系统在地球和月球轨道之间的太空及绕月轨道上的性能,包括通信、跟踪和生命保障各个方面。评估宇航员在开展绕月轨道任务期间的表现。

然而在飞行的第五天,指令舱驾驶员吉姆·洛威尔(Jim Lovell)一不小心就触发了P01模式,飞船上关于导航的数据一清而空,宇航员们面临无法返回地球的困境,这时NASA知道玛格丽特之前对这个情况了解,电话八百里加急就打到玛格丽特那去了,于是可能是世界上的第一个紧急程序维护的加班加点发生了。看来程序员的命运在那时候就有所预兆啊。

玛格丽特带上MIT的程序员们连夜奋斗9个小时 ,设计出新的返回导航计划,配合洛威尔计算的导航数据,重新输入计算机后,宇航员们这才回了家。

这次事之后呢,NASA开始把软件设计看做一件非常重要的事情,软件成了美国与苏联登月竞赛的利器之一。

再一次发挥使玛格丽特专业价值的事情,便是开文所说的阿波罗11号月球登陆, 鹰号飞船的轨交雷达发来的大量数据涌入了计算机,一下就把内存仅仅2k的计算机弄崩溃了,但是玛格丽特“异步处理”的思想就已经在她设计系统时就已经应用在其中。异步处理是按照不同步的程序处理问题,在这里呢就是计算机处理不了当前任务时,优先保障着陆程序的运行。可以说没有这个设计,整个阿波罗11号任务可能变成人类航天史代价最大的灾难。这一年玛格丽特不到33岁,事业有成,还有个女儿,比我们现代人厉害多啦!

我们现在耳熟能详的“软件工程”这个词就是玛格丽特发明的,经过这些航天以及军方的项目,许多的概念在玛格丽特脑海里越发成熟,她不仅提出了软件工程的概念,同时她还是并行计算、优先级调配、端对端测试等技术的先驱者,现代院校工科专业中往往都会有“软件工程”学院。

此外呢,人类第一个卡尔曼滤波器(线性系统的最优估计观测器)是在阿波罗计划中实现的,作者是斯坦利施密特,不过玛格丽特作为首席工程师也是参与讨论和开发的,代码一定也在这一摞厚厚的纸当中。卡尔曼滤波是航天导航中的核心算法,数学内容之奥妙让人回味无穷,这也是我目前学到的同FFT(快速傅里叶变换)在内的极其令人赞叹不已的工程算法。

卡尔曼滤波算法的程序设计时需要用到矩阵运算,让现在任何一个工程师拿C手写矩阵分解,估计都会让他痛苦好几天的,别说上古时代只有晶体管计算机和汇编语言了。大家应该能想象出更多艰难的事情了。

小编我当前学的卡尔曼滤波教材

玛格丽特推广了“软件工程”一词,后来领导了为美国第一个空间站Skylab编写软件的团队。她于1976年在剑桥创立了自己的公司,近年来她的成就一再被人们所庆祝。她于2003年获得美国宇航局的特殊空间法案奖,并于2016年获得总统自由勋章。

玛格丽特获得总统自由勋章

2017年,她获得了最大的荣誉:Margaret Hamilton Lego minifigure(乐高mini人物角色)。

Margaret Hamilton Lego minifigure

有趣的是,玛格丽特还引领了1969年黑丝连衣裙的流行

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved