大數(shù)據(jù)文摘出品
作者:易琬玉
50年前的今天,美國宇航員尼爾森·阿姆斯特朗從阿波羅11號飛船登月艙走出,在月球表面留下了人類登月的第一個腳印。
美國總統(tǒng)肯尼迪1961年就設(shè)定了登月目標(biāo)。阿波羅計劃歷時9年,經(jīng)歷了10次失敗,Apollo11號才終于將人類的蹤跡帶到了月球。在著陸前,躲開了隕坑和巨石宇航員阿姆斯特朗和奧爾德林在著陸點周圍探索了兩個多小時,他們采集了土壤和巖石樣本、插上美國國旗、留下了紀(jì)念阿波羅1號宇航員的獎?wù)潞蛯懼拔覀優(yōu)槿澜绾推蕉鴣怼钡呐曝?。那是真正的“人類群星閃耀時”!
從缺乏飛行經(jīng)驗到第一次在月球上邁出人類探索的腳步,Apollo11記錄的是從0到1的重大轉(zhuǎn)折。
而現(xiàn)在,完成這場宏大登月計劃的制導(dǎo)計算機(jī)(AGC)所有源代碼,你都可以在Github上找到了!
先放上網(wǎng)址:
https://github.com/chrislgarry/Apollo-11
耗時三年的源代碼開放計劃
這份源代碼的開放工作從三年前就已經(jīng)開始。通過轉(zhuǎn)錄MIT博物館收藏的紙質(zhì)拷貝文件,Paul Fjeld完成了代碼的數(shù)字化工作,并由專門研究技術(shù)和科學(xué)史的學(xué)者Deborah Douglas完成整理。
Paul Fjeld本身也是一名空軍藝術(shù)家,曾作為阿波羅17號的觀察員,為阿波羅登月任務(wù)創(chuàng)作了一系列文章和插畫。在執(zhí)行阿波羅17號任務(wù)時,他遇到了一些阿波羅計劃的飛行教練,“在夜間維護(hù)期間,我花了大約20個小時學(xué)習(xí)飛行宇宙飛船。方便的時候,我會在晚上用他們暫時不用的模擬器。”
參加阿波羅17號任務(wù)時的Paul Fjeld
整理這些源代碼是一件費(fèi)時費(fèi)力的事情,如果不是憑著對于宇宙探索的熱愛,很難想象會有人堅持了三年將這14多萬行的代碼耐心數(shù)字化并整理公布出來。
有了代碼我們就能“上天”嗎?
每個無人飛船都需要制導(dǎo)系統(tǒng)。在所有阿波羅計劃任務(wù)中,都有兩個阿波羅的制導(dǎo)系統(tǒng)(簡稱AGC),一個用于指揮艙,一個用于登月艙。這次開源的就是這兩個部分的源代碼。
擁有了這些代碼我們就能“上天”嗎?這次Apollo11登月代碼的開放在reddit上面引發(fā)了激烈討論,Github的代碼倉庫也慘遭注水。
“雖然軟件可以但是硬件真的是要了老命了”,reddit上網(wǎng)友評論說已經(jīng)有小哥用Arduino和Raspberry Pi 開始嘗試了(Arduino是一個微控制器主板。微控制器是一種簡單的計算機(jī),可以一次運(yùn)行一個程序。Raspberry Pi是一種通用計算機(jī),通常帶有Linux操作系統(tǒng),能夠運(yùn)行多個程序)。
也有熱心網(wǎng)友潑冷水,“私自登月是非法的”。但是科羅拉多州是個例外,因為美國的下一次登月將由私人公司而不是美國宇航局進(jìn)行,而科羅拉多有兩家公司(Lockheed Martin 和 Deep Space Systems )入圍。
虛擬AGC:重現(xiàn)阿波羅登月制導(dǎo)指揮場景
雖然用這段代碼我們不能真的“上天”,但是文摘菌為大家找到了一個網(wǎng)站。
這是NASA聯(lián)合 The Instrumentation Laboratory、MIT、劍橋以及MASS共同資助的一個項目,為了給阿波羅計劃登月任務(wù)中使用的機(jī)載制導(dǎo)計算機(jī)提供計算機(jī)仿真。
如果對編譯阿波羅原始代碼感興趣,不妨去看看。從網(wǎng)站可以獲取各種版本的原始AGC軟件,真的可以在電腦上重現(xiàn)當(dāng)年阿波羅登月時的制導(dǎo)系統(tǒng)指揮場景,在自己的電腦上體驗一把登月的快樂。
網(wǎng)址在這里:
http://www.ibiblio.org/apollo/
同時,網(wǎng)站也有AGC的電氣原理圖和機(jī)械圖紙,以及大量關(guān)于阿波羅計劃的文件。對阿波羅計劃感興趣的、想要做研究的小伙伴一定不要錯過!
AGC Engineering Drawings, Batch 9圖紙文件
代碼背后的英雄們
從這次公開的代碼可以窺見阿波羅項目代碼量非常之大。一部分原因是因為要實現(xiàn)的指令復(fù)雜,還有一部分原因是限于當(dāng)時的計算機(jī)水平,使用的是匯編語言,而三行匯編語言的代碼才抵得上一行C語言代碼。
曾提名第89屆奧斯卡最佳影片的《隱藏人物》就是以三位為美國登月計劃做出過巨大貢獻(xiàn)的黑人女性工程師為原型。她們負(fù)責(zé)水星計劃(美國第一個載人航天計劃)的計算工作,常因膚色和性別受到刁難和歧視,但仍不放棄自己的理想和本分,在那個計算力算力不夠的年代,幫助NASA讓約翰·格倫成為首位進(jìn)入地球軌道的美國太空人。
同樣,負(fù)責(zé)阿波羅號計算機(jī)飛行軟件的“代碼女皇”瑪格麗特·漢密爾頓在人們還不知道軟件到底是怎么一回事的時候,就開始和同事一起為世界上第一部便攜式計算機(jī)寫代碼了,他們也創(chuàng)造了計算機(jī)編程的核心理念。
負(fù)責(zé)阿波羅號計算機(jī)飛行軟件的“代碼女皇”瑪格麗特·漢密爾頓
在公開的Apollo11登月代碼里也有瑪格麗特編寫的代碼,這段以匯編語言編寫的代碼即使是對今天的程序員來說,也是教科書級別的存在。
有趣的是,當(dāng)時阿波羅號的工程師們敲代碼時還加入了自己的吐槽,它們就像是上世紀(jì)60年代的極客們留給我們的時間膠囊。
變的是時間,不變的是我們?nèi)祟悓τ谟钪婧妥陨砩幌⒌厍笏鳌?/span>
參考資料:
https://github.com/chrislgarry/Apollo-11/blob/master/README.zh_cn.md
https://www.reddit.com/r/programming/comments/ceh1gn/the_entire_apollo_11_computer_code_that_helped/