目录

一、写在前面:从月球到 GitHub,跨越半个世纪的代码史诗

二、登月代码的载体:AGC 计算机,算力不如计算器的 “航天大脑”

三、开源历程:从 NASA 最高机密到 GitHub 全民可及

3.1 解密与数字化:民间发起的代码考古

3.2 官方正式开源:从档案馆到 GitHub

3.3 开源内容覆盖

四、核心拆解:登月程序的 6 大核心模块,每一行都关乎生死

4.1 Executive 执行程序:2KB RAM 里的实时操作系统

4.2 P60 系列 着陆制导程序:月球着陆的核心灵魂

4.3 G&N 制导与导航系统:地月往返的 “导航地图”

4.4 DAP 数字自动驾驶仪:飞船的 “稳定器”

4.5 故障处理与中断系统:太空任务的 “救命保险”

4.6 雷达与传感器数据处理模块:飞船的 “眼睛和耳朵”

五、经典代码解析:改变人类历史的几行汇编代码

5.1 1202 报警核心代码:拯救登月任务的容错逻辑

5.2 着陆制导核心代码:P66 手动控制模式

六、实战教程:5 分钟在本地复刻运行阿波罗登月代码

6.1 环境要求

6.2 一键安装与运行步骤

6.3 模拟登月着陆操作

6.4 代码编译与修改

七、技术奇迹:60 年代的代码,藏着现代软件工程的终极答案

7.1 极致的资源优化,零冗余的代码设计

7.2 前瞻性的容错设计,零容错的航天级标准

7.3 模块化编程与软件工程的诞生

7.4 极致严谨的代码注释,甚至藏着工程师的彩蛋

八、写在最后:从登月代码到 AI 编程,不变的工程内核

🎁 总结速查卡

核心信息速查

核心代码模块速查

开源资源速查


一、写在前面:从月球到 GitHub,跨越半个世纪的代码史诗

2026 年是阿波罗 11 号实现人类首次登月的第 57 周年,当我们惊叹于 SpaceX 的可回收火箭、星舰的火星计划时,很少有人会想起:1969 年 7 月 20 日,把阿姆斯特朗和奥尔德林送上月球的,是一台算力还不如如今普通计算器的计算机,和 14.5 万行手写的汇编代码

更令人震撼的是,这份曾被 NASA 列为最高机密的登月程序代码,早已完成了从 “月球任务核心机密” 到 “GitHub 全民可学习的开源史诗” 的跨越。2016 年,MIT Draper 实验室(原 MIT 仪器实验室,阿波罗制导计算机的研发方)正式将阿波罗 11 号的完整 AGC 代码开源上传至 GitHub;截至 2026 年,该仓库已斩获 12.7 万 + Star,成为 GitHub 星标最高的经典编程项目之一,被开发者称为 “人类软件工程史上的活化石”。

我之前写过 Agentic Engineering 六大核心能力langcli 终端智能体全解析Claude Code 全栈开发指南,见证了 AI 编程时代的效率革命;但当我逐行读完这份 57 年前的汇编代码时才发现:现代软件工程所有的先进理念,都早已被这群航天工程师写进了登月代码里

这篇文章,我们就完整拆解这份开源的登月程序代码:从承载代码的 AGC 计算机,到开源历程,再到核心模块、经典代码解析、本地复刻实战,以及它给现代编程带来的终极启示。


二、登月代码的载体:AGC 计算机,算力不如计算器的 “航天大脑”

所有登月程序代码,都运行在阿波罗制导计算机(Apollo Guidance Computer, AGC) 上 —— 这是人类历史上第一台集成电路计算机,也是当时世界上最小、最先进的数字计算机,更是阿波罗登月任务的绝对核心大脑。

它负责飞船的姿态控制、轨道计算、着陆制导、故障处理,全程主导从地球到月球、再从月球返回地球的全流程制导任务。但以今天的眼光来看,它的硬件参数简陋到难以想象:

