ARTICLE · 1199601
90岁登月代码之母谢幕!阿波罗11号源码刷屏GitHub,4KB内存看跪全网
2026年10月中旬,一句只有9个英文单词的帖子,突然在外网工程圈疯传。
“阿波罗11号的源代码,可以在GitHub上看到了。”
帖子只写了这一句话评论区里有人冷幽默地调侃:“太好了,现在谁都能在家手搓一个航天计划了。”

▲ 工程账号 World of Engineering 分享阿波罗11号源码仓库
这套被全球程序员翻来覆去研读的代码,来自一个早已斩获 7.53万星标、8200多次Fork 的传奇开源仓库:chrislgarry/Apollo-11。里面整整齐齐躺着两套汇编源码,指令舱程序 Comanche055,以及登月舱程序 Luminary099。
为什么一份57年前的陈年旧档案,会在2026年的秋天再次引来围观?
把日历往前翻两周,答案就藏在讣告栏里。2026年9月30日,当年领衔编写这套登月代码、并亲手为人类发明了“软件工程”一词的传奇女性,玛格丽特·汉密尔顿(Margaret Hamilton),在剑桥市走完了她90岁的人生。
当全世界的程序员点开那个仓库,其实是在用自己最熟悉的方式,向这位“代码之母”献上一束赛博鲜花。这几万行代码背后,是工程师在资源极限中护送人类登月的故事。
01节点一:1969年3月28日,那个留在第一页的签名
很多人以为,这个GitHub仓库是NASA某天心血来潮,一键把历史档案传上了网。
工程师Geoff在评论区补充了这些档案的来历。阿波罗11号的代码,原本是一摞堆起来和成年人一样高的纸质打印清单,静静躺在麻省理工学院(MIT)博物馆的档案室里。

▲ GitHub上斩获7.53万星标的 Apollo-11 源码仓库
在2000年代,独立研究者Paul Fjeld在博物馆协调员Deborah Douglas的协助下,把这些发黄的纸页一页页拍成数码照片。随后,全球志愿者对着扫描件,像考古学家一样把几万行AGC(阿波罗制导计算机)汇编语言,一个字符一个字符地重新敲进电脑,再由Virtual AGC项目配置好仿真器,最终才有了今天我们在GitHub上看到的模样。
打开指令舱源码文件夹,点开排在最前面的 CONTRACT_AND_APPROVALS.agc(合同与批准页),历史的气息会瞬间扑面而来。

▲ 指令舱代码批准文件的开头,可见转录来源说明与 Colossus 2A 标题
在这张用纯字符敲出来的表格里,清楚地写着:这套代号为 Colossus 2A 的程序,由MIT仪器实验室按合同为NASA准备。而在“提交人(SUBMITTED)”那一栏,排在第一位的名字正是:
MARGARET H. HAMILTON(玛格丽特·H·汉密尔顿),日期:1969年3月28日。
就在今年9月30日,这位在代码扉页上签下名字的老人永远离开了我们。《卫报》、BBC与《纽约时报》纷纷刊发长篇讣告。

▲ 《卫报》刊文悼念玛格丽特·汉密尔顿,享年90岁
回到1960年代初,当时的科技界是个彻头彻尾的“硬件帝国”。造火箭发动机的、焊晶体管电路的,才是实验室里的绝对核心。至于写软件?在当时的硬件大佬眼里,那不过是项目后期的“事后配置”(Afterthought),跟打字员把数学公式敲成打孔纸带没什么区别。
是汉密尔顿硬生生扭转了这种偏见她在MIT和NASA的协调会上,第一次底气十足地喊出了 “软件工程”(Software Engineering) 这个词。起初有人当面嘲笑她,觉得写代码哪配叫“工程”?但汉密尔顿用一套极其严苛的模块化接口、同行代码走查和变更审批制度告诉所有人:在距离地球38万公里的深空,火箭决定人类能不能飞出去,而软件,决定人类能不能活着回来。
02节点二:4KB内存与“老太太织毛衣”,难以改写的程序
如果你是一名现代程序员,看到阿波罗制导计算机(AGC)的硬件参数,大概率会直接两眼一黑。
阿波罗飞船上的计算机,体积差不多有一个微波炉大,重达70磅(约32公斤)。但它的算力有多寒酸?它的可读写内存(RAM)只有大约4KB,只读程序存储(ROM)只有72KB,CPU主频仅有2MHz。
4KB是什么概念?你现在在电脑桌面上新建一个完全空白的Word文档,它的文件大小都有12KB,足足是登月计算机内存的3倍!在微信里随便发一个动态表情包,都能把这台计算机撑爆几百次。
这72KB的程序被物理“织”进了一种叫 磁芯绳(Core Rope Memory) 的只读存储器里,飞行中无法直接改写这些存储内容。

