ARTICLE · 1200902
阿波罗11号登月源码狂揽7.5万星!打开全是段子,内存竟靠女工一针一线织出来
如果你点开人类历史上最伟大工程的核心代码,你以为会看到什么?
是冷酷到极致的微积分方程?还是密密麻麻、神圣不可侵犯的机器指令?
最近,工程账号的一句推文又让这份老代码受到关注:“阿波罗11号的源代码,在GitHub上就能看。”

▲ 工程账号 World of Engineering 发帖提醒读者,可以在 GitHub 阅读1969年的登月代码
无数程序员与好奇的网友顺着链接涌进这个名叫 chrislgarry/Apollo-11 的开源仓库。然而,当人们怀着朝圣般的心情点开文件夹时,全都看傻了。
控制登月舱点火的生死程序,文件名居然叫 “烧吧宝贝烧吧”(BURN_BABY_BURN)。检查雷达天线时,程序员在代码旁边悄悄吐槽宇航员:“核实这哥们的话”(SEE IF HE'S LYING)。甚至在一处关键调用旁,赫然写着一句卑微的祈祷:“临时代码,我希望、希望、希望它是临时的!”
这些注释让航天档案有了温度,仿佛还能听到工程师们在长夜里随口开的玩笑。
01藏在7.5万颗星里的“1969年时间胶囊”
在 GitHub 上,这个收录了阿波罗11号制导计算机(AGC)原始代码的仓库,已经狂揽了 7.52万颗星(Stars)。

▲ GitHub 上的 chrislgarry/Apollo-11 仓库主页,收录了指令舱与登月舱两套完整主程序
仓库里整整齐齐地躺着两个主文件夹:Comanche055 和 Luminary099。前者装进指令舱,负责把飞船送往月球轨道并带回地球;后者装进登月舱,负责那惊心动魄的最后一落。
尽管这批代码是用极其晦涩的 AGC 汇编语言写成的,哪怕资深程序员看一眼也会头皮发麻,但代码旁边的英文注释和文件名,却让全世界所有人都读懂了1960年代的冷幽默。
随便翻开登月舱源码,扑面而来的都是“精神状态极其美丽”的命名。
最出圈的当属 BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc。这是登月舱的主点火例程,掌管着火箭发动机推力的生杀大权。谁能想到,MIT(麻省理工学院)的程序员直接借用了1960年代黑人电台 DJ Magnificent Montague 最火的打碟口头禅,“Burn, baby! BURN!”(燃起来吧,宝贝!)。

▲ 登月舱主点火例程文件页,可见文件名、用途和 MIT 博物馆纸质清单转录说明
如果继续往里翻,你会发现当年程序员对宇航员的“贴脸开大”。
在登月流程文件 THE_LUNAR_LANDING.agc 中,有一段专门检查着陆雷达天线有没有就位的代码。程序员直接在汇编指令旁用宇航员的口吻配上了内心戏:“宇航员:请把这小玩意儿摇到位”(PLEASE CRANK THE SILLY THING AROUND)。
紧接着,当宇航员按下“继续(Proceed)”按钮表示已经摇好天线后,下一行检查代码的注释冷冷地写道:“核实他的话”(SEE IF HE'S LYING)。
一旦确认无误,程序跳转到点火例程 BURNBABY,旁边的注释瞬间变成了《绿野仙踪》里的经典台词:“出发去见魔法师喽……”(OFF TO SEE THE WIZARD...)。等飞船落稳月球表面,确认阶段的注释又补了一刀:“现在看看你停在了什么地方”(NOW LOOK WHERE YOU ENDED UP)。
还有人把仓库里的神仙注释整理成了一份必看清单:把不起眼的辅助程序包命名为 “垃圾小例程”(TRASHY LITTLE SUBROUTINES);在宇航员交互界面代码里抄录莎士比亚《亨利六世》的台词;在一段应急代码旁连写三个 HOPE:TEMPORARY, I HOPE HOPE HOPE。

▲ 网友整理的阿波罗11号“神仙注释合集”,每一条都透着程序员跨越半个世纪的共鸣
为什么在决定宇航员生死的登月代码里,会塞满如此放飞自我的段子?
当时的软件工程仍在发展,工程师们常常面对纸质程序清单。几百页代码印在厚厚的折叠打印纸上,人工审阅也是检查程序的一环。那些看似荒诞的玩笑、俚语和莎士比亚诗句,成了清单里醒目的“路标”,给枯燥的内存地址跳转留下了记忆的锚点。
02靠志愿者手敲出来的源码,与太空里的“弹球机”
这个 GitHub 仓库的背后,还有一段志愿者保存历史代码的故事。

▲ 评论区介绍了志愿者从 MIT 博物馆纸质档案逐行转录源码的工作
阿波罗计划结束后,成箱的纸质源码清单被锁进了麻省理工学院博物馆(MIT Museum)的档案室。几十年后,志愿者 Paul Fjeld 等人把这些发黄的纸页一张张拍成照片;随后,研究者 Ron Burkey 发起 Virtual AGC 项目,带着志愿者对着模糊的扫描件,像愚公移山一样把数万行代码重新敲进现代电脑,甚至写出了模拟器让它们重新跑起来。直到2016年,前 NASA 实习生 Chris Garry 将其整理上传到 GitHub,这批沉睡半个世纪的代码受到更多普通读者关注。
而在翻阅这些代码时,许多新手都会对一个文件名感到困惑:PINBALL_GAME_BUTTONS_AND_LIGHTS.agc(弹球游戏按钮与灯光)。
登月飞船里怎么会有弹球机?
这正是阿波罗计算机最天才的人机交互设计。当时的飞船通过一个名叫 DSKY 的小控制面板与宇航员交互:上面只有几个数字键、几个指示灯和绿色数字显示器。
宇航员怎么跟飞船对话?工程师们发明了一套“动词(Verb)+ 名词(Noun)”的语法。比如,宇航员想让计算机“显示(动词)”“当前速度(名词)”,只需要在键盘上敲入对应的两个两位数代码,再按回车。整套操作伴随着指示灯闪烁和按键咔哒声,极像当时美国街机厅里最流行的弹球机(Pinball)。于是,负责这套按键与灯光交互的底层代码,就被顺理成章地起名为“弹球游戏”。
哪怕在最严肃的工程黑话里,这群先驱也用最直觉的比喻,抹平了人类与机器之间的鸿沟。
03几KB内存与“老太太织出来的代码”
看完了软件里的幽默,如果你再往下深挖一层,看看这批代码运行的硬件环境,你的笑声会立刻变成深深的敬畏。
今天,我们手机里随便一张自拍照片就有几兆(MB),随便一个聊天软件就要吃掉几百兆内存。而当年把三位宇航员送上38万公里外月球的阿波罗制导计算机,配置低到令人窒息:
- 主频
:1.024 MHz(不到今天普通手机芯片的千分之一); - 内存(RAM)
:只有 2048 个字,按每字15位数据折合大约 3.8 KB; - 只读存储(ROM)
:36,864 个字,计入每字1位校验位折合 72 KiB; - 整机功耗
:55瓦到70瓦,比你家里老式白炽灯泡还要省电。
这约72 KB的固定存储器,由熟练女工用特制穿线针,把程序一针一线“织”进硬件!
在1960年代,硅基闪存还没发明为了在有限空间里可靠保存程序,MIT 实验室采用了一种物理存储技术,绳式磁芯内存(Core Rope Memory)。
它的原理简单粗暴到极致:盒子里面排列着几千个只有几毫米宽的微型金属磁环。
如果一根细铜线穿过磁环中心,通电时产生感应电压,就代表二进制的 1;如果这根铜线绕过磁环外侧,没有感应信号,就代表二进制的 0。
为了让小小的盒子里塞进几万行登月代码,每个磁芯对应 192条感应线,可存12个16位字。雷神公司把自动定位与手工穿线结合起来,完成这项精细活。于是,承包商雷神公司(Raytheon)直接从新英格兰的纺织厂和沃尔瑟姆钟表厂,请来了一大批眼明手快的资深女工。
机器读取程序汇编后生成的穿孔带,将相应磁芯移到位置;女工再用特制穿线针,把细铜线穿入指定位置。当时的年轻男工程师们,甚至在内部半开玩笑地把这种存储器叫做 “LOL Memory”(Little Old Lady memory,老太太内存)。
程序必须提前冻结,留出制造与测试的时间。穿线完成的模块会经过测试,再用环氧树脂封装保护。修改固定程序往往意味着重新制造相应模块,难以临时打补丁。
明白这一点,你再回头看那行 TEMPORARY, I HOPE HOPE HOPE(临时代码,我希望它是临时的),背脊就会微微发凉。Hacker News 上有技术讨论指出,这处 STOPRATE 调用用于在切换到半手动下降程序时清零姿态变化率指令,后来在阿波罗14号所用软件的发布前修订中被移除。

▲ Hacker News 讨论中,有人解释了 STOPRATE 调用的作用及阿波罗14号软件发布前的修订
这台计算机的逻辑电路由约 5600个三输入“或非门”(NOR Gate) 构成。阿波罗项目的大量采购,也为早期集成电路产业的发展提供了推动力。
04距离月面几千英尺的死神,与“软件工程”的诞生
当这台塞满段子、由女工织出内存、功耗只有55瓦的计算机飞抵月球上空时,死神突然敲门了。
1969年7月20日,阿波罗11号登月舱“鹰号”开始向月面下降。就在距离月面仅几千英尺的生死关头,交会雷达接口产生的额外脉冲占用了大量计算周期。
计算机的任务调度资源耗尽,触发了著名的 “1202警报”。
计算机通过软件重启恢复关键制导和控制任务,舍弃部分较低优先级工作。地面团队确认可以继续下降,阿姆斯特朗随后操控登月舱着陆。NASA 保存的程序警报回顾记录了这套恢复机制。
这批飞行软件背后,有一支由 MIT 软件负责人 Margaret Hamilton(玛格丽特·汉密尔顿)领导的团队。
优先级调度与重启保护凝聚了多位工程师的工作。Hamilton 领导的团队参与开发、测试飞行软件,让它在异常情况下仍能执行关键任务。
Margaret Hamilton 也帮助推广了一个后来广为人知的词,“软件工程”(Software Engineering)。
为什么在 AI 已经能一秒生成上千行代码的今天,一段57年前的登月源码还能一次次刷屏?
因为在这个算力过剩、软件动辄臃肿到十几个G的时代,打开 chrislgarry/Apollo-11,我们看到的是一种近乎失传的古典工程之美。
在极端的物理枷锁下,工程师们把每一个比特都算到了骨头缝里。承受着飞行安全的重压,他们仍在泛黄的纸页上写下“去见魔法师吧”和莎士比亚的诗行。
在最严苛的物理极限面前,他们依然保留着吹一声口哨、开一个玩笑的浪漫。半个多世纪后,注释里的声音仍陪着我们重访那段登月旅程。















































































