计算机科学创新者谈论她如何领导阿波罗11号登月任务的软件开发
巴拉克·奥巴马(Barack Obama)授予玛格丽特·汉密尔顿(Margaret Hamilton)2016年总统自由勋章计算机科学先驱
玛格丽特·汉密尔顿 (
Margaret Hamilton)在将宇航员降落在月球上起了关键作用,这是50年前的1969年7月20日首次发生,并在几天后安全地将其送回了家。 麻省理工学院的一位年轻的女程序员带着一个小孩,管理着一个团队,该团队为包括
阿波罗11号在内的
阿波罗任务创建了机载飞行软件。 这个计算机系统是当时最困难的系统之一。 她严格的编程方法非常成功,以至于在阿波罗(Apollo)载人任务期间没有发生软件错误。 巴拉克·奥巴马总统在2016年向汉密尔顿授予“
总统自由勋章” ,这是美国最高的平民
奖章 ,他说:“这标志着帮助将人类送入太空的年轻女性的一代。” 2017年,她成为为NASA工作的少数女性之一,并以乐高人物的形式永垂不朽。 在第一次登月50周年之际,现年82岁的汉密尔顿(Hamilton)回顾了她在计算机技术方面的开拓性工作。
你为什么要开始编程? 当您开始学习时,没有计算机科学学位...我于1958年结婚,当时我获得了厄尔勒姆学院的数学文凭和哲学博士学位。 我们俩都可以去读研究生-我是抽象数学专业,我的丈夫是化学专业-但是我在高中任教一年,我们有一个女儿,我的丈夫决定他想在哈佛获得法学学位。 我在附近的麻省理工学院找到了一份为家人服务的工作。 这项工作是在混沌理论之父爱德华·洛伦兹教授的实验室中进行的,目的是开发一种可以预测天气的系统。 他需要毕业生接受数学教育。 我们雇了一个保姆照顾她的女儿。 在那里,我了解了什么是计算机以及如何编写软件。 计算机科学和程序设计尚未作为独立的学科而存在。 程序员在工作中就学习了。 洛伦兹(Lorentz)对软件进行试验的热爱极富感染力,所以我被感染了。
您是如何进入1964年的Apollo项目的?从编写程序开始,我继续在麻省理工学院的林肯实验室寻找敌机。 我打算在丈夫在报纸上看到广告时回到研究生院。 麻省理工学院测量仪器实验室正在寻找人们开发用于“将人送上月球”的软件。 实验室从NASA获得了一份合同,为Apollo项目创建机载飞行软件,因为她还为此开发了计算设备。 这个想法本身以及以前没人做过的事实吸引了我。 我是他们雇用的第一位程序员和第一位女性。 男性工程师已经在从事该项目,但他们在电子领域,这不是他们的专长。 我已经有这样的经历。 我认为他们在实验室里决定我要应对一些新事物。
您首先是在Apollo无人任务软件上工作的。 但是后来您逐渐升任负责载人飞船软件(包括阿波罗11号)的团队负责人。 您的责任是什么?有两台机载计算机-一台在哥伦比亚命令模块上,另一台在登月鹰上。 我们的任务是开发应该在每个模块上单独运行的软件以及它们的通用软件。 最初,没有人认为软件会是一个如此重要的问题。 但是,逐渐地,每个人都开始了解多少东西取决于他。 我们团队的发展如此之快,以至于大约有100位程序员在团队中工作。 宇航员的生命危在旦夕。 我们的软件必须极其可靠,并且必须能够在任务执行期间随时检测错误并从错误中恢复。 所有这一切都应该对应于铁。
玛格丽特·汉密尔顿(Margaret Hamilton)在1969年列出了她的团队为阿波罗任务开发的软件代码您在兼职程序员和母亲方面遇到问题吗?通常在晚上或周末,我带小女儿劳伦(Lauren)一起工作。 一旦我们在一起,我就模拟了飞向月球的任务。 她喜欢模仿我,扮演宇航员。 她开始按下按键,突然启动了模拟。 然后她按了更多的键,模拟失败了。 她选择了一个应该在发射前运行的程序-但与此同时,模拟已经“飞向”月球。 计算机的内存太少,以至于擦除了飞行所需的所有导航数据。 我以为:天哪,这可能是在真正的任务中偶然发生的。 我建议更改程序,以防止在飞行过程中启动预启动段。
但是,麻省理工学院和NASA当局认为,宇航员受过良好的训练,不会犯这样的错误。 在飞行中,下一次飞行任务中,机上的一名宇航员阿波罗8号(Apollo 8)意外地做了劳伦(Lauren)所做的事情。 错误劳伦! 我举起双手,坚持要重新配置任务。 之后,他们当然已经允许对程序进行更改。
宇航员将大部分荣耀归功于月亮。 但是,他们使用您创建的系统警告飞行中的紧急情况。 正如奥巴马所说:“我们的宇航员没有太多时间,但是幸运的是,他们有玛格丽特·汉密尔顿。”着陆前不久,计算机的优先显示屏上出现紧急警告,并且计算机超载。 我站在麻省理工学院的控制中心看到了这一切的发生。 之后,我们重新创建了这种情况-雷达开关的位置不正确,并占用了处理器的电源。 很快就变得很清楚,该软件不仅可以向人们通报硬件问题,而且可以补偿他们-具有最高优先级的重新加载和重新分配的任务。 错误检测和恢复机制得以挽救。 当他们坐下时,每个人都松了一口气-宇航员很好,并且软件运行良好。
据我了解,在女性编程初期,有很多东西。 人们认为这是妇女的工作 。 根据您的经验,是这样吗?编程从未被认为是女性工作,至少在我从事的许多项目中没有。 手工计算人员绝大多数是女性,许多女性使用机械计算器,例如
Marchant ,但他们不是程序员。 他们没有写代码。 当我开始从事Apollo项目时,没有更多的女性编写代码。 然后,几年后,很少有女性出现-其中一些为我工作。 总是有更多的男人。
男人有惹恼你吗?当我取得控制权时,其中一位最高领导说他对我的能力毫无疑问,但他担心我团队中的某些人可能会引起骚乱。 但这没有发生。 最重要的是,我们专注于任务,并肩并肩解决了复杂的问题,力争在关键的时间框架内按时完成。 我也很幸运有一个非常现代的丈夫,尤其是那个时候。 有些人理解平等。
您发明或至少普及了术语软件工程[软件开发,软件技术]。 他为什么需要提出一个新名字?在阿波罗(Apollo)的早期,程序没有像其他工程学科那样受到重视。 尽管我们的系统由许多组成部分组成,但却相当复杂,但是我们并没有获得在真正严肃领域中的认可。 出于绝望,我创造了这个术语,好像在声明:“嘿,我们实际上也是工程师。” 长期以来,这被认为是个玩笑。 然后有一天,在一次会议上,一位最受尊敬的铁匠向所有人解释说,他同意我的看法。 与硬件一样,创建软件的过程也需要被视为工程学科。 那是一个难忘的时刻。
玛格丽特·汉密尔顿(Margaret Hamilton)以来自美国宇航局(NASA)妇女系列的乐高积木形式永生在Apollo之后,您的部分代码在Skylab(第一个空间站)中使用,然后在航天飞机程序中使用。 您创建了自己的公司,并利用自己的经验来开发更实惠,更可靠的软件。 程序员今天可以从Apollo项目中学到什么课程?最近,我们遇到了
导致飞机坠毁的系统,飞行员不知道发生了什么。 而且,尽管Apollo项目的工作原理有所不同,但显而易见的是,最好预先定义系统以最大程度地减少错误的数量,而不是立即发布一堆代码,然后再用补丁程序进行修复,然后再进行补丁程序。 。 显然,这一课仍然没有学到-在这一方面,今天的软件开发方式与50年前相同。
有一张1969年的著名照片,您站在一堆印刷的阿波罗任务代码旁边,几乎和您一样高。 最近,该图像与凯蒂·鲍曼(Katie Bowman)的照片进行了比较,凯蒂·鲍曼(Katie Bowman)帮助开发了创建黑洞最早图像的算法。 她摆着一堆她的项目的硬盘驱动器,而这张照片蒙太奇也变得风靡一时。 您还记得如何拍摄这张照片,以及您从这次比较中学到了什么吗?这张照片是由麻省理工学院的一位摄影师专门为报纸拍摄的,在阿波罗11号任务期间拍摄。 我们被带走了,从我办公室里的阿波罗手中拿走了所有物品,并建造了这座塔。 我试图找到一种方法使她保持直立。 在我看来,这样的比较并不坏。 至少他们没有隐藏我们。 尽管我不羡慕鲍曼,但她必须与所有可以在互联网上传播的讽刺作斗争。 从某种意义上说,今天的妇女情况变得更糟。
您对想在编程领域发展职业的年轻女性有什么建议?不要让恐惧抓住你,也不要害怕说“我不知道”或“我不明白”-没有愚蠢的问题。 并且不要100%相信所谓的专家!