查看原文
其他

码工一号:登月背后的女神玛格丽特·汉密尔顿

七彩美国 陌上美国 2019-08-01

星期六

陌上美国  欢迎关注


提起软件大神,比尔·盖茨,乔布斯,扎克伯格......说起码工、码农,不修边幅的理工科技男是标准形像。在提倡性别平等的今天,男性依然主宰着高科技领域。


今天说说大多数软件工程师可能都不知道的事实,这个“男孩俱乐部”的一号会员是一位女性 :软件学科创始人玛格丽特·汉密尔顿(Margaret Hamilton),一个六十年代不同寻常的女子。


来自洛杉矶时报


从阿波罗登月计划初出茅庐到软件工程界传奇,玛格丽特·汉密尔顿不经意之中,帮助建立了一个现在价值超过一万亿美元的行当:软件(又叫码工、码农)。


软件改变世界,这可是码格丽特为阿波罗指导计算机APC写下第一行程序时万万没有想到的。也是美国航空航天局NASA在登月计划项目之初并没预计到的:麻省理工学院航空教授David Mindell在他的“数字阿波罗”一书中写道,阿波罗计划甚至都没有提到软件这个词。“软件既没被安排在时间表中,也没计划在预算中。” 但随着阿波罗项目的进展,软件的重要性越来越清晰。 


不同寻常的玛格丽特·汉密尔顿,不仅误打误撞地成为了最早的软件开发人员,而且她成功编写的计算机代码首次将人类送上月球。


1936年8月17日,在美国印第安纳州的保利市,一位叫玛格丽·特汉密尔顿的女婴出生了。作为一个喜欢数学的女孩子,玛格丽特考入密歇根大学学习数学,并在那儿遇见了自已的另一半。1958年获得本科学位之后,为了支持丈夫攻读哈佛大学法律学位,她暂停了继续攻读研究生的计划,搬到波士顿。先教了一段时间高中数学和法语。不久,就找到麻省理工学院的程序员的临时工作,开发预测天气和探测敌机的软件。后来她的丈夫在报纸上发现了美国国家航空航天局(NASA)的招聘广告:


"为登月计划寻找编程人员”


于是,1965年,28岁的汉密尔顿,应聘进入了承担阿波罗太空任务的麻省理工学院仪器实验室(现名查尔斯-斯塔克-德雷珀实验室)。作为NASA聘请的第一位程序员,后来她带领包括各种高级科学家的团队,开发机载飞行软件。为Apollo指挥模块,月球着陆器和随后的Skylab(美国唯一独立运营的空间站)设计软件算法。


彼时,计算领域仍然像“狂野的西部” 一样等待开垦,而大名鼎鼎的微软要在十年之后才诞生。那时候的计算机体积庞大,经常不是占用整个房间,就是占据整个仓库。并且编程工作一片洪荒,根本无人可教,无书可参考。 


汉密尔顿天生具有码工的责任感和认真精神。“为航天器写代码真不是一件容易的事。责任太大了。晚上都睡不踏实”,她回忆。


有一次,在一个深夜派对上,她还想着白天写的代码。当她意识到一段代码存在缺陷时,赶紧回到计算机实验室去纠正。“我总在想象报纸上的头条新闻,他们会指出问题是如何发生的,然后矛头指向我。”


作为女性码工,汉密尔顿有男同事没有的烦恼。在上世纪六十年代的美国,女人参加工作都不受鼓励,更别提高科技工作。大多数在麻省理工仪器实验室工作的人,家里都有人照顾他们的孩子。''而我别无选择” ,所以工作狂的玛格丽特加班时只好带着女儿一起去。


来自美联社


于是妈妈钻进模拟太空舱,从宇航员的使用角度测试软件,四岁的劳伦也嚷嚷着自己想扮演宇航员。然后,她的小手摸到了什么机关,模拟器突然崩溃!这个4岁娃娃一不小心成了史上最小的软件测试员。


汉密尔顿查了半天,发现女儿在飞行模式时选择了称为P01的发射程序。汉密尔顿回忆说:“我说,天啊,这太糟糕了。程序设计中应该考虑各种误操作,因为只要是人,都可能犯错。”然而,她插入处理人为错误代码的申请被宇航局驳回:“宇航员永远不会犯错误——他们己被训练成'完美'的人”。 