▲ 硬件专家 Ken Shirriff 拆解“织进导线里的软件”:磁芯绳存储器
这份“针线活”是这样完成的:工人们拿着一根细长的铜线,穿过一个小磁环就代表数字 1,绕过这个磁环就代表数字 0。在雷神公司(Raytheon)的工厂里,经验丰富的女工们对着厚厚的二进制代码表,像织毛衣一样一针一线地把软件穿进磁环。当时的工程师甚至半开玩笑地把这种只读内存叫作 “LOL Memory”(Little Old Lady memory,老太太存储器)。
代码交付织绳前,必须反复校验织好的程序若有错误,往往要重新制作或更换模块。
在如此窒息的硬件牢笼里,这群天才工程师是怎么榨干每一个比特的?答案是:用极致的数学品味,去弥补硬件的贫瘠。
飞船调整姿态时会用到正弦计算以区间
内的
为例,取泰勒展开的前三个非零项,最大误差约为
;增加项数又会占用更多存储与计算时间。
怎么办?账号 @matheorems 扒出了源码里的神仙操作:

▲ Matheorems 绘制的对比图:给定区间内,AGC三项多项式的最大误差约为泰勒形式的四十分之一
工程师们依然只用了短短三项的多项式,但他们没有死板地照抄教科书上的泰勒系数。比如三次项系数
,泰勒公式的标准值是 -0.3229820,而AGC源码里存的却是 -0.3216147。
就这千分之一的微妙挪动,相当于把原本堆积在末尾的巨大误差,“熨平”成了均匀分布在整条曲线上的微小波浪。结果极其惊人:保持相同的三项多项式计算形式,最大误差直接降到了
,精度硬生生提升了40倍!
有限的计算资源里,几个常数的取舍也凝结着工程师的功力。
而在这群严谨到骨子里的极客身上,又藏着令人会心一笑的浪漫。当你翻开登月舱源码,最出圈的一个文件名字竟然叫:BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc(烧吧宝贝,烧吧,主点火例程)。