表格

硬件参数 阿波罗 AGC 计算机 2026 年普通家用计算器 2026 年普通 PC
主频 1.024 MHz 约 10 MHz 3.0 GHz+
内存 RAM 2048 字(约 3KB,磁芯存储器) 32KB+ 16GB+
只读存储器 ROM 36864 字(约 72KB,绳存储器) 1MB+ 1TB+
字长 15 位(1 位奇偶校验) 32 位 64 位
运算能力 每秒约 8 万次加法运算 每秒百万次运算 每秒万亿次浮点运算

就是这样一台算力连如今 10 块钱的计算器都不如的计算机,要完成载人登月的全流程制导任务,容错率为 0—— 任何一行代码出错、一个计算失误,都可能导致宇航员永远留在太空。而这一切的极限挑战,都靠 14.5 万行手写的汇编代码来实现。

这份代码的核心负责人,是玛格丽特・汉密尔顿(Margaret Hamilton) —— 软件工程领域的先驱,正是她带领 MIT 的 100 人工程师团队,完成了 AGC 软件的全量开发,也正是她在项目中首次提出了 “软件工程” 这个概念,彻底改变了软件行业的发展轨迹。


三、开源历程:从 NASA 最高机密到 GitHub 全民可及

这份登月代码的开源之路,跨越了整整 47 年,是一群技术爱好者与官方机构共同完成的 “代码考古” 壮举:

3.1 解密与数字化:民间发起的代码考古

1969 年登月任务完成后,AGC 的全部代码、设计文档都被 NASA 列为机密档案,仅在航天系统内部流转。直到 1970 年代,随着阿波罗计划结束,相关文档才逐步解密,向公众开放查阅权限,但仅能在 NASA 档案馆查看纸质扫描件,没有可执行的数字化代码。

2003 年,程序员Ron Burkey 发起了Virtual AGC 开源项目,开始了漫长的代码考古工作:他逐页扫描 NASA 档案馆里的 AGC 代码纸质清单,手动转录、校对、数字化,还原出可编译、可运行的 AGC 代码,同时开发了 AGC 模拟器,让普通人能在现代计算机上运行这份 50 年前的登月程序。

3.2 官方正式开源:从档案馆到 GitHub

2016 年 7 月,MIT Draper 实验室(原 MIT 仪器实验室,AGC 的研发方)正式将阿波罗 11 号、阿波罗 12 号的完整 AGC 源代码,上传至 GitHub 官方仓库,完成了官方开源。仓库中不仅包含完整的汇编源代码,还有原始的代码清单扫描件、设计文档、注释说明,甚至保留了当年工程师手写的注释、吐槽、彩蛋。

开源仓库地址:https://github.com/chrislgarry/Apollo-11https://github.com/chrislgarry/Apollo-11

截至 2026 年,该仓库已累计获得 12.7 万 + Star,1.8 万 + Fork,成为 GitHub 上最受欢迎的经典编程项目,不仅有开发者持续维护、更新模拟器,还衍生出了 AGC 代码教学、复刻、硬件还原等一系列衍生项目。

3.3 开源内容覆盖

官方开源的内容,完整覆盖了阿波罗计划的全任务代码:

  • 阿波罗 11 号:登月舱(LM)与指令舱(CM)的完整 AGC 代码
  • 阿波罗 12 号 - 阿波罗 17 号:各次任务的迭代版 AGC 代码
  • 完整的汇编代码清单、原始扫描件、设计文档
  • 配套的汇编器、模拟器、调试工具
  • 当年工程师的开发日志、注释、故障处理记录

四、核心拆解:登月程序的 6 大核心模块,每一行都关乎生死

开源的 AGC 代码,采用的是专门为 AGC 计算机设计的汇编语言,分为核心系统程序任务应用程序两大层,总计 14.5 万行代码,其中 6 大核心模块,直接决定了登月任务的成败。

4.1 Executive 执行程序:2KB RAM 里的实时操作系统

