Margaret Hamilton
1936年8月17日 – 2026年9月30日 · 计算机科学家 · 阿波罗飞控软件负责人 ·「软件工程」之母
玛格丽特·汉密尔顿领导的MIT团队为阿波罗计划编写了机载飞行软件——在一台内存只有现代手表零头的计算机上,引导乘组往返月球的代码。她在工作中同时发明了这个学科:软件工程这个术语就是她创造的,而在当时,这个说法被当作笑话。
悼念 — 玛格丽特·汉密尔顿,1936年8月17日 – 2026年9月30日
1936年8月17日 – 2026年9月30日 · 计算机科学家 · 阿波罗飞控软件负责人 ·「软件工程」之母
玛格丽特·汉密尔顿领导的MIT团队为阿波罗计划编写了机载飞行软件——在一台内存只有现代手表零头的计算机上,引导乘组往返月球的代码。她在工作中同时发明了这个学科:软件工程这个术语就是她创造的,而在当时,这个说法被当作笑话。
玛格丽特·希菲尔德1936年生于印第安纳州保利,部分成长于密歇根州上半岛,父亲是一位诗人兼哲学教授。她在厄勒姆学院主修数学、副修哲学,1958年毕业,同年与詹姆斯·汉密尔顿结婚。女儿劳伦生于1959年。
她本打算去布兰迪斯大学攻读抽象数学研究生。但为了供养丈夫读哈佛法学院,她在MIT接受了一份本应是临时的工作——为爱德华·洛伦兹(没错,混沌理论的洛伦兹)在LGP-30和PDP-1计算机上编写天气预报软件。当时没有编程课程,只能在实践中学习。她立刻就表现出色。
这把她带进了MIT林肯实验室和SAGE项目——这个覆盖整个大陆的防空系统,是最初要求软件绝不能失败的系统之一。在林肯实验室,汉密尔顿赢得了"能修好别人修不好的程序"的名声;同事们开始把最难、最怪的bug交给她。她在一台守护整个大陆的机器上学习容错。
1965年,MIT仪器实验室(后来的Draper)赢得了阿波罗机载制导的NASA合同。汉密尔顿是MIT阿波罗项目聘用的第一位程序员,也是第一位为之编程的女性。她从无人任务做起,逐步升任为载人指令舱和登月舱飞行软件团队的负责人。到1968年,她负责指令服务舱的软件;在工程高峰期,软件部门有超过400人为阿波罗编写代码。
她的代码必须驾驭的机器以微小著称:阿波罗制导计算机以约85千赫运行,磁芯绳存储器约72KB——名副其实地由"小老太太"们(工厂女工)将导线一根根手工穿过铁氧体磁环织成。软件不是写入这块存储器的;它是被织进去的。事后无法打补丁。
软件史上最好的故事之一属于一个孩子。劳伦·汉密尔顿当时约八岁,周末会跟着来实验室,在模拟器上扮演宇航员。某次来访中,她在模拟中途乱按键盘,在「飞行中」启动了一个发射前程序——清空了计算机的导航数据。汉密尔顿意识到发生了什么,主张加入错误检查,让该序列永远无法在飞行中执行。上面的回答是:宇航员受过永不犯错的训练;这不可能发生。
在阿波罗8号上,宇航员吉姆·洛弗尔——做了和劳伦一模一样的事——误启动了同一个程序,在绕月飞行时清空了导航数据。汉密尔顿的团队昼夜工作,重建数据表,把乘组带回家。她要求的检查后来加上了。每个程序员都懂得这个教训:人能做的操作,人迟早会做。
她最深的执念是错误处理——在当时是激进的立场。软件被认为要么正常要么失败;汉密尔顿坚持它必须穿越故障继续工作:告诉乘组哪里出了问题,并优先保护最高优先级的工作。阿波罗软件运行在优先级调度执行器之下,配有"优先级显示",把警报摆到台面上而不是藏起来。
1969年7月20日。阿波罗11号向静海下降,制导计算机开始鸣响1201和1202执行器溢出警报——交会雷达正在向机器输送它不需要的数据,要求的超出了机器的能力。汉密尔顿的设计做出了她设计它做的事:丢弃低优先级工作,继续驾驶着陆,并告诉乘组正在发生什么。在休斯敦,24岁的工程师杰克·加曼——他把警报代码背了下来——向飞行总监史蒂夫·贝尔斯解释警报的含义。指令传上去:「继续」。阿姆斯特朗和奥尔德林着陆了。
她留给我们的教训:警报不是故障——而是系统在没人能完全预见的条件下,做出它被设计来做的事。编写在挣扎时说真话的软件、给重要之事排序的软件、优雅降级而非默默死去的软件。这个思想——错误是被设计的行为而非意外——至今仍是良好工程的核心,也是在代码运行之前就分析它的工具背后的同一种直觉。
当汉密尔顿开始称他们的工作为「软件工程」时,资深同事们笑了——硬件才是工程;软件只是敲键盘。她坚持使用这个词,直到工作本身让它无可辩驳:一门有需求、设计、测试、仿真和评审的学科。这个说法活过了怀疑者。如今它是这个行业的名字——而她不只是造了它,她在通往月球的路上示范了它的含义。
汉密尔顿用随后的数十年把阿波罗教给她的东西形式化:系统应当从设计上正确,而不是事后调试到正确。1976年她共同创立了Higher Order Software,产出了设计工具USE.IT——系统按公理规则描述,使整类错误在一行代码运行之前就被阻止。1986年她在剑桥创立了Hamilton Technologies,开发通用系统语言(USL)及其001工具套件——「事实之前的开发」,让软件继承其所服务系统之严谨的体系工程。她领导这项工作直至生命终点。
汉密尔顿于2026年9月30日在剑桥逝世——就在她初次领悟软件可以成为何物的实验室的视线之内。享年90岁。身后留下女儿劳伦——那个曾用小手指找到NASA流程未能发现的bug的女孩——一位女婿、两个孙子和四个曾孙。NASA局长称她为"一位先驱,她的工作使阿波罗和人类首次登月之旅成为可能"。剑桥将举行追悼仪式。
"没有第二次机会。我们知道这一点。我们认真对待自己的工作,我们中许多人开始这段旅程时才二十出头……我们必须找到一条路,并且找到了。回头看,我们是世界上最幸运的人;除了做先驱,别无选择。"
本站的存在是为了教人编程。汉密尔顿证明了编程可以承载人命的重量——而这需要严谨、谦逊,以及为你祈祷永不降临的故障做设计的意愿。一位午夜在实验室调试的母亲、一台在降向静海途中拒绝放弃的计算机、一个她身体力行使之成真的词——工程。这正是巨人的肩膀存在的意义。