ARTICLE · 1200785
90岁登月代码女王谢幕!阿波罗源码刷屏GitHub,7.5万人在4KB神作里看哭了

— 作者 —苏麦
— 编辑 —周可
2026年10月13日,社交平台X上的一条短帖引来大量关注。
工程类账号 World of Engineering 只发了短短9个英文单词:“阿波罗11号的源代码,在GitHub上就能看到。”
就这么一句没头没尾的提醒,几小时内攒起上万次浏览、上千个点赞。评论区里很快热闹起来,有网友甩出一句冷幽默:“现在,谁都能自己搞个航天计划了。”

▲ World of Engineering 提醒读者:阿波罗11号源码可以在GitHub上找到
奇怪吗?一套写于57年前的陈年老代码,一个早在十年前就已公开的代码仓库,为什么会在2026年的秋天,再次拨动全球程序员的神经?
把日历往前翻两周,答案浮出水面
2026年9月30日,90岁的玛格丽特·汉密尔顿(Margaret Hamilton)在马萨诸塞州剑桥市安静辞世。 她是当年阿波罗飞船机载软件的掌门人,更是“软件工程”(Software Engineering)这一称谓的重要推动者。
斯人已逝但当成千上万名年轻程序员顺着网线,点进那个斩获 7.52万颗星标(Star) 的GitHub仓库 chrislgarry/Apollo-11 时,他们惊讶地发现:这位老太太和她当年带领的那群20多岁的MIT年轻人,仍能在代码里与后人相遇。
他们的智慧、焦虑、咆哮与冷笑话,早就连同人类第一次踏上月球的脚印,一起被封印在了这几万行字符里。
01一场手敲出来的“数字考古”,与一行永不褪色的签名
很多第一次点进仓库的人,都会产生一种错觉:难道美国宇航局(NASA)最近把尘封的档案一键上传到了GitHub?

▲ GitHub上的 Apollo-11 仓库首页,收录了指令舱程序 Comanche055 与登月舱程序 Luminary099
热帖下方,一位名叫 Geoff 的网友道出了真相:志愿者们去麻省理工学院博物馆拍下纸质硬拷贝,然后一行行打字敲进电脑。

▲ 网友 Geoff 澄清源码的真实来历:由志愿者根据麻省理工学院博物馆的纸质档案拍照并手工录入
这是一场跨越数十年的“数字愚公移山”。
1969年阿波罗11号升空时,这些程序还保存在纸质清单与飞船硬件中。飞船上的两套核心程序,指令舱的 Comanche055 和登月舱的 Luminary099,是用一种叫“AGC汇编”的底层语言写成的。任务结束后,这些代码变成了一摞厚如砖头的折叠打印纸,静静躺在麻省理工学院(MIT)博物馆的档案柜里。
直到2000年代,一群痴迷太空史的极客坐不住了。他们发起了 Virtual AGC(虚拟阿波罗制导计算机) 项目。在博物馆协调员的帮助下,志愿者保罗·菲尔德(Paul Fjeld)把泛黄的纸页一张张拍成高清照片;紧接着,散落在全球各地的程序员志愿者对着扫描件,像中世纪的修道士抄写经书一样,把几十万个字符纯手工敲进电脑,并开发了专门的编译器 yaYUL 来验证对错。后来,程序员 Chris Garry 把它们整理到GitHub上,才有了今天人人都能自由翻阅的奇观。
当你点开指令舱代码目录,打开排在最前面的 CONTRACT_AND_APPROVALS.agc(合同与批准页),时光会瞬间倒流回半个世纪前。
用纯文本符号拼出的方框里,工工整整地记录着这份代码的准生证:1969年3月28日,由MIT仪器实验室按NASA合同提交。在“提交人”一栏,赫然印着全大写的名字:MARGARET H. HAMILTON(巨像程序负责人)。
那一年,汉密尔顿只有32岁
在1960年代的航天界,唱主角的是造火箭的机械大拿和算轨道的物理权威。写代码?那时候连“软件”这个词都很新鲜,很多人觉得编程就像接线员插拔电线、或者文员打字一样,是个不入流的附属活儿。
但汉密尔顿偏不信邪她带着团队没日没夜地死磕,硬是在实验室里立下了规矩:软件和造火箭一样,是一门严肃的工程学。 她大力推动“Software Engineering”这一称谓得到认可。如今,90岁的她在现实世界谢幕了,但只要这个GitHub仓库还在,她32岁时的那行签名,就永远定格在人类飞向深空的第一页。
024KB内存与“老太太织毛衣”:在刀尖上跳舞的极限工程
把这批源码拉下来细看之前,你必须先明白一件事:当年那帮程序员,究竟是在怎样一台“寒酸”的机器上写代码的。
今天,你用手机随手拍一张照片就要五六兆(MB);哪怕在电脑上新建一个完全空白的Word文档,也要占掉十几KB。
而1969年把三位宇航员送上月球的阿波罗制导计算机(AGC),整机重达32公斤,里面的存储空间却小得令人窒息:可擦写内存(RAM)只有约 4KB,只读程序存储(ROM)只有约 72KB。
4KB内存是什么概念?连现在网页上的一个小图标都装不下。
要把实时导航、姿态控制、发动机点火和雷达通信全部塞进这个“火柴盒”,MIT的程序员们简直是在针尖上跳舞。每一个字节都要掰成两半花,连基础的数学公式都得被榨干最后一滴油水。
这次源码重回热搜后,数学科普博主 Matheorems 就从仓库里扒出了一段让人拍案叫绝的底层算法,AGC是怎么算正弦函数(Sine)的?