这是 AGC 的内核,也是人类历史上最早的实时抢占式多任务操作系统之一,它要在仅 3KB 的 RAM 里,实现多任务调度、优先级管理、中断处理,是整个 AGC 软件的 “大脑中枢”。

核心能力:

  • 支持 8 个优先级的任务调度,高优先级任务可抢占低优先级任务的 CPU 资源
  • 管理所有硬件中断,处理传感器、雷达、操作面板的实时信号
  • 内存资源管理,在 2048 字的 RAM 里,实现任务间的内存隔离与复用
  • 故障监控与降级处理,当 CPU 过载时,自动丢弃低优先级任务,保障核心制导功能正常运行

登月史上最关键的作用:阿波罗 11 号着陆过程中著名的1202/1201 报警,正是这个模块的容错机制救了整个任务。当时着陆雷达的数据涌入,导致 CPU 过载,Executive 程序自动丢弃了 “雷达数据显示” 等低优先级任务,保住了着陆制导、姿态控制等核心功能,让登月任务得以继续。

4.2 P60 系列 着陆制导程序:月球着陆的核心灵魂

这是登月舱着陆阶段的核心程序,也是整个 AGC 代码中最复杂、最关键的部分,分为 P63、P64、P66 三个核心子模块,全程主导从绕月轨道到月面着陆的全过程。

表格

程序模块 核心作用 登月任务中的关键表现
P63 制动接近阶段 控制登月舱减速,从绕月轨道进入着陆轨道,精准对准着陆区
P64 最终着陆阶段 自动控制着陆器的下降速度、姿态,实时计算着陆点,完成精准着陆
P66 手动姿态控制模式 阿姆斯特朗发现预定着陆区布满陨石坑后,切换到该模式,手动控制着陆器姿态,完成了人类首次月面着陆

这个模块的代码,包含了完整的轨道动力学计算、引力模型、推进器控制逻辑,要在 1MHz 的主频下,实时更新着陆器的位置、速度、姿态,每一个计算周期的误差,都可能导致着陆失败。

4.3 G&N 制导与导航系统:地月往返的 “导航地图”

G&N(Guidance & Navigation)模块是整个任务的导航核心,负责计算飞船的实时位置、速度、轨道参数,从地球发射、地月转移、绕月飞行、月面着陆、月面起飞、月地返回、再入大气层,全流程的导航计算都由这个模块完成。

核心能力:

  • 基于惯性测量单元(IMU)的传感器数据,实时解算飞船的姿态与位置
  • 轨道参数计算,提前规划地月转移轨道、绕月轨道、返回轨道
  • 星光导航校准,通过观测恒星位置,修正惯性导航的累积误差
  • 再入大气层的弹道计算,精准控制飞船的再入角度,避免烧毁或弹回太空

4.4 DAP 数字自动驾驶仪:飞船的 “稳定器”

DAP(Digital Auto-Pilot)数字自动驾驶仪,负责飞船的姿态稳定与推进器控制,无论是指令舱的绕月飞行,还是登月舱的着陆过程,飞船的每一次姿态调整、推进器点火,都由这个模块精准控制。

它要解决的核心问题:飞船在太空中处于失重状态, slightest 的推进器点火都会导致姿态变化,DAP 要以 20 次 / 秒的频率,实时读取姿态传感器数据,计算推进器的点火时长、方向,确保飞船始终保持在预定姿态,哪怕是宇航员手动操作,也要经过 DAP 的平滑处理,避免操作失误。

4.5 故障处理与中断系统:太空任务的 “救命保险”

这是 AGC 代码中最具前瞻性的模块,也是现代软件工程容错设计的鼻祖。阿波罗计划的工程师们提前预判了上百种可能出现的故障场景,为每一种故障都编写了对应的处理逻辑,从传感器失效、CPU 过载,到推进器故障、导航数据异常,都有完整的降级、备份、应急处理方案。