但是,正如大家所知,“哪壶不开提哪壶”。在1968年圣诞节前后,在第一个离开地球轨道到达月球轨道,绕月5周并准备返航的载人航天器“阿波罗8号”上,发生了人们不愿看到的一幕:


宇航员吉姆·洛弗尔(Jim Lovell)在飞行中无意中选择了P01(一种说法是汉密尔顿没得到领导许可在机载指导计算机上加上P01出错处理程序,只好在程序备注中添加说明“请勿在飞行期间选择P01”);另一种说法是吉姆误删了机载计算机收集的所有导航数据。总之飞行器一度脑梗,在太空中踉踉跄跄不如何去何从。


在花了九个小时后,汉密尔顿和麻省理工学院的编码员上传了新的导航数据(另一种说法是机组人员意识到问题之后,重新计算并输入了数据),飞行器终于脑清目明。


几行代码不仅挽救了两个宇航员的性命,拯救了投资巨大的航天器,更重要的是坚定了人类在月球上行走的信心。


虚惊一场的Apollo 8号毫发无损地返回地球,玛格丽特的软件设计理念终于得到航天局认可。


Margaret Hamilton和她为阿波罗写的程序 mit.edu


1969年7月16日,美国国家航空航天局启动了第一次载人月球任务,阿波罗11号的飞行。降落前三分钟,机组人员拨错了开关,致使软件进入过载状态:由于当年计算机的内存很小,中央处理器速度很慢,如果一个子程序占据了内存,不停地运行,计算机就无法实时完成所有任务,而不得不推迟其它任务。


“执行溢出”,“1202”程序报警意味着发生了紧急情况。宇航员得做出决定:降落还是不降落?美国宇航局任务控制计算机工程师杰克·加曼意识到这个任务优先显示器错误的含义之后,大声向宇航员喊话:“走吧,走吧!”


于是 7月20日星期日,在UTC时间20:17:40,名为“鹰”的月球飞行器降落在月球上。尼尔·阿姆斯特朗宣布降落时说:“休斯敦,这里是静海基地。'鹰'着陆成功。



在最近接受西班牙报纸ElPaís采访时,汉密尔顿解释了为什么她选择“软件工程”一词来称呼她的工作:


“在Apollo项目初期,软件像一个被收养的孩子,并不像硬件工程等其他工程学科那样被当做科学认真对待,而是被当作艺术和魔术。意识到这点之后,我开始努力使软件具有合理地位,以便软件以及构建软件的人能得到应有的尊重,因此我开始使用术语‘软件工程’将其与硬件和其他类型的工程区分开来,每种类型的工程都是整个系统工程过程的一部分。当我第一次开始使用这个术语时,同事认为是一个有趣的笑话。他们喜欢打趣我争取软件与其他学科平起平坐的‘激进’想法。”


汉密尔顿精心设计、测试的软件,好几次在太空中化险为夷,美国国家航空航天局很快就意识到,汉密尔顿的“软件工程”将成为他们在月球竞赛中击败苏联所需的工具。 


来自大西洋月刊


2016年,玛格丽特·汉密尔顿获得了美国最高的公民荣誉:总统自由勋章,以表彰她在阿波罗计划和通用系统语言(USL,一种建模语言和规范和设计的正式方法)方面的工作。


软件第一人,软件之母,软件女神,计算机界的居里夫人,玛格丽特当之无愧!在人类登月50周年之际,向这位帮助人类梦想成真的巾帼英雄致敬!


作者文章

美国大学给留学生配学伴吗?

亲历麻省理工2019毕业典礼

7岁亚裔女孩一曲国歌嗨翻全美,她是谁?

前总统小布什给父亲老布什总统的悼词

以麻省理工的方式登月

2019年最佳膳食计划

推荐作者公号【七彩美国】


前文导读

50年前人类登上月球:那些不为人知的故事

两场陌生人的葬礼

布隆伯格MIT毕业典礼演讲:新的“登月”—做最伟大的一代人!

针对“普通”美国人的战争

独一无二——迈克尔·杰克逊

若有人间天堂,那便是瑞士

从女神到女囚

使女的故事——34年前就预示到今天趋势的书

 陌上美国 客观快捷的时评,和美国生活资讯。欢迎扫码或者点击开头蓝字关注。加我们的转发工作号,微信ID: moshangUS。



Modified on

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存