登月背後:這個程序媛把人類送上月球
阿波羅計劃曾將 12 位人類男性送上月球,但在這群成功男人的背後,卻站著一位真正的女神。
關於阿波羅計劃的一些秘密可能永遠不會公開
今天,極客君就和你來聊聊那個時代的程序媛,那個時代的極客女神:
她的代碼指引著他們準確飛向月球,又引導著他們平安返回地面——她就是瑪格麗特·漢密爾頓(Margaret Hamilton),剛被授予美國的總統自由勳章。
女神的阿波羅計劃工作照
我們的女神一開始並不寫代碼,但為了供丈夫去讀哈佛法學院,她就找到了一份臨時的編碼工作,地點是麻省理工學院的人工智慧實驗室。
和初代黑客比代碼
那時,計算機領域的黑客文化正在該實驗室孕育。
當黑客們正嘗試讓 TX-0 輸出巴赫的旋律時,瑪格麗特就在 PDP-1 上幫助氣象學研究對大氣進行建模;當黑客們在 PDP-1 上沉迷於《太空大戰》遊戲時,女神開始為美國空軍的 SAGE 系統編寫防空軟體。
PDP-1 電腦上的《太空大戰》遊戲
當黑客們的「午夜計算機改裝組織」為 PDP-6 改裝不兼容分時系統時,女神已經開始為阿波羅飛船編寫導航軟體,女神的女兒還要跟著她在實驗室的地板上睡覺、玩耍。
瑪格麗特和她的阿波羅 11 號代碼
當然,黑客們並非沒有為女神添加麻煩,她氣象項目的 Vortex 程序就因黑客們對計算機的改裝而崩潰過。
不過,對於智力上的挑戰,女神也能樂在其中、漂亮地回擊,黑客們也會知趣地把改裝工作做得更好。
「編」出完美的導航軟體
儘管導航軟體的代碼量很大,但真正的難題卻是把代碼變成可用的程序。
現在的程序員,把鍵盤敲出來的代碼用現成的編譯器編譯一下就能運行,但當時的代碼真要靠人們像結繩記事一樣把代碼的信息編織到內存中:
點擊播放 GIF/1928K
在當時的磁芯內存上「穿針引線」進行編碼
線路穿過磁芯會生成信號,是為「1」;線路繞過磁芯則沒有信號,是為「0」:
磁芯內存上的 「0」 和 「1」
把寫好的代碼編織成一個飛船可用的程序,需要數月的時間;一旦出錯,返工的工作量之大就難以想像。
好在,阿波羅飛船的自動導航軟體還是按期完成了。
地球軌道,阿波羅 7 號的測試里,導航軟體運行得完美無瑕。
阿波羅 8 號從月球軌道看地球
可在月球軌道,阿波羅 8 號的測試中,由於返程時宇航員一時疏忽,清空了所有巡航數據,飛船頓時失去了方向。
接到緊急電話後,瑪格麗特連夜奮戰,花 9 小時過完每一行代碼,然後重新上傳數據後,阿波羅 8 號終於成功返航。
阿波羅 8 號飛船模型
拯救人類的第一次登月
真正的考驗,還是隨後的阿波羅 11 號,人類首次登月。
1969 年 7 月 20 日,休斯敦時間下午 4 點 14 分,阿姆斯特朗和奧爾德林正在登月艙內準備著陸。
準備著陸月球
忽然,登月艙的報警器開始警告電腦過載。
原來,登月艙分離前,不知是誰犯了個低級錯誤,沒有關閉登月艙的對接雷達,讓電腦繼續監視那個用不著的雷達。
好在,瑪格麗特把軟體設計得足夠聰明:電腦最寶貴的計算資源,會被優先用於最關鍵的部分,如安全登陸;而不怎麼重要的對接雷達的數據,則可以忽略處理。
換言之,就是電腦可以隨時中止低優先順序任務,專註於高優先順序任務。
人類首次登上月球
兩個宇航員最終有驚無險地在月球表面著陸,此時,地球上才收到阿姆斯特朗報告安全的第一個聲音:
休斯敦,這裡是靜海基地。「鷹」著陸成功。
若非瑪格麗特那心思縝密的可靠軟體,以當時電腦蠻荒時代的程序設計,登月電腦還真有可能崩潰。那樣的話,登月艙就會毫無懸念地撞毀在月球,「人類的一小步」可能就是另一番結果:一個撞擊坑再搭上兩條生命。
宇航員凱旋而歸
第一次登月回來,阿波羅 11 號的三位宇航員即獲得當年的總統自由勳章。
直到近半個世紀後,拯救整個飛行任務的瑪格麗特·漢密爾頓終於也獲得了同樣榮譽的認可。
奧巴馬授予瑪格麗特勳章
Geek君有話說
事實上,在阿波羅登月最初的計劃中,壓根就沒有「軟體」這兩個字。NASA 後來才意識到這一點的重要性,逐漸把軟體相關的團隊擴大到了 400 多人。
但瑪格麗特最初所負責的部分,連名字都被寫作「Forget it」,因為那是「萬一」任務失敗之後的後備方案。一開始,所有人都覺得失敗不可能發生,因而也沒有人肯去重視。
可「不出錯」畢竟只是理想狀態,許多問題,瑪格麗特早就考慮到了。
女神登上阿波羅飛船模擬器
每次程序確定之後,她的團隊都會一遍遍嚴格地測試,使用模擬器(儘管還非常初級、簡陋)來模擬登陸狀況。
對於出現的 bug,她要求整個團隊要理解錯誤,梳理錯誤的原因,並防止下一次程序出錯。
在電腦和編程的「蠻荒年代」,她始終以一顆清醒而負責的頭腦來制定最初的規範。
瑪格麗特接受《連線》專訪
之所以如此努力,瑪格麗特回答得很謙虛:
(我)不想在報紙頭版頭條上看到「阿波羅計劃失敗,瑪格麗特團隊難辭其咎」。
福利社
阿波羅計劃的成功與程序員「女神」瑪格麗特的付出有密不可分的關係。同樣,很多出色的產品,離不開偉大的產品經理,更離不開兢兢業業的程序員。說出你心目中的偉大程序員,我們一起來討論下。
今天送福利給留言的所有小夥伴
歡迎大家積极參与
本期獎品是【阿波羅11號的3d列印圖紙】
上期獲得【山姆·沃爾頓《富甲美國》實體書】的小夥伴請在 24 小時內
※天文學家怎麼知道河外星系真的存在呢?
※有史以來最棒的NASA照片
※科學家耗時10多年細繪氫地圖 探秘銀河系
※那些宇宙中美麗的星系星雲
※假如把微信開機畫面換成其他7大行星
TAG:浩瀚宇宙 |
※登月背后:这个程序媛把人类送上月球
※23年後將有100人入住月球,這個神器是這樣把人類送上去的!
※是她!把人類送上了月球,了不起的「程序媛」
※明年,他們準備將一輛奧迪車送上月亮,完成德國首次月球探險!
※把人類送上月球的土星5號火箭有多強大?輝煌一時現在只剩圖紙
※今晚,我們將把一隻五仁月餅送上月球!
※蘇聯登月火箭的秘密:為什麼蘇聯沒能把人送上月球?
※今天是10月的第一天,祝福送上,請接收
※要在2025年把人類送上火星的馬斯克,是一個什麼樣的人?
※日本準備和印度合作,把月球車送上月球,你認為能成功嗎?
※今天10.1,10月第一天,祝福送上,趕緊打開,為10月開一個最吉祥的好頭!
※男子把「手機」綁在氣球上,然後送上3千米高空,2年後的照片驚呆所有人
※亞馬遜這回是真上天了 要把快遞送上月球!
※七月第一天,為我的朋友們送上祝福
※中國歷史上飛天第一人,用47支火箭把自己送上天空
※1969年,美國將宇航員送上月球,中國宇航員什麼時候登月呢?
※開國將帥只剩這33位了,新年之際,一起來送上祝福吧
※明代萬戶:中國飛天第一人,首用火箭把自己送上天空
※她這個月47歲生日,一代TVB女神,你會提前送上祝福嗎?