最经典的就是 1202/1201 报警的处理逻辑:代码提前定义了 “CPU 过载” 的故障场景,预设了 “丢弃低优先级任务,保障核心功能” 的处理方案,才让阿波罗 11 号的着陆任务没有因为报警而中止。

4.6 雷达与传感器数据处理模块:飞船的 “眼睛和耳朵”

这个模块负责对接飞船上所有的传感器、雷达、操作面板,包括惯性测量单元、着陆雷达、 rendezvous 雷达、星光望远镜、宇航员操作面板,实时读取、校验、过滤传感器数据,传递给制导、导航、自动驾驶模块。

它的核心挑战:传感器数据可能存在噪声、延迟、错误,模块要在极短的时间内完成数据校验、滤波、异常值剔除,确保传递给核心模块的数据是准确的,不能因为一个错误的传感器数据,导致制导计算失误。


五、经典代码解析:改变人类历史的几行汇编代码

开源的 AGC 代码中,有几段代码直接决定了人类登月的成败,我们逐行解析,看看 57 年前的航天工程师,是如何在极致受限的硬件下,写出零容错的航天级代码。

5.1 1202 报警核心代码:拯救登月任务的容错逻辑

阿波罗 11 号着陆过程中,着陆舱的计算机连续触发 1202 报警,地面指挥中心最终给出了 “继续着陆” 的指令,背后就是这段提前写好的容错代码。

1202 报警的本质:Executive 程序检测到 CPU 过载,无法在一个执行周期内完成所有调度任务,触发了 “任务溢出” 告警。而代码的核心逻辑,是自动丢弃低优先级任务,保障核心制导功能正常运行。

以下是开源代码中,Executive 程序的核心调度代码(AGC 汇编,带注释翻译):

assembly

; 阿波罗AGC Executive程序 核心任务调度代码
; 功能:优先级抢占式调度,CPU过载时自动丢弃低优先级任务
; 作者:MIT仪器实验室 1969年
; 对应1202报警的核心处理逻辑

; 任务优先级表,8个优先级,数字越小优先级越高
PRIORITY_TABLE:
    2DEC     0       ; 优先级0:着陆制导核心程序(最高优先级)
    2DEC     1       ; 优先级1:姿态控制自动驾驶仪
    2DEC     2       ; 优先级2:导航数据计算
    2DEC     3       ; 优先级3:雷达数据处理
    2DEC     4       ; 优先级4:宇航员操作面板响应
    2DEC     5       ; 优先级5:遥测数据回传
    2DEC     6       ; 优先级6:系统状态显示
    2DEC     7       ; 优先级7:冗余数据备份(最低优先级)

; 核心调度循环
EXECUTIVE_LOOP:
    TS       Q       ; 保存当前程序计数器
    CCS      A       ; 检查当前CPU负载
    TC       OVERFLOW_HANDLER  ; 负载超标,跳转到过载处理
    TC       NO_OVERFLOW        ; 负载正常,执行正常调度

; 过载处理核心逻辑(1202报警触发入口)
OVERFLOW_HANDLER:
    CAF      PRIORITY_THRESHOLD  ; 加载优先级阈值
    COMP     CURRENT_TASK_PRIORITY ; 对比当前任务优先级
    TC       DROP_LOW_PRIORITY    ; 优先级低于阈值,丢弃任务
    TC       EXECUTE_HIGH_PRIORITY ; 优先级高于阈值,强制执行

; 丢弃低优先级任务,释放CPU资源
DROP_LOW_PRIORITY:
    CAF      ALARM_CODE_1202     ; 加载1202报警码
    TS       ALARM_REGISTER       ; 触发1202报警,通知宇航员
    TC       EXECUTIVE_LOOP       ; 返回调度循环,只执行高优先级任务

; 正常执行高优先级任务
EXECUTE_HIGH_PRIORITY:
    TC       TASK_EXECUTE         ; 执行当前任务
    TC       EXECUTIVE_LOOP       ; 执行完成,返回调度循环

