文 | 新智元
50年前的那一天,全人類千百年來的夢想實現了,人類首次登上月球。阿波羅登月背後的功臣是30多萬名技術人員和14.5萬行計算機代碼,目前代碼已在GitHub開源。今天就跟我們一起回顧50年前的那個榮耀時刻。
時間:1969年7月21日02:56 UTC
地點:月球
阿姆斯特朗:我正在梯子下面。登月艙的踏板僅在表面凹陷約1、2英寸,儘管當你靠近時表面看起來非常非常細膩,就像粉末一樣。
阿姆斯特朗:我將要踏上月球。
阿姆斯特朗:這是我個人的一小步,但卻是全人類的一大步。
阿姆斯特朗:表面很細而且是粉狀的,我可以用腳趾把它撿起來。
指揮中心:尼爾,這裡是休斯頓。我們聽到了。
阿姆斯特朗:和我們的預期不同,四處走動似乎沒有什麼困難。
奧爾德林:從我們這裡看起來非常漂亮。
阿姆斯特朗:它有一種自己獨特的荒涼之美,很像美國的許多沙漠,但是有所不同,這裡真的是十分漂亮。
1969年7月16日,巨大的「土星5號」火箭載著「阿波羅11號」飛船從美國甘迺迪航天中心點火升空,開始了人類首次登月的太空徵程。
三位執行此任務的太空人分別為指令長尼爾·阿姆斯特朗(Neil Armstrong)和指令艙駕駛員麥可·科林斯(Michael Collins)以及登月艙駕駛員巴茲·奧爾德林(Buzz Aldrin)。
從左到右依次是:阿姆斯特朗、科林斯、奧爾德林
1969年7月20日,登月艙在月球表面成功著陸。1969年7月21日,阿姆斯特朗承載著全人類的夢想踏上月球表面,成為登月第一人。
50年前的這次成功登月實現了人類千百年來的夢想,也讓我們對月球有了更全面的認知。此外,登月還促進了航天技術和計算機的發展。
要知道阿波羅登月用的計算機,主頻只有2MHz,RAM和ROM分別只有2K和36K。阿波羅計劃對計算機性能的要求,讓美國科學家們認識到計算機的重要性。
所以憑藉阿波羅計劃中的技術積累,美國大力發展微電子領域,20世紀70年代先後誕生了微電子處理器和微型計算機等。
50周年紀念:NASA公布阿波羅登月地點全景圖片
17日,為了紀念阿波羅登月50周年,NASA詹森航天中心(Johnson Space Center)的圖像專家們將阿波羅登月地點的圖像「拼接」在一起,並發布了47張登陸地點全景圖片。
「阿波羅」號太空人拍攝的個人照片由NASA詹森分站的圖像專家沃倫·哈羅德(Warren Harold)整理,阿波羅17號太空人哈裡森·「傑克」·施密特(Harrison 「Jack」 Schmitt)是唯一一位在月球上行走的地質學家,他證實了這些照片所代表的獨特視角的準確性。
Schmitt表示:
月球上的陶勒斯-利特羅山谷是太陽系中最壯觀的自然景觀之一。
山谷的山壁被陽光燦爛地照亮,比大峽谷還要高,北面高達4800英尺,南面高達7000英尺。
與此同時,山峰的背景是黑色的,這與人類在地球的體驗/印象截然不同,形成了鮮明的對比。
阿波羅17號的全景圖也被轉換成一幅身臨其境的全景圖,可以在NASA詹森的Facebook帳戶上看到。
阿波羅制導計算機(AGC)代碼開源,登GitHub熱第一
而就在今天,GitHub一個名叫「Apollo-11」的項目榮登今日趨勢榜第一,已獲33000+顆星。
該項目是阿波羅11號制導計算機(AGC)中的指令模塊(Comanche055)和登月模塊(Luminary099)的原始代碼。
項目的電子化過程是由Virtual AGC和MIT Museum共同完成。
上世紀60年代,MIT一起實驗室的程式設計師們需要給登月計劃開發飛行控制軟體,但是當時並沒有現在如此成熟的技術,他們必須自己打造一套系統。
於是,他們提出了一種存儲電腦程式的新方法——線存儲器,並創造了一種特殊版本的彙編語言。現在許多程式設計師聽到「彙編語言」都有可能瑟瑟發抖,而MIT的程式設計師為阿波羅制導計算機(AGC)編寫了許許多多這種晦澀難懂的代碼。
那麼剛才說到的「許許多多」到底有多少行代碼呢?請看下圖。
阿波羅登月計劃軟體工程主管MargaretHamilton,及她身旁一大堆AGC代碼文件
AGC代碼其實早在2003年的時候由Ron Burkey上傳到了網絡。他根據MIT在網上發布的原始硬拷貝的掃描件進行了轉錄。
雖然Burkey為此付出了許多,但對於當今很多開發者來說,AGC代碼本身還是有些晦澀難懂。後來NASA的一位實習生Chris Garry將AGC代碼完整地上傳到了GitHub。
很快,這份資源在網絡上迅速傳開,但是讓人們感興趣的點卻更多的在於這份代碼的注釋——著實過於詼諧幽默了。
例如,在登月模塊(Luminary099)文件夾中,有一個名為BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc的文件,中文可以叫做「燃燒吧,寶貝,燃燒吧——控制點火程序」,從名字上來看就非常的有意思了。
在開頭的注釋中,這樣寫道:
「燃燒吧,寶貝,燃燒吧」可追溯到1965年的洛杉磯騷亂,當時著名DJ、電臺所有者「偉大的蒙塔古」(Magnificent Montague)在打碟時使用了這句話。偉大的蒙塔古是上世紀50年代中期至60年代中期,在芝加哥、紐約和洛杉磯極富感召力的靈歌代表人物。
阿波羅11號的大腦:這是人類的勝利,也是機器的勝利
也許阿波羅11號登月任務中最具戲劇性的時刻是當「鷹號」登月艙開始最後一次降落到月球表面時,飛船的電腦超載了!
1969年7月20日,尼爾·阿姆斯特朗在離月球表面幾英裡的上空盤旋,尋找一個安全的落腳地來創造歷史。
把第一批人送到月球的燃料僅剩幾分鐘可用。在阿波羅11號狹窄的月球著陸器上,一個功率計突然失靈了。通訊開始淡入淡出。然後,警告開始閃爍:程序報警。程序報警。(Program alarm. Program alarm.)
機上的電腦一共發出了五次緊急信號,這是阿姆斯特朗和機組成員奧爾德林從未練習過的。
在那一刻,兩名太空人的生命、30多萬名技術人員的努力、8年耗資250億美元的工作,以及一個國家的驕傲,都取決於幾行開創性的計算機代碼。
一份18英寸厚的列印文件顯示了控制阿波羅登月艙降落到月球的部分計算機代碼。圖:《華爾街日報》TONY LUONG
人類從來沒有在0和1的代碼上冒過這麼大的風險。然而,他們決定相信機器和代碼,最終,阿姆斯特朗和奧爾德林作為第一批登上月球的人收穫了榮耀。
「軟體拯救了任務,」85歲的弗雷德·馬丁(Fred Martin)說,他負責了阿波羅制導程序開發的大部分內容。
沒有阿波羅飛船上的電腦,就沒有登月,就沒有勝利的第一步,就沒有人類太空旅行的高潮。50年後來看,登月是人類的偉大勝利,也是機器的勝利,標誌著計算機歷史上最重要的15分鐘。
「他們把計算機放在這個雄心勃勃的項目的中心,」計算機歷史博物館軟體歷史中心主任David C. Brock說。「這是對這項技術的真正考驗,也是對每個人的信念和願望的考驗。」
阿波羅11號登月艙「鷹號」在分離後,開始在計算機引導下降落到月球表面 來源:NASA
阿波羅制導計算機(AGC)是第一臺數字飛行計算機、是迄今為止最先進的微型計算機、是第一臺使用矽晶片的計算機,同時也是第一臺機組人員生命依賴於其功能的機載計算機。
今天,如果你將 NASA 使用的計算能力與任何常見設備進行比較,都會覺得不可思議。比如,iPhone 的處理能力是 Apollo 11 計算機的 100,000 多倍;憑藉 4GB 的 RAM,iPhone擁有超過Apollo 11 計算機100萬倍的內存,而 512GB 的存儲空間則相當於Apollo 11 計算機的700萬倍。
任何現代設備都具有比早期機器更大的原始計算能力,但是 Apollo 計算機非常強大,可靠,並且完成了它的任務。你無法用智慧型手機將宇宙飛船引導到月球上。
阿波羅制導計算機(AGC)和DSKY
阿波羅制導計算機由MIT儀器實驗室開發,它的外表就像是一個由兩部分組成的黃銅手提箱,裝在太空飛行器的命令模塊(CM)和月球模塊(LM)中,總長61×32×17 釐米、重 14 公斤。太空人使用數字顯示器和稱為 DSKY 的鍵盤與 AGC 通信。
安裝在指揮艙控制面板上的AGC的顯示屏和鍵盤(DSKY)接口
命令模塊中的AGC有兩項主要工作。首先,它計算了到達月球的必要航線,由太空人在飛行中使用的六分儀進行天文測量校準,這個六分儀與航海中使用的六分儀沒有什麼不同。他們會把月亮、地球或太陽排成一條直線,用另一條線確定恆星的位置。計算機將精確地測量這些角度並重新計算其位置。
其次,命令模塊控制了太空飛行器的許多物理部件。AGC可以與太空飛行器內的150個不同設備進行通信,這是一項極其複雜的任務。
阿波羅制導計算機中的扁平封裝集成電路
最初的重點放在硬體上。MIT儀器實驗室的計算機設計師決定使用集成電路或矽 「晶片」 來構建計算機。
Apollo 中使用的矽晶片內部的微觀視圖
現在來看,這似乎是顯而易見的,因為今天我們在任何消費設備中享受著集成電路技術的成果。但是在 20 世紀 60 年代早期,當做出這個決定時,矽晶片未經測試,其可靠性是一個很大的未知數。
儘管有爭議,MIT儀器實驗室的工程師對他們的設計進行了有力的辯護,並說服了NASA。實驗室與發明集成電路的飛兆半導體公司密切合作,以確保可靠性。
晶片在嚴格的溫度,振動,汙染等條件下進行了測試。最終,命令模塊和月球模塊上的阿波羅制導計算機在任務期間沒有遇到過硬體故障。
太空人通過 DSKY 與 AGC 通信
太空人通過DSKY與計算機通信,輸入數字,然後得到回覆。用戶界面系統依賴於一系列的程序代碼,以及「動詞」和「名詞」代碼。動詞是計算機可以做的事情(如「78 UPDATE PRELAUNCH AZIMUTH」)。名詞是數值量或測量值(「33 TIME OF IGNITION」)。
阿波羅制導計算機中動詞和名詞的部分數字代碼列表,列印在側板上供快速參考
同時瑪格麗特·漢密爾頓 (Margaret Hamilton)領導軟體設計。當人們認識到軟體對於登月任務真正重要時,漢密爾頓的團隊擴大到了350人。他們編碼的系統非常先進。
瑪格麗特·漢密爾頓領導350人的軟體團隊
但它的大多數 「軟體」 實際上都是硬連線的:程序是編織的,用微小的甜甜圈形狀的金屬 「核心」 像串珠一樣串在一組電線上,電線在圈外面代表0,電線穿過圈裡面代表1。
一旦製作完成,就無法改變繩子內部的單個位,因此對軟體的任何更改都需要重新編織一條全新的繩子,而且最後一刻的更改是不可能的。
早期版本的阿波羅制導計算機,稱為AGC-3
47年了,人們為何不再登月了?
1972年12月11日,阿波羅17號在月球表面著陸。這是人類最後一次載人登月,也是人類最後一次離開低地球軌道。40多年來,人們再未踏足月球的表面。在邁出了「人類的一大步」之後,我們為什麼不再登月了?
原因眾說紛紜,但一般認為以下幾個因素是人類登月計劃沒有再次實施的重要原因。
首先就是太貴了。作為阿波羅計劃的主要實施者,NASA在該計劃上一共花費了240億美元,大約相當於今天的1800億美元,在20世紀60年代中期,美蘇之間太空競賽達到最高潮時,NASA每年經費佔到美國聯邦總預算的4%以上,這在今天是完全不可想像的。在阿波羅計劃實施期間,總共僱用了約40萬人,與全美20000家公司、大學和政府機構有著合作關係。
阿波羅計劃是美國歷史上和平時期最大規模的一次大動員。儘管美國宇航局是一個民用機構,但阿波羅計劃成功的實施,是因為它資金充足,而且實施的是半軍事化管理模式:除了一人之外,所有太空人都是從空軍飛行員和海軍飛行員中精心挑選的; 許多行政人員都在二戰中在軍隊中服役。在美國現有體制下,這種高度集中、準軍事化管理的動員模式很難長期維持。
在此期間,人類對航天探索的大方向也發生了重大變化,近地空間成為各大強國爭奪最激烈的新戰場,而且技術成本遠遠低於登月。在當時的冷戰背景下,前蘇聯已經在將準備與美國打擂臺的登月飛船改裝成近地空間站,美國的太空戰略發生重大轉移,導致阿波羅18號-20號直接被砍掉。
最後,除了邁出了「人類的一大步」之外,月球很大程度上就是一片荒地,沒有發現有探索價值的跡象,同樣的事情,美國已經前後做了6次,花了不少錢,虧本買賣也不能總做起來沒完。
總而言之就是,登月花錢太多,消耗太大,收益太少。另外,和你一直較勁的老對手已經主動放棄了,找不到繼續登月的理由了。
千百前來,人類對月球的探索從未停止,以前如此,現在亦是如此。
人類下一次登月又將會是何時呢?