2.048 MHz的时钟,2048字可擦写内存和36864字只读存储,55瓦的功耗,这些数字与今天的智能手机相差悬殊
然而就是这台"破电脑",在1969年7月20日那个夜晚,帮助Armstrong和Aldrin成功登陆月球
帮助完成这一壮举的源代码,此刻正静静躺在GitHub上,任何人都可以打开、阅读、fork


▲ GitHub官方发帖纪念人类登月57周年,配图为Margaret Hamilton与她齐身高的程序清单
2026年7月20日,人类首次登月57周年GitHub官方账号发帖纪念,并邀请读者查看当年的源代码
链接指向的仓库 chrislgarry/Apollo-11,此刻已经积累了近7万颗Star、7800次Fork语言栏里只有一个词:Assembly
一个女人、一堆纸、一段被"织"进硬件的程序
先看那张照片。
黑白影像里,一位穿条纹连衣裙的年轻女性侧身站立,旁边是一摞从地板堆到头顶以上的打印纸这摞纸就是阿波罗飞行软件的源代码清单
她叫Margaret Hamilton,1936年出生于印第安纳州小镇Paoli,数学系毕业,后进入MIT仪器实验室阿波罗计划期间,她领导了负责全部机载飞行软件的工程团队


▲ NASA History Office曾在Hamilton生日时发布这张经典合影
请注意一个细节:那个年代,"软件"甚至还不算一门正经学科硬件工程师觉得写程序是"附属文书",是打下手的活正是Hamilton力推将"软件工程"(software engineering)作为与硬件工程对等的专业称谓,这个今天养活了全球数千万人的词,源头在她
2016年,她获颁总统自由勋章。

▲ Physics In History回顾Hamilton的传奇履历:领导阿波罗软件、处理下降段致命错误、发明"软件工程"一词
打开仓库,你看到的是什么?
点进 chrislgarry/Apollo-11,目录结构异常清晰:
Comanche055,指令舱程序,负责从地球到月球的往返、对接、重返大气层; Luminary099,登月舱程序,负责下降、着陆、上升与月球轨道会合。
两套程序运行在同一型号的硬件上,阿波罗制导计算机(AGC),但任务完全不同宇航员不写代码,而是通过一个叫DSKY的键盘,输入"动词06、名词40"这样的指令组合来操作计算机

▲ 仓库首页:Public domain标记、近7万Star,语言统计几乎全是Assembly
随手打开一个文件,比如登月舱的 BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc,主点火例程文件头注释密密麻麻,记载着命名由来:灵感来自1960年代电台DJ "Magnificent Montague"的口号"Burn, baby! BURN!"旁边标注的硬拷贝装配时间赫然写着,1969年7月14日16:27,登月前仅仅6天

▲ 主点火例程源码,注释中保留了1960年代实验室的幽默文化
这些程序最终被"织"进了绳式磁芯只读存储器(core rope memory):导线穿过磁芯代表1,绕过代表0程序一旦编织完成,就像刻在石碑上一样无法修改所以地面的每一轮测试、每一次代码审查,都是生死攸关的
这也解释了为什么会有一人多高的打印纸,它是当时人们逐行审查代码的重要载体
1201!1202!月球上空最惊险的3分钟
故事的最高潮,发生在1969年7月20日下降段
登月舱Eagle正在向月面逼近,突然,计算机屏幕弹出1202程序警报紧接着又是1201。
登月舱内的Armstrong和Aldrin心跳骤然加速这台只有2.048 MHz时钟、2048字可擦写内存的计算机,还能撑得住吗?
它确实撑不住了,但它没有崩溃。
原因后来查明:交会雷达接口占用了超出预期的计算资源,导致执行体的作业队列过载此时,AGC软件的优先级调度机制开始发挥作用计算机主动丢弃低优先级任务、保留着陆所需的关键制导计算,同时向宇航员和地面发出警报
休斯顿任务控制中心里,年轻工程师Jack Garman迅速识别出警报的含义,并向制导主任Steve Bales确认可以继续地面随后给出了"Go!"
Armstrong手动微调着陆点避开巨石,在燃料几乎耗尽的情况下,人类第一次踏上了另一个星球
如果那台计算机选择了"报错即死机"而非"报错但保命",阿波罗11号的结局可能完全不同
你可以在仓库里找到这套保命机制的源头,ALARM_AND_ABORT.agc,报警与中止子程序注释清楚地写着:"可在中断或执行体控制下调用,用于显示非中止性报警条件"

▲ ALARM_AND_ABORT.agc:理解"1201/1202报警但不坠毁"机制的核心入口
开发者社区的敬畏、玩笑与争论
GitHub周年帖发出后,评论区迅速变成一场跨越时代的技术狂欢
有人把敬意留给了当年工程师的专业能力:"14.5万行帮助人类登月"

▲ "软件工程最终关乎信任。工具变了,清晰度、可审查性与故障处理依旧重要。"
有人忍不住开起了玩笑:"@claude 去月球,不许出错",直接cue上了AI助手


▲ "连阿波罗飞行制导系统都逃不过JavaScript" 😭😭😭
也有人追问:Hamilton到底是"写代码的人"还是"管理者"?这触及科技史书写中一个长期存在的张力,个人英雄形象与大团队工程现实之间的裂缝AGC源码是数百人、数年、数十个版本的集体产物;Hamilton的核心贡献在于软件工程领导、工程文化与关键设计思想,她从未"一个人敲完14.5万行"
从磁芯到GitHub:代码的"可达性革命"
最后说一个容易被忽略的点。
早在2003年前后,Virtual AGC项目就开始系统性地扫描、转录MIT博物馆保存的纸质清单,把绳式磁芯时代的程序变成现代文本文件chrislgarry/Apollo-11 仓库则是面向大众的"精选只读入口"

▲ Virtual AGC:不仅覆盖阿波罗11,还包含土星火箭、双子座等多个任务的飞行软件与仿真器
Public domain,公共领域任何人都可以合法引用、教学、展览、甚至拿去做艺术项目一段曾经被"织"在磁芯铁丝网里的程序,如今变成了可搜索、可fork、可对照扫描件提PR的文本
这不改变历史,但改变了历史的可达性
当你下次打开VS Code抱怨框架又更新了的时候,不妨去翻翻那个仓库在 BURN_BABY_BURN 的注释里,在 PINBALL_GAME_BUTTONS_AND_LIGHTS 的命名幽默里,在1969年7月14日那个时间戳里,你会触摸到软件工程最原初的脉搏:用有限的资源,做不容失败的事
55瓦,2048字可擦写内存,把人类送上月球
没有任何借口。
夜雨聆风