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