代码核心亮点

  1. 提前预设了优先级分层,核心制导功能永远处于最高优先级,哪怕系统过载,也不会被中断;
  2. 过载时不是直接崩溃,而是主动降级,丢弃非核心任务,同时触发报警通知宇航员,实现了 “告警不宕机”;
  3. 整个调度逻辑仅用了几十行汇编代码,占用极少的 ROM 和 RAM 资源,极致精简。

正是这段代码,让阿波罗 11 号在连续触发 1202 报警的情况下,依然保障了着陆制导功能的正常运行,最终完成了人类首次登月。

5.2 着陆制导核心代码:P66 手动控制模式

阿姆斯特朗在发现预定着陆区布满陨石坑后,果断切换到 P66 手动控制模式,最终完成了安全着陆。以下是 P66 模式的核心控制代码片段:

assembly

; P66 手动姿态控制模式 核心代码
; 功能:接收宇航员手动操作输入,平滑控制着陆器姿态,保障手动着陆安全
; 登月任务中,阿姆斯特朗通过该模式完成了人类首次月面着陆

P66_ENTRY:
    CAF      MANUAL_MODE_FLAG     ; 开启手动模式标志
    TS       CONTROL_MODE_REG     ; 设置控制模式为手动
    CAF      DAP_SMOOTH_FACTOR    ; 加载自动驾驶平滑系数
    TS       DAP_CONFIG_REG       ; 配置自动驾驶仪为手动辅助模式

; 手动控制输入读取循环
P66_INPUT_LOOP:
    CS       HAND_CONTROL_X       ; 读取宇航员X轴操作杆输入
    TS       DAP_X_INPUT          ; 传递给自动驾驶仪
    CS       HAND_CONTROL_Y       ; 读取Y轴操作杆输入
    TS       DAP_Y_INPUT          ; 传递给自动驾驶仪
    CS       HAND_CONTROL_Z       ; 读取Z轴操作杆输入
    TS       DAP_Z_INPUT          ; 传递给自动驾驶仪

; 着陆器姿态实时控制
P66_ATTITUDE_CONTROL:
    TC       DAP_ATTITUDE_CALC    ; 调用自动驾驶仪,计算姿态调整量
    TC       THRUSTER_CONTROL      ; 控制推进器点火,调整姿态
    TC       LANDING_RADAR_UPDATE ; 更新着陆雷达高度、速度数据
    TC       ALTITUDE_DISPLAY      ; 给宇航员显示当前高度、下降速度

; 着陆检测逻辑
P66_LANDING_CHECK:
    CCS      LANDING_CONTACT_SIGNAL ; 检测着陆腿接触信号
    TC       LANDING_SUCCESS        ; 接触月面,触发着陆成功流程
    TC       P66_INPUT_LOOP         ; 未着陆,返回输入循环,持续控制

; 着陆成功处理
LANDING_SUCCESS:
    CAF      ENGINE_SHUTDOWN_FLAG  ; 关闭下降发动机
    TS       ENGINE_CONTROL_REG     ; 执行发动机关闭
    CAF      LANDING_SUCCESS_ALARM  ; 触发着陆成功提示
    TS       ALARM_REGISTER         ; 通知宇航员着陆成功
    TC       POST_LANDING_PROCESS   ; 跳转到着陆后流程

这段代码的核心设计,是手动操作 + 自动驾驶辅助的融合:宇航员只需要给出操作方向,自动驾驶仪会自动完成平滑的姿态调整、推进器控制,避免手动操作的失误,最终让阿姆斯特朗在仅剩 15 秒燃料的情况下,完成了安全着陆。


六、实战教程:5 分钟在本地复刻运行阿波罗登月代码

很多人觉得这份 57 年前的汇编代码只能看不能跑,其实借助开源的 Virtual AGC 模拟器,我们可以在现代电脑上,一键复刻运行阿波罗登月的完整程序,甚至模拟登月着陆的全过程。

