在阿波罗11号飞船着陆月球的前几分钟,意外出现了。由于着陆器雷达的电源出现问题,计算机出现过载现象,程序报警显示“执行溢出”,这意味着导航计算机不能实时完成所有任务。系统近乎崩溃,难道这次挑战要以船毁人亡的惨剧结束吗? 撰文 | 李唐 1969年7月16日,搭载着阿波罗11号的土星5号火箭在肯尼迪航天中心发射升空。这是人类的首次登月尝试。7月21日,阿姆斯特朗和奥尔德林成功踏上了月球的表面,在完成考察任务后顺利返回地球。 这一伟大创举的背后,是无数科学家和工作人员的辛勤努力。在他们之中,就有一位堪称传奇的程序员。如果没有她的智慧,阿波罗计划便会毁于一旦。她就是程序员们的“女神”——玛格丽特·海菲尔德·汉密尔顿(Margaret Heafield Hamilton)。 学业与家庭 玛格丽特于1936年8月17日在印第安纳州的保利出生。高中毕业后的第二年(1955年),她开始在密歇根大学学习数学。在这里,她结识了詹姆斯·汉密尔顿,并在毕业后与他结为夫妻。1958年,玛格丽特获得数学学士学位。同时,她还在厄勒姆学院( Earlham College)完成了辅修哲学的学业。玛格丽特说,是她的父亲(哲学家、诗人)和祖父(校长、贵格会牧师)激励了她学习哲学。 大学毕业后,为支持丈夫在哈佛大学攻读本科学位,她在一所高中教了一段数学和法语。后来,她搬到了马萨诸塞州的波士顿,并打算在布兰迪斯大学(Brandeis University)读研。这次,她选择抽象数学作为主攻方向,她的理想是成为一名数学教授。当时,詹姆斯·汉密尔顿在哈佛大学修读法律。为了缓解经济压力,1959年的夏天,玛格丽特开始在麻省理工学院的气象系为爱德华·诺顿·洛伦茨(Edward Norton Lorenz)工作。在她看来,这只是暂时性的一步,过不了多久她还会继续研究生的学业。玛格丽特并未预料到,这份临时的工作竟为她打开了一个充满乐趣的全新领域。 初涉编程 在为洛伦茨工作期间,她为Marvin Minsky的MAC项目开发了预测天气的软件——这项工作对洛伦兹在混沌理论方面的成果做出了直接贡献:混沌理论关注于初始条件的细微变化所引起的结果上的巨大差别,天气预报是混沌理论研究的典型案例。 在1961年,由于能力出色,玛格丽特进入了著名的林肯实验室,成为SAGE( Semi-Automatic Ground Environment )项目的研发成员。SAGE项目的初衷是利用计算机系统模拟气流的运动,对天气状况进行预测,后来其被美国军方用于防空,以抵御苏联可能发动的攻击。 当时,计算机科学和软件工程还没有成为系统的学科,程序员往往在工作中通过实践经验来学习,编写程序的复杂度和现代编程也不在一个量级上。由于新兴的编程行业还缺乏完善的统一标准,每个程序员必须掌握多种汇编语言。他们首先将代码用打字机写到纸上,再依靠人力对程序进行排错(debug),这往往需要数遍检查。在确认无误后,这些程序才会被专职人员用手工编成的磁环存入电脑。尽管如此,玛格丽特依然乐此不疲,她已经沉醉在了这个崭新的世界之中。她说道:
正是她在SAGE项目上的努力,使她成为美国宇航局阿波罗飞行软件首席开发员的候选人。 (图源:MIT Museum) 在“荒野”上工作的母亲 麻省理工学院的查尔斯·斯塔克·德雷珀实验室当时正在进行阿波罗计划的研究,玛格丽特加入了这个实验室。作为编程专家,玛格丽特担任一支研发团队的领导。 就在这段日子里,她的女儿劳伦出生了。在2015年的一次采访中,玛格丽特表示,在工作的同时担当母亲的角色的确充满了挑战性。在工作繁忙的时候,她不得不将仅有几岁的女儿带到实验室里,专注的母亲和在一旁玩耍的小女儿成为实验室里一道别样的风景。 在这个关于计算的新世界中,许多地方并没有前人的脚步,路要靠自己去开拓。“那里就像是原始的西部,没有航线,没有人教你东西。”正是在这种情况下,她的团队成功开发出了飞行软件,其中包括由多位资深科学家为阿波罗指令舱、月球着陆器和随后的天空实验室(Skylab)设计的算法。 化解危机 我们知道,计算机的处理速度与作为临时存储空间的内存有很大关系,而在那个时代,计算机内存都很小,阿波罗飞船上的电脑也不例外,这意味着其运行能力的上限较低。 在阿波罗11号飞船着陆月球的前几分钟,意外出现了。由于着陆器雷达的电源出现问题,计算机出现过载现象,程序报警显示“执行溢出”,这意味着导航计算机不能实时完成所有任务。系统近乎崩溃,难道这次挑战要以船毁人亡的惨剧结束吗? 在这个紧要关头,玛格丽特编写的程序竟然顶住了压力。她的算法为各个进程分配优先级,确保所有任务能以正确的顺序进行。玛格丽特写道:
正是玛格丽特设计的程序挽救了阿波罗飞船,使阿姆斯特朗迈出了“人类的一大步”。资深技术专家保罗·库托(Paul Curto)提名玛格丽特获得美国宇航局太空行动奖,称她的工作是“超可靠软件设计的基础”。在玛格丽特的程序拯救人类的登月计划时,她其实只有33岁。 荣誉永远属于她 后来,玛格丽特离开了NASA,并与他人一同创建了一家名为high Order Software 的公司,继续进行软件开发的工作。她提出的算法思想为后来的很多程序设计提供了不可或缺的灵感。 玛格丽特与Anthony Oettinger、Barry Boehm一道被认为是提出 “软件工程”这一学科名称的人。她想赋予编程以“合法性”,这样它(以及程序员)就会得到应有的尊重。因此,她创造了“软件工程”这个术语,以区别于其他类型的工程学科。随着时间的推移,“软件工程”获得了与其它任何技术学科相同的重视。 《连线》杂志的凯伦·特根·帕迪尔(Karen Tegan Padir)评价道,玛格丽特为更多女性进入软件等STEM领域并取得成功打开了大门。为此,我们应该送上额外的赞誉。 2003年,玛格丽特被授予NASA杰出太空行动奖;该奖项包含37200美元的奖金,是NASA历史上授予个人的最高数额。在2016年,她又得到了美国最高平民荣誉——总统自由勋章。颁奖典礼上,奥巴马总统说,汉密尔顿夫人“象征着一代帮助人类进入太空的默默无闻的女性”。 (图源:Official White House photo by Lawrence Jackson) 人类的历史是充满进步的历史。在闪耀的舞台上,我们看到了英雄的风采。这时,我们不妨将聚光灯稍稍后移,让它也照亮幕后的英雄。他们同样闪耀,他们的努力同样不可或缺。人类的一大步中,包含了每位英雄迈出的一步,鲜花和掌声永远属于他们。 参考资料 [1] https://en./wiki/Margaret_Hamilton_(software_engineer) [2] https://www./smithsonian-institution/margaret-hamilton-led-nasa-software-team-landed-astronauts-moon-180971575/ [3] http://news./2016/scene-at-mit-margaret-hamilton-apollo-code-0817 [4] http://wap.sciencenet.cn/blog-2966991-1076583.html?mobile=1 文章头图及封面 文章头图及封面图片来源:hackaday.com |
|
来自: taotao_2016 > 《文件夹1》