▲ 主点火例程的用途说明,以及 HONI SOIT QUI MAL Y PENSE、NOLI SE TANGERE 注释
这段代码干的是最要命的活,控制登月舱发动机点火;取的却是最摇滚的名字,灵感来自1960年代电台DJ放热门黑胶唱片时的口头禅。在代码的字里行间,你还能看到工程师留下的法语格言 HONI SOIT QUI MAL Y PENSE(愿心怀恶意者蒙羞),或是警告同事别乱动寄存器的 NOLI SE TANGERE(勿触碰我)。把最性命攸关的数学,写进最潇洒幽默的注释里,这就是黄金时代的极客精神。
03节点三:4岁小女孩按垮模拟器,一场被高层嘲笑的“杞人忧天”
如果阿波罗的代码只有精妙的数学公式,汉密尔顿还不足以被称为“现代软件工程的鼻祖”。她留给这个世界最宝贵的遗产,其实是四个字:防御性编程(Defensive Programming)。
而这一理念的诞生,源于一场极具戏剧性的“熊孩子闯祸事件”。
在阿波罗8号发射前的某个周末,汉密尔顿带着自己年仅4岁的女儿劳伦(Lauren)去MIT实验室加班。大人在忙着核对数据,小劳伦就爬进1:1还原的飞船模拟器座舱里,像弹钢琴一样在控制面板(DSKY)上乱按。
突然,模拟器警报大作,整个系统彻底死机!
汉密尔顿冲过去一查,冷汗直流:女儿无意中在键盘上敲出了 P01。什么是 P01?那是飞船还在地面发射台上时,用来做初始校准的程序。当时模拟器正处于“太空飞行”状态,一旦激活 P01,计算机会瞬间擦除飞船当前所有的实时星空坐标和导航数据,在太空中这无异于直接戳瞎飞船的双眼。
汉密尔顿立刻向NASA高层打报告:我们必须在代码里加几行“防呆校验”,如果系统检测到飞船已经在太空中飞行,就算宇航员按了 P01,系统也必须拒绝执行!
结果,NASA管理层一口回绝了她的提议。高层的理由听起来无懈可击:第一,磁芯绳内存太贵太挤了,不能浪费在这上面;第二,我们的宇航员全是从万里挑一的王牌试飞员里选出来的精英,“绝不可能犯4岁小女孩那样的低级错误”!
汉密尔顿拗不过高层,只能退而求其次,在厚厚的操作手册上加了一行醒目的警告注释。
然而,命运的回旋镖来得比火箭还快1968年圣诞节期间,阿波罗8号执行人类首次绕月飞行任务。在距离地球几十万公里的轨道上,传奇宇航员吉姆·洛威尔(Jim Lovell)因为极度疲劳,手指一滑,真的在键盘上误敲了 P01!
飞船瞬间丢失了所有导航基准!整个休斯顿控制中心吓得魂飞魄散。万幸的是,汉密尔顿和MIT团队早就对这一幕做过预案,连夜算出了全新的星空对准参数传回飞船,才把宇航员从鬼门关拉了回来。
这件事彻底打醒了NASA从此,航天界永远废除了“精英不会犯错”的傲慢假设。汉密尔顿坚持为操作者可能犯下的错误预留保护,让软件在意外面前也能守住安全。
04节点四:距月面9000米警报狂响,那几毫秒的“断臂求生”
所有的铺垫,都在 1969年7月20日 那天迎来了终极考验。
当时,阿波罗11号登月舱“鹰号”正在向月球表面急速下降,距离月面只剩最后9000多米。突然,座舱里的计算机屏幕疯狂闪烁,爆出了载入史册的 “1202”与“1201”程序警报!
问题出在交会雷达接口雷达在开启状态下产生了意料之外的中断负担,占用了约15%的计算时间,任务来不及完成,最终触发调度资源耗尽警报。
如果按照当时主流计算机采用的 “车厢式调度”(Boxcar Executive),也就是像绿皮火车时刻表一样,每个任务按固定时间片排队执行,只要有一个环节超时卡死,整列火车就会彻底脱轨。在离月面几千米的半空中重启死机,阿姆斯特朗和奥尔德林只有机毁人亡一条路。
但“鹰号”没有死机
因为汉密尔顿团队早就抛弃了死板的排队模式,为AGC设计了一套超前时代的 “异步抢占式优先级架构”(Asynchronous Executive)。
你可以把这套系统想象成急诊室里经验最老道的分诊医生:过载时,计算机通过重启保护机制恢复关键任务,舍弃部分非关键工作,优先维持制导、发动机控制与必要的显示,让下降过程得以继续。
计算机没有崩溃,它只是在用 1202 警报冷静地告诉人类:“我忙不过来了,但我已经替你们扔掉了不重要的包袱,请继续降落!”
几分钟后,“鹰号”稳稳落在静海基地当阿姆斯特朗迈出人类的一大步时,很少有人知道,是汉密尔顿团队写下的那套异步容错代码,在几毫秒的电光石火间,替全人类托住了下坠的飞船。
回到2026年10月的这波社交网络热潮,有一条高赞引用推文让人忍俊不禁。程序员Bartosz转发了阿波罗源码的消息,冷冷地问了一句:
“所以,已经有人用 Rust 语言把它重写一遍了吗?”

▲ 程序员玩梗:有没有人用主打内存安全的现代语言 Rust 重写阿波罗代码?
懂行的程序员看到这句话都会笑出声。在今天的软件圈,“用Rust重写一切”是个流行梗,因为Rust代表了现代编程语言对“内存安全”和“永不崩溃”的极致追求。
这个玩笑也像一份跨越半个世纪的致敬。今天我们用最先进的编译器、几百GB的内存去追求的“高可用、自愈合、防呆容错”,早在57年前,就已经被玛格丽特·汉密尔顿和她的团队,用铅笔写在纸上、用铜线织进磁环里了。
如今,90岁的汉密尔顿已经化作星辰,去往了她曾用代码丈量过的深空。而那份靜静躺在GitHub上的源码,依然对每一个普通人敞开。你不需要看懂每一行晦涩的汇编指令,只需要点开它,看一眼第一页的签名,再看一眼那句 BURN, BABY, BURN。
在4KB的方寸之间,一群聪明的工程师倾注了自己的敬畏与深情,只为把同伴平安带回家。















































































