1969 年 7 月 20 日,“阿波羅 11 號”飛船登月,宇航員尼爾·阿姆斯特朗(Neil Armstrong)成功踏上月球表面,標志著人類第一次踏上月球,完成重要的一步:“這對個人來說是一小步,對人類來說卻是一大步。
2019 年 7 月 20 日的今天,正是人類登月 50 周年。
這兩天,Apollo-11的源碼項目一直占據(jù) GitHub 熱榜第一,截至發(fā)稿,已獲得 37,000+ 個Star。
其實 Apollo-11 并非是沖著在這 50 周年才開源,早在 2014 年便有第一次的代碼 commit,并在 2016 年開源。目前已累計超過 300 次commit,有近5000 個 Fork。
這些代碼是阿波羅11號制導計算機(AGC)中指令模塊(Comanche055)和登月模塊(Luminary099)原始代碼,這個項目的目的是存儲阿波羅 11 號原始代碼。
不重要的登月代碼才開源?
可能會有人認為,能開源的登月代碼應該不算是重要的代碼。實際上并不是的。那么 AGC 究竟是什么?
阿波羅制導計算機(AGC)于上世紀 60 年代由美國國家航空航天局(NASA )開發(fā),主要用來控制阿波羅宇宙飛船上的導航與制導系統(tǒng)。
阿波羅號太空船實際上是兩種不同的航天器,分為指揮艙(CM)和登月艙(LM)。指揮艙是用來讓三名宇航員登上月球,然后再接回來。登月艙是用于承載兩名在月球行走的宇航員,而第三名宇航員則留在指揮艙中,繞月球軌道運行。
所以說在人類第一次登月的三位宇航員里,只有前兩位宇航員阿姆斯特朗和巴茲·奧爾德林(Buzz Aldrin)真正地在月球行走,第三位邁克爾·科林斯(Michael Collins)則是坐在飛船里執(zhí)行任務。
無論是否有宇航員的協(xié)助,每個航天器都需要能夠在太空中航行,因此需要有一個“制導系統(tǒng)”。該指導系統(tǒng)由麻省理工學院的儀器實驗室開發(fā),這個制導系統(tǒng)的一個重要部分是阿波羅制導計算機——“AGC”。
在阿波羅任務中,有兩個 AGC,一個用于指導艙,一個用于登月艙。這兩個AGC 是相同且可互換的,但它們運行不同的軟件,因為航天器執(zhí)行的任務是不同的。
此外,由 AGC 運行的軟件隨著時間的推移而發(fā)展,所以在后來的任務中使用的AGC 軟件(如 Apollo 17)與早期的任務(如 Apollo 8)略有不同。
所以說,這份源碼還是很重要的。
在該項目里,還列出當時參與編寫這些代碼的程序員:
正因為有了這些程序員,我們才完成在科學上重要的“一大步”。
驚心動魄的登月時刻
這位女程序員拯救了所有
阿波羅 11 號登月的過程并不如阿姆斯特朗登月時那“輕松”的一步,而是驚險萬分!如果沒有這位女程序員,可能就阿波羅就無法成功登月了。
她就是瑪格麗特·希菲爾德·漢密爾頓(Margaret Heafield Hamilton),在美國媒體 IT World評選“在世的世界上最偉大程序員”中,瑪格麗特排名第一。
一開始為了貼補家用,瑪格麗特成為實驗室臨時編碼員,后因工作出色,被推薦去了 NASA。
當時她帶領(lǐng)團隊為阿波羅登月計劃做后備方案,由于大家是奔著成功去的,所以她負責是最不受重視的部分:萬一任務失敗之后的后備方案。
但瑪格麗特依然認真地用模擬器模擬飛行狀態(tài),檢查系統(tǒng)漏洞。
可沒想到阿波羅 11 號飛船準備正式登陸月球前幾分鐘,雷達發(fā)來的大量的數(shù)據(jù)涌入計算機存儲區(qū),讓系統(tǒng)近乎崩潰,飛船將在月球墜毀,宇航員已做好犧牲的準備。
幸好有瑪格麗特編寫的后備方案軟件抗住了壓力:在大量錯誤數(shù)據(jù)突然涌入,計算機不堪重負是因為進行了一系列不必要的計算,事實上最重要的資源應該用在安全登錄上,其他不重要的任務將終止。
這就是她后來提出的“異步處理”概念。
正因為有了這樣優(yōu)秀嚴謹?shù)某绦騿T,人類才能完成第一次登月。后為了表彰她在登月計劃中的貢獻,奧巴馬授予她“自由獎章”。
所以在我們紀念人類登月 50 周年之際,別忘了給我們優(yōu)秀的程序員點贊。
-
源碼
+關(guān)注
關(guān)注
8文章
647瀏覽量
29281 -
GitHub
+關(guān)注
關(guān)注
3文章
472瀏覽量
16483
原文標題:近4萬Star,登月源碼登頂GitHub,這位女程序員“拯救”了阿波羅
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論