1969 年 7 月 20 日,“阿波羅 11 號”飛船登月,宇航員尼爾·阿姆斯特朗(Neil Armstrong)成功踏上月球表面,標志著人類第一次踏上月球,完成重要的一步:“這對個人來說是一小步,對人類來說卻是一大步。
2019 年 7 月 20 日的今天,正是人類登月 50 周年。
這兩天,Apollo-11的源碼項目一直占據 GitHub 熱榜第一,截至發稿,已獲得 37,000+ 個Star。
其實 Apollo-11 并非是沖著在這 50 周年才開源,早在 2014 年便有第一次的代碼 commit,并在 2016 年開源。目前已累計超過 300 次commit,有近5000 個 Fork。
這些代碼是阿波羅11號制導計算機(AGC)中指令模塊(Comanche055)和登月模塊(Luminary099)原始代碼,這個項目的目的是存儲阿波羅 11 號原始代碼。
不重要的登月代碼才開源?
可能會有人認為,能開源的登月代碼應該不算是重要的代碼。實際上并不是的。那么 AGC 究竟是什么?
阿波羅制導計算機(AGC)于上世紀 60 年代由美國國家航空航天局(NASA )開發,主要用來控制阿波羅宇宙飛船上的導航與制導系統。
阿波羅號太空船實際上是兩種不同的航天器,分為指揮艙(CM)和登月艙(LM)。指揮艙是用來讓三名宇航員登上月球,然后再接回來。登月艙是用于承載兩名在月球行走的宇航員,而第三名宇航員則留在指揮艙中,繞月球軌道運行。
所以說在人類第一次登月的三位宇航員里,只有前兩位宇航員阿姆斯特朗和巴茲·奧爾德林(Buzz Aldrin)真正地在月球行走,第三位邁克爾·科林斯(Michael Collins)則是坐在飛船里執行任務。
無論是否有宇航員的協助,每個航天器都需要能夠在太空中航行,因此需要有一個“制導系統”。該指導系統由麻省理工學院的儀器實驗室開發,這個制導系統的一個重要部分是阿波羅制導計算機——“AGC”。
在阿波羅任務中,有兩個 AGC,一個用于指導艙,一個用于登月艙。這兩個AGC 是相同且可互換的,但它們運行不同的軟件,因為航天器執行的任務是不同的。
此外,由 AGC 運行的軟件隨著時間的推移而發展,所以在后來的任務中使用的AGC 軟件(如 Apollo 17)與早期的任務(如 Apollo 8)略有不同。
所以說,這份源碼還是很重要的。
在該項目里,還列出當時參與編寫這些代碼的程序員:
正因為有了這些程序員,我們才完成在科學上重要的“一大步”。
驚心動魄的登月時刻
這位女程序員拯救了所有
阿波羅 11 號登月的過程并不如阿姆斯特朗登月時那“輕松”的一步,而是驚險萬分!如果沒有這位女程序員,可能就阿波羅就無法成功登月了。
她就是瑪格麗特·希菲爾德·漢密爾頓(Margaret Heafield Hamilton),在美國媒體 IT World評選“在世的世界上最偉大程序員”中,瑪格麗特排名第一。
一開始為了貼補家用,瑪格麗特成為實驗室臨時編碼員,后因工作出色,被推薦去了 NASA。
當時她帶領團隊為阿波羅登月計劃做后備方案,由于大家是奔著成功去的,所以她負責是最不受重視的部分:萬一任務失敗之后的后備方案。
但瑪格麗特依然認真地用模擬器模擬飛行狀態,檢查系統漏洞。
可沒想到阿波羅 11 號飛船準備正式登陸月球前幾分鐘,雷達發來的大量的數據涌入計算機存儲區,讓系統近乎崩潰,飛船將在月球墜毀,宇航員已做好犧牲的準備。
幸好有瑪格麗特編寫的后備方案軟件抗住了壓力:在大量錯誤數據突然涌入,計算機不堪重負是因為進行了一系列不必要的計算,事實上最重要的資源應該用在安全登錄上,其他不重要的任務將終止。
這就是她后來提出的“異步處理”概念。
正因為有了這樣優秀嚴謹的程序員,人類才能完成第一次登月。后為了表彰她在登月計劃中的貢獻,奧巴馬授予她“自由獎章”。
所以在我們紀念人類登月 50 周年之際,別忘了給我們優秀的程序員點贊。
-
源碼
+關注
關注
8文章
685瀏覽量
31317 -
GitHub
+關注
關注
3文章
488瀏覽量
18662
原文標題:近4萬Star,登月源碼登頂GitHub,這位女程序員“拯救”了阿波羅
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
芯盾時代SDP助力企業應對核心機密泄露危機
程序員最常見謊言
存儲芯片制造全流程大揭秘!原來小小芯片背后藏著這么多門道
奔赴熱AI,碼力全開!Talkweb House@1024程序員日系列活動圓滿收官
開鴻智谷“以賽促學、以賽選才”|1024程序員節暨開源鴻蒙構建大會圓滿落幕!
鋼鐵廠降本秘訣:風機預警讓停機時間砍半
從美國公司變為中國公司,中國最大傳感器企業的往事秘辛(創始人首次披露)
【技術貼】艾為“超薄封裝”呼吸燈系列:助力手機輕盈化
隔離放大器:電子世界的“翻譯官”與“安全衛士”
程序設計與數據結構
“兩會”熱議“機器人和飛行汽車”,核心動力電機可能會火
如何在 樹莓派 上編寫和運行 C 語言程序?
零基礎入門:如何在樹莓派上編寫和運行Python程序?
驚心動魄的登月時刻,這位女程序員拯救了所有!
評論