»
遊客:
加入
|
登入
(帳號有問題請連絡
[email protected]
)
TWed2k
»
轉貼文字區
» 原始碼曝光
可打印版本
|
推薦給朋友
|
訂閱主題
|
收藏主題
|
純文字版
論壇跳轉 ...
主題:
[其他]
原始碼曝光
字型大小:
小
|
中
|
大
|
巨
←
→
omg
銅驢友〔中級〕
. 積分:
147
. 文章:
239
. 收花: 1326 支
. 送花: 12 支
. 比例: 0.01
. 在線: 78 小時
. 瀏覽: 4001 頁
. 註冊:
2494
天
. 失蹤:
1
天
#1 : 2026-4-15 03:39 PM
只看本作者
送花
(3)
送出中...
近日,美國 NASA 公開 1969 年阿波羅 11 號(Apollo 11)的 AGC 引導電腦系統原始碼,以「公有領域」(Public Domain)形式正式上架 GitHub。當時電腦硬件技術相當匱乏,靠著 4KB 記憶體、74KB ROM、1MHz 的處理器,完成了整個登月任務。
這次 NASA 官方正式公開 AGC 原始碼,具有極高的歷史與教育意義。以 1969 年的 AGC 電腦規格來說,當時微處理器(如 Intel 4004)根本還沒發明,系統使用了 2,800 顆雙輸入 NOR Gate 拼裝而成的集成電路,1.024MHz 時脈(那是 . 不是 ,),16-bit 指令長度,每秒約能執行 4 萬次加法運算。
系統只擁有 4KB RAM,採用 Magnetic Core Memory 磁芯記憶體,只有約 2,000 個字(Words)的容量。搭配的 74KB ROM 採用了 Core Rope Memory 芯繩記憶體,是由紡織廠女工人手將導線穿過磁芯編織而成的。如果導線穿過磁芯就是 1,繞過就是 0。這意味著程式碼是真正的硬編碼(Hardcode),物理上無法被輻射或斷電竄改。
就只有這一點算力,當時整部機器重約 32 公斤、耗電量約 70W。現在一個便宜的 USB-C 充電器或是電子煙的微控制器,其運算能力都是 AGC 的數十倍甚至上百倍,但正是這 2,800 顆 NOR Gate,完成了人類首次登月任務。
由於硬件資源有限,AGC 的程式碼只有 72KB,這點容量甚至放不下一張現代的高解像度圖片,但它卻包含了導航、控制、登月與返航的所有邏輯。
開發者必須手寫 Assembly 組合語言,每一行指令都經過精雕細琢,確保不浪費一個 bit。在這份 60 年前的原始碼中,你可以看到僅用 30 多行組合語言就寫出的正弦/餘弦(Sine / Cosine)高精度計算函數,這在當時是極為驚人的編程技術。
在這 72KB 程式碼中,還擁有領先時代的「多工處理」與「錯誤復原」機制。阿波羅 11 號登月時,AGC 電腦曾發出著名的「1202 警報」,當時因為雷達數據過載,導致 4KB RAM 資源耗盡。幸好程式設計團隊加入了優先調度權系統(Priority Scheduling),系統會自動捨棄低優先權任務,僅保留最關鍵的引擎控制與導航並自動重啟。這種「Graceful Failure」的概念,是現代作業系統穩定性的鼻祖。
此外,原始碼文件中充滿了當年工程師的幽默感。例如在點火程序的註解中,工程師引用了當時著名的電台 DJ 標語「BURN_BABY_BURN」;在處理登陸雷達的子程序中,註解寫著「SEE IF THE SILLY THING IS STILL ON」(看看這蠢東西是不是還開著);甚至在程式碼中埋了《莎士比亞》亨利六世的台詞,來吐槽繁瑣的數據輸入過程。
值得注意的是,這次 NASA 公開了 AGC 引導電腦系統原始碼後,國外已經有高手編寫了 AGC 模擬器,讓大家可以嘗試體驗當時的登月系統是如何操作。
近日,NASA Artemis II 任務在飛往月球途中遇上 Microsoft Outlook 突然故障,需要由地面控制中心遙距登入修復。在我們現在動輒消耗幾 GB 記憶體的電子產品時代,再看看 60 年前僅有 72KB 的登月程式碼,它不僅僅是出土的歷史文物,更證明了「優秀的軟件架構可以彌補硬件的不足」,確實能給現代軟件工程師帶來不少啟發。
That's one small step for man, one giant leap for mankind. 讓我們向 60 年前的 AGC 引導電腦系統的軟體工程師們致敬。
[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接
送出中...
論壇跳轉 ...
最近訪問的論壇 ...
感官至上
文字海洋
軟體求助討論區
所在時區為 GMT+8, 現在時間是 2026-6-7 06:33 AM
清除 Cookies
-
連絡我們
-
TWed2k
© 2001-2046
-
純文字版
-
說明
Discuz!
0.1
| Processed in 0.019150 second(s), 8 queries , Qzip disabled