6.1 环境要求

  • 操作系统:Windows/macOS/Linux 全平台支持
  • 依赖:Git、GCC 编译器、Python 3.8+

6.2 一键安装与运行步骤

bash

运行

# 步骤1:克隆Virtual AGC开源仓库
git clone https://github.com/virtualagc/virtualagc.git
cd virtualagc

# 步骤2:编译安装AGC汇编器与模拟器
# macOS/Linux
make all

# Windows(WSL2)
make all

# 步骤3:运行阿波罗11号登月舱AGC程序
./yaAGC --core=Apollo11/Luminary099/Luminary099.bin --cfg=Apollo11/Luminary099/Luminary099.ini

# 步骤4:打开DSKY模拟面板(宇航员操作面板)
# 新开一个终端,执行
./yaDSKY2 --cfg=Apollo11/Luminary099/Luminary099.ini

6.3 模拟登月着陆操作

运行成功后,你会看到阿波罗登月舱的 DSKY 操作面板,这正是当年阿姆斯特朗和奥尔德林在登月舱里操作的面板复刻版。你可以通过面板输入指令,模拟登月着陆的全过程:

  1. 输入V37E,选择程序编号63E,进入 P63 接近月面程序;
  2. 输入着陆参数,启动自动接近程序,模拟登月舱减速接近月面;
  3. 输入V37E 66E,切换到 P66 手动控制模式,模拟阿姆斯特朗的手动着陆操作;
  4. 面板上会实时显示当前高度、下降速度、姿态数据,完全复刻当年的登月过程。

6.4 代码编译与修改

如果你想修改、编译 AGC 代码,也可以通过以下命令完成:

bash

运行

# 进入阿波罗11号登月舱代码目录
cd Apollo11/Luminary099

# 编译AGC汇编代码
../yaASM/bin/yaASM Luminary099.agc

# 编译成功后,生成新的.bin文件,即可加载到模拟器中运行

七、技术奇迹:60 年代的代码,藏着现代软件工程的终极答案

当我们逐行读完这份开源的登月代码,会发现一个令人震撼的事实:我们今天在软件工程领域推崇的所有先进理念,都早已被这群航天工程师在 1969 年,用汇编代码完美实现了

7.1 极致的资源优化,零冗余的代码设计

在 72KB ROM、3KB RAM 的极致受限环境下,工程师们把每一个 bit 的资源都用到了极致:

  • 代码里没有一行冗余指令,每一个寄存器、每一个内存地址都被反复复用;
  • 用绳存储器(ROM)存储代码,每一个 bit 都由女工手工编织铜线实现,1 就是穿过去,0 就是绕过去,不允许任何一行错误代码;
  • 为了节省内存,甚至把两个 15 位的数,压缩到一个 30 位的存储单元里,实现了 “一个地址存两个数” 的极致优化。

对比今天的 AI 编程时代,很多人用 Vibe Coding 生成的代码,动辄几百 KB 冗余内容,不考虑内存、性能开销,这份 57 年前的代码,给我们上了最生动的一课:软件工程的本质,是在有限的资源里,实现最优的功能与可靠性

7.2 前瞻性的容错设计,零容错的航天级标准

登月代码最令人惊叹的,不是它实现了多么复杂的功能,而是它提前预判了所有可能出现的故障,为每一个错误都写好了处理方案。

在阿波罗计划中,工程师们遵循一个核心原则:任何一个单点故障,都不能导致任务失败,更不能威胁宇航员的生命。这份代码里,上百种故障场景都有对应的降级、备份、应急处理逻辑,哪怕是 CPU 过载、传感器失效、雷达数据错误,系统都能继续运行,保障核心功能正常。

这正是现代软件工程最核心的高可用设计理念,而 57 年前的航天工程师,用汇编代码在算力极致受限的计算机上,完美实现了这一点。

7.3 模块化编程与软件工程的诞生

