麻省理工学院官方确认,阿波罗计划机载飞行软件工程团队负责人、现代软件工程先驱玛格丽特·汉密尔顿(Margaret Hamilton)于2026年9月30日逝世,享年90岁,追思会计划于2027年春季在马萨诸塞州剑桥举行。汉密尔顿一生发表超过130篇著作,先后于2003年获颁NASA杰出太空法案奖,2016年获得总统自由勋章,并在2017年入选计算机历史博物馆院士。
在大众流行文化的叙事中,汉密尔顿最为人熟知的形象,是那张站在一人多高打印代码旁边的黑白照片,甚至常被误传为她一人写完了全部登月程序。这恰恰低估了她真正的历史重量:她从来不是孤胆程序员,而是在硬件至上的蛮荒年代,统领一支数百人团队制定系统架构的总工程师。她力排众议确立软件工程这一独立学科,让冰冷的代码具备在极端未知面前挽救宇航员生命的工程确定性。
极度匮乏的硬件算力,逼出分层调度的软件骨骼
1965年汉密尔顿受聘进入MIT仪器实验室(后来的德雷珀实验室),成为阿波罗项目的第一位程序员,并在1968年升任指令舱与服务舱团队助理总监。当时的主流工业界将硬件视作核心资产,软件则被贬低为附属于硬件的黑盒灌装包。汉密尔顿坚持使用软件工程(Software Engineering)一词来定义这项工作,一度引来传统工程界的讥讽,但阿波罗制导计算机(AGC)的极端物理限制,很快证明了她的前瞻性。
AGC的代码主要采用汇编语言编写,依托MIT自研的YUL工具链完成汇编编译。指令舱运行代号为Comanche 055的机载软件,登月舱则运行代号为Luminary 099的版本。在内存容量仅有区区几千字节的极度严苛条件下,汉密尔顿团队没有条件构建现代意义上的抢占式操作系统,而是自研了一套高精度的异步实时调度体系。
这套架构的核心由两大调度组件构成:负责定时与延迟任务的中断驱动服务WAITLIST,以及负责管理优先级队列的作业调度器EXECUTIVE。EXECUTIVE通过管理少量的Core Set工作区以及NOVAC/VAC向量累加区来维护作业流。
更关键的设计在于人机界面与底层核心的解耦。汉密尔顿主导设计的优先显示(Priority Displays)模块,内置了PRIODSP、MAKEPRIO等控制例程。该设计让宇航员操作的DSKY显示键盘单元能够随时显示突发报警,却绝不直接抢占或破坏底层的动力导航计算。正是这种层次分明的架构,在阿波罗11号登月的惊魂瞬间挽救了整场任务。
登月惊魂102秒:1201与1202警报背后的软失效机制
1969年7月20日,阿波罗11号登月舱飞鹰号正在向月球表面降落。在距离月面仅剩数分钟的关键阶段,机载计算机突然发出蜂鸣并闪烁错误代码。
许多科普叙事将这一刻归纳为电脑智能地忽略了报错,这完全背离了底层的工程实情。当时,由于机载交会雷达的硬件开关处于错误位置,硬件接口以每秒数百次的高频持续发送偷周期中断信号,向处理器倾泻海量虚假数据;同时宇航员奥尔德林在键盘上频繁调用16/68显示指令以监控高度和速度。两股负载并发叠加,AGC的有限内存瞬间见底。
系统先是因Core Set作业槽耗尽触发了1202警报,随后又因VAC向量累加区用尽抛出了1201警报。在常规系统早已死锁或宕机的悬崖边,汉密尔顿带领团队设计的重启保护与软失效(fail-soft)机制开始生效:系统自动重启并在毫秒内重构运行栈,严格依据任务优先级表,粗暴切断并抛弃了处理雷达虚假信号与界面刷新的低级别开销,将算力牢牢锁定在发动机节流控制、姿态保持与下降制导上。
真正的系统鲁棒性,不是假设故障永不发生,而是在崩溃临头时能精准丢车保帅。
地面指挥中心收到了计算连续有效的确认,准许降落继续,阿姆斯特朗与奥尔德林最终平稳着陆。这套在算力悬崖上保持确定性的软失效机制,让软件工程确立了无可动摇的工程地位。
击碎零失误神话,400人工业化协作的真正范式
汉密尔顿对可靠性的偏执,源于早期打破行业盲区的斗争。在模拟阶段,她4岁的女儿劳伦在实验室内触动控制台,在模拟飞行中意外启动了发射前校验程序P01,导致模拟机瞬间崩溃。汉密尔顿敏锐地意识到人机交互回路上的人为缺陷,提出在代码中加入防御性检测逻辑,防止飞行中误调P01。
这一提议当即遭到NASA高层否决,理由是宇航员经过严苛训练,绝不可能犯下这种低级错误。然而在1968年的阿波罗8号任务中,宇航员吉姆·洛威尔(Jim Lovell)在飞行途中确实误操作调出了P01程序,导致机载关键导航数据全数被清空。汉密尔顿团队被紧急召集排障,最终通过上传补丁拯救了飞船。此后,防御性编程(Defensive Programming)彻底成为载人航天代码的标准规范。
那张广为流传的堆叠代码照片,实际上代表着MIT仪器实验室超过400人团队的工业化智慧。软件能够托起登月舱,离不开Richard Battin、Hal Laning、Dan Lickly以及Don Eyles等顶尖系统专家的协同攻坚。汉密尔顿的核心角色,是作为架构总师在混沌无序的软件早期探索中,搭建起测试矩阵、人机回路校验与容错标准。
离开MIT仪器实验室后,汉密尔顿于1976年创办Higher Order Software,随后于1986年成立Hamilton Technologies,推出以预防错误与防御性架构为核心的通用系统语言(USL)。
- 结论.软件从不是硬件的辅助装配零件;在今天自动驾驶与航天控制等复杂系统中,汉密尔顿留下的软失效设计与防御性编程,依然是高可靠系统的底层生命线。
