大數據文摘出品
作者:易琬玉
50年前的今天,美國太空人尼爾森·阿姆斯特朗從阿波羅11號飛船登月艙走出,在月球表面留下了人類登月的第一個腳印。
AR應用「JFKmoonshot」模擬的從Apollo11太空艙走出的視頻
美國總統甘迺迪1961年就設定了登月目標。阿波羅計劃歷時9年,經歷了10次失敗,Apollo11號才終於將人類的蹤跡帶到了月球。在著陸前,躲開了隕坑和巨石太空人阿姆斯特朗和奧爾德林在著陸點周圍探索了兩個多小時,他們採集了土壤和巖石樣本、插上美國國旗、留下了紀念阿波羅1號太空人的獎章和寫著「我們為全世界和平而來」的牌匾。那是真正的「人類群星閃耀時」!
從缺乏飛行經驗到第一次在月球上邁出人類探索的腳步,Apollo11記錄的是從0到1的重大轉折。
而現在,完成這場宏大登月計劃的制導計算機(AGC)所有原始碼,你都可以在Github上找到了!
先放上網址:
https://github.com/chrislgarry/Apollo-11
這份原始碼的開放工作從三年前就已經開始。通過轉錄MIT博物館收藏的紙質拷貝文件,Paul Fjeld完成了代碼的數位化工作,並由專門研究技術和科學史的學者Deborah Douglas完成整理。
Paul Fjeld本身也是一名空軍藝術家,曾作為阿波羅17號的觀察員,為阿波羅登月任務創作了一系列文章和插畫。在執行阿波羅17號任務時,他遇到了一些阿波羅計劃的飛行教練,「在夜間維護期間,我花了大約20個小時學習飛行宇宙飛船。方便的時候,我會在晚上用他們暫時不用的模擬器。」
參加阿波羅17號任務時的Paul Fjeld
整理這些原始碼是一件費時費力的事情,如果不是憑著對於宇宙探索的熱愛,很難想像會有人堅持了三年將這14多萬行的代碼耐心數位化並整理公布出來。
每個無人飛船都需要制導系統。在所有阿波羅計劃任務中,都有兩個阿波羅的制導系統(簡稱AGC),一個用於指揮艙,一個用於登月艙。這次開源的就是這兩個部分的原始碼。
擁有了這些代碼我們就能「上天」嗎?這次Apollo11登月代碼的開放在reddit上面引發了激烈討論,Github的代碼倉庫也慘遭注水。
「雖然軟體可以但是硬體真的是要了老命了」,reddit上網友評論說已經有小哥用Arduino和Raspberry Pi 開始嘗試了(Arduino是一個微控制器主板。微控制器是一種簡單的計算機,可以一次運行一個程序。Raspberry Pi是一種通用計算機,通常帶有Linux作業系統,能夠運行多個程序)。
也有熱心網友潑冷水,「私自登月是非法的」。但是科羅拉多州是個例外,因為美國的下一次登月將由私人公司而不是美國宇航局進行,而科羅拉多有兩家公司(Lockheed Martin 和 Deep Space Systems )入圍。
雖然用這段代碼我們不能真的「上天」,但是文摘菌為大家找到了一個網站。
這是NASA聯合 The Instrumentation Laboratory、MIT、劍橋以及MASS共同資助的一個項目,為了給阿波羅計劃登月任務中使用的機載制導計算機提供計算機仿真。
如果對編譯阿波羅原始代碼感興趣,不妨去看看。從網站可以獲取各種版本的原始AGC軟體,真的可以在電腦上重現當年阿波羅登月時的制導系統指揮場景,在自己的電腦上體驗一把登月的快樂。
網址在這裡:
http://www.ibiblio.org/apollo/
同時,網站也有AGC的電氣原理圖和機械圖紙,以及大量關於阿波羅計劃的文件。對阿波羅計劃感興趣的、想要做研究的小夥伴一定不要錯過!
AGC Engineering Drawings, Batch 9圖紙文件
從這次公開的代碼可以窺見阿波羅項目代碼量非常之大。一部分原因是因為要實現的指令複雜,還有一部分原因是限於當時的計算機水平,使用的是彙編語言,而三行彙編語言的代碼才抵得上一行C語言代碼。
曾提名第89屆奧斯卡最佳影片的《隱藏人物》就是以三位為美國登月計劃做出過巨大貢獻的黑人女性工程師為原型。她們負責水星計劃(美國第一個載人航天計劃)的計算工作,常因膚色和性別受到刁難和歧視,但仍不放棄自己的理想和本分,在那個計算力算力不夠的年代,幫助NASA讓約翰·格倫成為首位進入地球軌道的美國太空人。
同樣,負責阿波羅號計算機飛行軟體的「代碼女皇」瑪格麗特·漢密爾頓在人們還不知道軟體到底是怎麼一回事的時候,就開始和同事一起為世界上第一部可攜式計算機寫代碼了,他們也創造了計算機編程的核心理念。
負責阿波羅號計算機飛行軟體的「代碼女皇」瑪格麗特·漢密爾頓
在公開的Apollo11登月代碼裡也有瑪格麗特編寫的代碼,這段以彙編語言編寫的代碼即使是對今天的程式設計師來說,也是教科書級別的存在。
有趣的是,當時阿波羅號的工程師們敲代碼時還加入了自己的吐槽,它們就像是上世紀60年代的極客們留給我們的時間膠囊。
變的是時間,不變的是我們人類對於宇宙和自身生生不息地求索。
參考資料:
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/
精品課程推薦 | 數據科學實訓營第8期
4個月,手把手帶你走完數據採集、清洗、存儲、分析、可視化、機器學習建模、大數據全流程!