▲ 博主 Matheorems 拆解源码中的正弦函数近似算法:微调常数后,误差比传统泰勒公式低了一个数量级
高中数学告诉我们,算正弦可以用微积分里的“泰勒展开”,项数越多越准。但AGC算力太弱,每秒只能做几万次加法,根本算不起复杂的公式,这里采用了三项多项式。
如果直接照搬同阶泰勒系数,在区间边界附近的误差会更大。怎么办?源码显示,当时的工程师没有当书呆子,而是动手微调了公式里的常数(比如把
微调成了
)。这么一改,误差不再堆在两端,而是像波浪一样在区间里均匀起伏。
结果呢?花完全相同的计算代价,最大误差直接比教科书公式缩小了整整十倍以上! 就像那位博主感叹的:“顶尖的工程学,往往就藏在选对那几个常数里。”
比写代码更刺激的,是把代码装进飞船的过程。
今天的软件出了Bug,程序员可以连夜发个OTA空中升级补丁。但在1969年,只读程序一旦定稿,就会被送进雷神公司(Raytheon)的工厂,由那里的女工们用针线活生生“织”进硬件里。

▲ 硬件专家 Ken Shirriff 撰文解析阿波罗计算机的“磁芯绳存储器”:软件被物理编织进导线之中
这种黑科技叫磁芯绳存储器(Core Rope Memory)。女工们拿着长针,牵引着细细的铜线在一排排小铁环(磁芯)之间穿梭:铜线穿过铁环代表数字“1”,绕过铁环外侧代表数字“0”。
这种存储器抗辐射、不怕断电,密度极高,唯一的缺点就是,绝对无法修改。要改一行代码,就得把整捆电线拆了重织。MIT那帮年轻气盛的程序员,私下里半开玩笑地把这种存储器叫做 “LOL Memory”,指 “Little Old Lady memory”(老太太织出来的内存)。
正因为代码一旦织成铜线就无法回头,汉密尔顿才把软件测试逼到了近乎偏执的程度。
1969年7月20日,惊魂一刻还是发生了。登月舱“鹰号”距离月面只剩几公里时,交会雷达接口产生了大量额外信号,抢占了计算机有限的处理时间。驾驶舱警报灯骤然亮起,报出著名的 1202与1201程序报警!
换作普通电脑,这时候早就蓝屏死机了。但团队设计的优先级调度与重启保护机制发挥了作用:报警后,计算机重启关键任务,让制导和发动机控制继续运行。地面团队据此判断可以继续着陆
正是这套写在汇编代码里的“丢车保帅”逻辑,救了阿姆斯特朗和奥尔德林的命。
03弹珠台、摇滚黑话与临时补丁:藏在代码里的“不羁灵魂”
如果只看硬核的数学和严苛的军工标准,你可能会以为写代码是一群苦行僧。
但当你点开 Luminary099 目录下的文件,扑面而来的,却是1960年代MIT极客们无处安放的荷尔蒙与幽默感。
最出圈的一个文件,负责控制登月舱发动机点火。按理说,这该起个严肃的名字,比如 IGNITION_CONTROL。结果它在源码里的真名叫:BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc(燃烧吧宝贝,燃烧!,主点火例程)。