玛格丽特・汉密尔顿在开发 AGC 软件的过程中,首次提出了 “软件工程” 这个概念,而这份代码,正是模块化编程的经典范本。

整个 AGC 代码,被拆分为独立的核心模块,每个模块负责单一功能,模块间通过标准化的接口调用,低耦合、高内聚,哪怕一个模块出现故障,也不会影响其他模块的运行。这种设计思想,直到今天依然是我们构建大型软件系统的核心准则。

7.4 极致严谨的代码注释,甚至藏着工程师的彩蛋

开源的代码里,每一个子程序、每一段关键逻辑,都有清晰、详细的注释,哪怕是第一次接触 AGC 汇编的开发者,也能通过注释理解代码的作用。

更有趣的是,代码里还藏着当年工程师们的手写注释和彩蛋:

  • 有一段代码的注释写着:“这里是月球着陆的最后一公里,愿上帝与我们同在”;
  • 错误处理模块的注释里写着:“如果这里触发了,那我们就完蛋了,但还是写了处理逻辑”;
  • 甚至有一段代码的注释,是工程师对 NASA 管理层的吐槽,被完整保留在了开源代码里。

这些注释,让这份冰冷的汇编代码,有了温度,也让我们看到了当年那群工程师,在人类最伟大的航天任务里,严谨又浪漫的一面。


八、写在最后:从登月代码到 AI 编程,不变的工程内核

2026 年的今天,AI 编程已经全面普及,我们用 Claude Code、Cursor 可以在几分钟内生成上万行代码,效率是 57 年前的航天工程师的上万倍。但当我们看完这份登月代码就会发现:软件工程的本质,从来都没有变过

当年的工程师,用 14.5 万行手写汇编代码,在算力不如计算器的计算机上,完成了人类登月的壮举,靠的不是先进的工具,而是严谨的工程思维、极致的可靠性设计、对每一行代码负责的态度。

而今天,很多人沉迷于 Vibe Coding 的 “魔法体验”,只关注代码能不能跑起来,却忽略了代码的可靠性、可维护性、容错设计,最终写出的 Demo 好看,上线就崩。这也是为什么 Andrej Karpathy 会说:“Vibe Coding 只是过渡,真正的未来是 Agentic Engineering”—— 而 Agentic Engineering 的核心,正是回归软件工程的本质:可靠、可控、可维护、零容错

这份开源的登月代码,不仅是人类航天史上的史诗,更是软件工程史上的活化石。它告诉我们:无论工具怎么迭代,算力怎么提升,软件工程的内核永远不变 —— 对每一行代码负责,对每一个故障场景预判,在有限的资源里,实现最可靠的功能。


🎁 总结速查卡

核心信息速查

项目 关键信息
代码名称 阿波罗制导计算机 AGC 汇编代码
代码规模 14.5 万行手写汇编代码
运行硬件 1.024MHz 主频、3KB RAM、72KB ROM
开源时间 2016 年 MIT 官方 GitHub 开源
核心负责人 玛格丽特・汉密尔顿(软件工程先驱)
核心历史意义 人类首次登月的核心软件,首次提出 “软件工程” 概念

核心代码模块速查

模块名称 核心作用 登月关键贡献
Executive 执行程序 实时多任务操作系统内核 1202 报警容错处理,保障核心功能运行
P60 系列着陆程序 月面着陆制导核心 阿姆斯特朗手动着陆模式,完成人类首次月面着陆
G&N 导航系统 地月往返轨道导航 全任务轨道计算、位置解算
DAP 自动驾驶仪 飞船姿态稳定控制 精准控制飞船姿态,保障飞行稳定

开源资源速查

资源名称 链接
阿波罗 11 号 AGC 代码官方仓库 https://github.com/chrislgarry/Apollo-11
Virtual AGC 模拟器项目 https://github.com/virtualagc/virtualagc
AGC 代码官方文档与设计资料 https://www.ibiblio.org/apollo/

系列文章

参考链接

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