2026年9月30日,计算机科学先驱、阿波罗登月计划软件工程负责人玛格丽特·汉密尔顿(Margaret Hamilton) 逝世,享年90岁。10月7日,麻省理工学院(MIT)发表纪念文章,回顾了她为人类航天事业和现代软件工程作出的卓越贡献。
1969年7月20日,阿波罗11号成功登陆月球。人们记住了阿姆斯特朗迈出登月舱的历史性一步,却很少想到:在那次伟大的冒险背后,还有一位年轻的女性工程师,以及她带领的庞大软件开发团队。
她就是汉密尔顿。

一、那个软件尚未被认真对待的年代
20世纪60年代,计算机仍然是庞大而昂贵的机器,软件工程甚至还不是一个受到普遍认可的独立学科。
1936年出生的汉密尔顿,最初学习数学。1959年,她进入MIT,从事气象预测程序开发,随后参与美国SAGE防空系统的软件工作。
1965年,她加入阿波罗计划,成为MIT该项目最早的软件程序员,并逐渐担任飞行软件团队负责人。
当时,人类要把宇航员送上月球,不仅需要强大的火箭,还需要一套能够在极其有限的计算资源下稳定运行的控制软件。
汉密尔顿及其团队承担了这项前所未有的挑战。
二、登月前最惊险的几分钟
1969年7月,阿波罗11号登月舱“鹰号”正在接近月球表面。
就在即将着陆的关键时刻,机载计算机突然发出1202程序警报,意味着系统处理任务的负荷超出了预期。
如果计算机无法继续执行关键的导航和控制程序,登月就可能被迫中止。
然而,汉密尔顿团队设计的软件发挥了关键作用。
系统能够根据任务优先级调度程序,在计算资源不足时暂时舍弃非关键任务,确保登月所必需的计算继续执行。
这套设计使地面控制中心能够判断任务可以继续。
最终,阿波罗11号安全着陆。
这一事件成为计算机历史上的经典案例:优秀的软件不仅应该在正常情况下正确运行,还必须在异常发生时知道如何应对。
今天广泛应用于航空航天、汽车、工业控制和其他安全关键系统的容错设计、异常恢复与优先级调度,都体现着这种工程思想。
三、那些至今仍能读到的登月代码
汉密尔顿留下的遗产,不仅是历史记录,还包括真实的软件代码。
今天,在GitHub上仍然能够查阅阿波罗11号制导计算机的原始源代码:
Apollo 11 Guidance Computer Source Code — GitHub
这个开源存档保存了登月舱和指令舱制导计算机使用的汇编代码。
这些程序并不是由汉密尔顿一人写成,而是整个阿波罗软件团队协作的成果。她领导的团队在高峰时期涉及400多名工作人员。
代码中的指令、标签和注释,记录着半个多世纪前的工程师如何用极其有限的存储空间与计算能力,解决复杂的航天导航问题。
那是一段没有现代集成开发环境、没有云计算,也没有AI编程助手的岁月。
但这些工程师所追求的可靠性、严谨性与系统性,至今仍值得学习。
四、她为“软件工程”赋予了真正的意义
汉密尔顿的重要贡献远不止阿波罗计划。
她积极推动将软件开发视为与机械工程、电子工程同等严肃的工程学科,并推广使用“Software Engineering(软件工程)”这一术语。
在她看来,软件不能只依赖事后调试,更应该从系统设计之初就预防错误、管理复杂性,并对未知情况做好准备。
离开MIT后,她创办软件公司,继续研究高可靠性系统设计方法。
2016年,美国总统奥巴马向她颁发总统自由勋章,以表彰她对计算机科学和人类航天事业的贡献。
五、致敬一位真正的先驱
有一张著名的历史照片:年轻的汉密尔顿站在一摞几乎与自己等高的阿波罗飞行软件打印稿旁。
那些厚厚的纸张,是人类早期大型软件工程的见证,也是通往月球的一部分阶梯。
汉密尔顿曾回忆那段岁月:
“我们别无选择,只能成为先驱。”
如今,软件已经深入人类社会的每个角落,人工智能甚至开始参与软件的设计和编写。
但技术无论怎样演进,有些原则不会过时:尊重复杂性,敬畏风险,认真对待每一个可能发生的错误。
人类第一次登上月球,靠的不只是火箭的推力,也有代码的力量。
玛格丽特·汉密尔顿离开了我们,但她所开创的软件工程精神,将继续伴随人类探索更遥远的世界。
致敬玛格丽特·汉密尔顿,致敬所有用智慧、严谨与责任推动人类进步的工程师。
参考资料:
MIT News:Margaret Hamilton, computing pioneer who led software development for the Apollo program, dies at 90
https://news.mit.edu/2026/margaret-hamilton-computing-pioneer-dies-1007
GitHub:Apollo-11 原始代码存档
https://github.com/chrislgarry/Apollo-11