▲ 主点火例程的汇编指令与注释,列明适用程序以及点火前后的工作时间窗
文件开头的注释里,程序员 Don Eyles 毫不避讳地交了底:这个名字来自当时洛杉矶传奇黑人电台DJ Magnificent Montague。每当电台放到最火的灵魂乐和摇滚唱片时,这位DJ就会对着麦克风狂喊:“Burn, baby! BURN!” 年轻的程序员觉得,拿这句街头流行语来形容火箭发动机喷射烈焰的瞬间,简直再酷不过了。
如果说点火程序的名字只是皮了一下,那么人机交互模块的名字,简直就是一段荒诞的“职场糊弄学”传奇。
在阿波罗飞船上,宇航员通过一个叫 DSKY 的按键面板输入“动词+名词”指令来操控电脑。这个至关重要的键盘与指示灯驱动文件,在源码里居然叫 PINBALL_GAME_BUTTONS_AND_LIGHTS.agc(弹珠台游戏的按钮与指示灯)。
为什么登月飞船的控制面板会叫“弹珠台”?源码注释里记录了元老架构师拉蒙·阿隆索(Ramón Alonso)的一段回忆:
在项目刚立项时,NASA根本没想好宇航员该怎么跟计算机对话,连半页需求文档都没给。某天,实验室突然接到通知,有一批大人物要来视察。为了不让这台造价高昂的计算机在领导面前像块死砖头,几个年轻程序员连夜加班,用闪烁的指示灯和数字按键拼凑出了一个带“动词/名词”语法的演示程序。因为灯闪起来太像街机厅里的弹珠台,他们就随手起了这个外号。
谁也没想到,领导看完大加赞赏后来大家忙着写核心导航算法,谁也没空去推翻重写这套交互逻辑。于是,这个原本为了应付领导视察、通宵赶工出来的“弹珠台草台班子原型”,居然就这么一路绿灯,原封不动地载着人类登上了月球!
在几万行枯燥的汇编指令之间,这样鲜活的“人类痕迹”比比皆是:
在一段提示宇航员调整雷达天线角度的代码旁,注释毫不客气地写着: CRANK THE SILLY THING AROUND(把这蠢玩意儿给摇过去);在一段用于计算着陆轨迹的临时算法旁,程序员留下了全天下码农都懂的卑微祈祷: TEMPORARY, I HOPE HOPE HOPE(临时补丁,我希望能行、希望、希望!);在绝不允许别人乱改的底层常数表头上,他们甚至拽起了古法语 HONI SOIT QUI MAL Y PENSE(愿心怀恶念者蒙羞) 和圣经拉丁语NOLI SE TANGERE(勿触碰我)。
为什么严肃的国家工程能容忍这些看似散漫的玩笑?
因为在那个没有图形界面、必须成天和八进制数字肉搏的年代,程序员承受着常人难以想象的心理重压。这些俏皮话和自嘲,成了程序员在72KB的钢铁牢笼里为自己留下的呼吸孔。 它们像一个个醒目的路标,让团队在枯燥的人工代码走查中保持清醒,也让半个世纪后的我们一眼看穿:写下这些指令的人,也曾是眼里有光的年轻人。
04跨越57年的赛博共创:最好的致敬,是有人还在读你的代码
从1969年到2026年,57年过去了。当年的穿孔纸带早已进了博物馆,但当这些字符在GitHub上安家落户后,一场跨越半个世纪的“赛博共创”从未停止。
每隔几年,当这个仓库被重新推上Hacker News或X平台的热搜时,评论区和GitHub的Issue(问题追踪)板块都会变成全球程序员的大型狂欢现场。
当代极客们用最懂彼此的方式,和57年前的前辈开着玩笑。在这次热帖转发里,程序员 Bartosz Mikulski 幽幽地问了一句当代技术圈最经典的梗:“有没有人已经用 Rust 语言把它重写了一遍?”

▲ 程序员转发玩梗:询问是否有人已经用现代流行的 Rust 语言重写了阿波罗源码
然而,在段子与狂欢的背面,却是开源社区最令人动容的严谨接力。
前面提到,这套代码是志愿者对着博物馆的纸质扫描件手敲出来的。大量代码敲下来,哪怕再细心,也难免有眼花打错的字母或标点。过去十年间,全球各地研究复古计算的学者、工程师和业余极客,一页页对照着博物馆公开的原始扫描底片,在GitHub上提交了无数个 Pull Request(代码修改请求),有人纠正了注释里拼错的一个单词,有人核对了子程序边界的八进制常数,甚至有人把 README 翻译成了包括中文在内的十几种语言。
一群素昧平生的现代人,用最先进的分布式协作工具,去精心擦拭半个世纪前前辈们留下的工程丰碑。
2026年深秋,90岁的玛格丽特·汉密尔顿走完了她传奇的一生。在讣告与鲜花之外,社交网络上这次突如其来的源码刷屏,或许才是工程师世界送给她最浪漫的挽歌。
这些代码至今仍有人阅读和维护只要还有人点开那个仓库,看见那行签在1969年春天的名字,看见那句用摇滚精神写下的 BURN, BABY, BURN,人类第一次冲向星辰大海时的心跳,就依然在每一块屏幕后面震耳欲聋。















































































