登月软件负责人 90 岁去世,「人会犯错」是她写代码的前提

登月软件负责人 90 岁去世,「人会犯错」是她写代码的前提

航天软件工程Margaret Hamilton

数据源:MIT News 讣告 + Hacker News 讨论

2026 年 9 月 30 日,阿波罗登月软件负责人 Margaret Hamilton 去世,享年 90 岁。1969 年 7 月 20 日,阿波罗 11 号「鹰」号登月舱在距离月球表面只剩最后几分钟时,机载导航计算机亮起 1202 过载报警:一个不该打开的雷达开关把海量无用数据灌进内存,计算机可能处理不完着陆流程。警报没有变成中止着陆的命令,因为软件提前定好了过载时该丢什么 —— 它砍掉低优先级的活,把算力留给姿态控制。

写这套优先级调度的人叫 Margaret Hamilton。她是阿波罗项目招进来的第一位程序员,到 1968 年已经带着 400 多人的软件团队,负责指令舱与服务舱的飞行软件。登月舱最后那几分钟能继续走下去,靠的是她提前把「人一定会犯错」写进了系统的设计前提。

预测天气与防空雷达,奠定错误预防工程底色

Margaret Hamilton 对软件容错的执念,早在接触阿波罗计划前就已经埋下。1958 年她在 Earlham College 拿到数学学士学位。她随后进入 MIT 气象系,师从 Edward N. Lorenz 开发天气预报软件。气象数据的运算高度敏感。微小的初始误差经过数十次迭代,就会在输出端演变成灾难性偏差。这段给混沌理论打下基础的代码开发经历,让她直观感受到了系统面对输入误差时的天然脆弱。

1961 年,她调入 MIT 林肯实验室参与美国第一个防空系统 SAGE 项目。在为 AN/FSQ-7 原型机编写防空雷达数据处理软件时,系统崩溃的代价从天气预报偏差直接变成了潜在的军事灾难。在那个大家只关心硬件制造的年代,软件可靠性在业内还是一片荒原。两次高风险领域的实战经验让她确信,代码绝对不能只考虑理想状态下的逻辑流,工程师必须把输入数据的突发变异作为核心防范目标。

1965 年,她通过一份报纸上的招聘广告,成为了阿波罗计划的第一位程序员。带着从气象与防空领域培养出的悲观但无比牢靠的系统观,她开始将这一套容错法则强行注入当时重硬件轻软件的登月工程中。

四岁女孩搞崩模拟器,逼出防御式编程实战

在阿波罗项目中一战成名的底层容错代码,源自一次典型的用户误操作。Hamilton 有时会把四岁的女儿 Lauren 带到实验室加班。有一次,小女孩在玩指令舱模拟器时,无意间敲击键盘触发了名为 P01 的发射前程序,直接导致整个模拟飞行系统在半空中陷入死机。

这次意外暴露出当时系统架构的一个核心盲点。当时的硬件工程师们坚信,经过千万次训练的顶尖宇航员绝不会在飞行阶段去按不该按的开关。因此管理层以增加代码工作量为由,否决了 Hamilton 在底层增加拦截指令的提议。

1969 年在 MIT 拍摄的照片 图:1969 年年轻的 Hamilton 站在一摞阿波罗飞行代码打印稿旁,代码量达到了惊人的高度。来源:MIT News

现实很快证明了盲目自信的代价。1968 年阿波罗 8 号任务中,宇航员 Jim Lovell 真的在太空中按错了 P01 键,导致飞船上的关键导航数据全部清空。团队手忙脚乱地把飞船导航系统拉回正轨,同时也为之前的傲慢付出了代价。这起惊险的太空事故迫使 NASA 接受了她的代码拦截方案,在行业内催生了「防御式编程」这个影响深远的早期实战案例。

强行造出「软件工程」,争夺系统架构话语权

在二十世纪六十年代的主流语境里,开发软件甚至算不上一门被承认的工程科学。登月计划的核心显然是巨大的火箭和闪烁的仪表,敲击代码仅仅被视作一种类似打字员的机械操作。

为了给这套必须接管飞船生死的系统争取开发资源,Hamilton 首创了「软件工程(software engineering)」这个全新术语。她在各类会议上要求将软件与硬件同等对待。她坚持分配对等级别的测试资源与验证权重。她在 2018 年接受采访时回忆,由于把写代码称作「工程」听起来太过荒谬,这种激进的想法长期被同僚们当成笑话。

不过事情的发展很快容不得半点轻视。随着阿波罗软件团队膨胀到 400 人规模,纸带上打出的每一行逻辑分支接管了指令舱与服务舱的中枢神经。庞大的代码量和严苛的实时运行要求逼迫整个行业摒弃偏见,用一套严密的系统工程标准重新定义了软件开发的规矩。

砍掉非核心运算,换来历史性平稳着陆

登月任务最后时刻,是对这套软件架构的最终检验。报警来自硬件故障:雷达把大量无用数据强行塞进内存,本就不宽裕的算力被占满,运算队列随时可能瘫痪。

Hamilton 团队写下的任务调度逻辑在这里发挥作用:计算机识别出雷达数据属于低优先级任务并把它丢掉,只保留姿态调整和核心着陆程序。休斯顿指挥中心信任这套逻辑,允许任务继续。两名人类第一次踏上月球表面。

2016 年 11 月 22 日,奥巴马在白宫东厅为 Hamilton 佩戴总统自由勋章 图:2016 年 11 月 22 日奥巴马在白宫东厅为 Hamilton 佩戴总统自由勋章。来源:白宫

拒绝豪赌人为完美,用冷酷调度接住底线

在阿波罗项目成功之后,这位传奇工程师继续推进容错研究。她在 1976 年创立了 Higher Order Software,随后又成立了 Hamilton Technologies 公司并推出主打系统稳定性的 USL 架构。她一生发表了 130 多篇学术论文,将软件错误预防的理念推向整个工业界。

除了 2016 年拿下的总统自由勋章和 2017 年乐高为其专门推出的科技人仔,她留给这颗星球最深远的印记依然是写在底层代码里的清醒。正如 MIT 航空与航天系临时主任 Olivier de Weck 所言,只称呼她为先驱实际上严重低估了她的贡献。

**她留下的东西是一条设计前提:系统必须假设硬件会坏、人会按错,然后提前决定丢什么、保什么。**阿波罗 11 号最后那几分钟,就是这条前提的一次实地验收。

参考链接:

  • MIT News 讣告
  • Hacker News 讨论
  • El Pais 2018 年访谈
  • MIT News 2009 年阿波罗口述