1969 年,美國宇航局依靠軟件工程師瑪格麗特·漢密爾頓將阿波羅 11 號的宇航員安全降落在月球表面,并將他們帶回家。
1969 年 7 月 20 日,任務(wù)控制中心的屏幕上閃爍著警告信息。隨著阿波羅 11 號登月艙降落到月球表面,美國宇航局不得不決定是否取消這項歷史性任務(wù)?!爸挥袔追昼姷臅r間,”軟件工程師瑪格麗特·漢密爾頓回憶說,“決定著陸。” 片刻之后,尼爾·阿姆斯特朗將登月艙降落在地面上,作為第一個在月球上行走的人踏入了歷史。
當(dāng)她最開始領(lǐng)導(dǎo)麻省理工學(xué)院為月球任務(wù)設(shè)計軟件的團(tuán)隊時僅 32 歲。
瑪格麗特站在團(tuán)隊為阿波羅任務(wù)設(shè)計的導(dǎo)航軟件旁邊
如果沒有她辛勤工作和領(lǐng)導(dǎo),不僅任務(wù)可能失敗,三名阿波羅宇航員甚至在任務(wù)中喪生。
誰是瑪格麗特漢密爾頓?
瑪格麗特于 1936 年 8 月 17 日出生于印第安納州保利。后來搬到密歇根州,漢密爾頓在密歇根大學(xué)安娜堡分校就讀了一段時間后,很快就轉(zhuǎn)到了印第安納州的厄勒姆學(xué)院,在那里她獲得了數(shù)學(xué)學(xué)士學(xué)位,并輔修了哲學(xué)。
1959 年,瑪格麗特在麻省理工學(xué)院擔(dān)任程序員,與混沌理論之父愛德華·諾頓·洛倫茲一起工作。在法學(xué)院學(xué)習(xí)期間,全家人支持漢密爾頓編寫軟件和氣象系統(tǒng)。
1989 年,瑪格麗特·漢密爾頓在她的辦公室里
幾年后,瑪格麗特申請了一個新項目:將人類送上月球而編寫代碼。她被聘為第一個加入阿波羅項目的程序員。到 1965 年,瑪格麗特在麻省理工學(xué)院的德雷珀實驗室領(lǐng)導(dǎo)了一個程序員團(tuán)隊。
作為阿波羅計劃的一部分,瑪格麗特為阿波羅 11 號任務(wù)設(shè)計了機(jī)載飛行軟件?!拔冶贿@個純粹的想法和以前從未做過的事實所吸引,”瑪格麗特解釋道?!拔沂堑谝粋€加入的程序員,也是他們雇傭的第一個女性。”
瑪格麗特在阿波羅計劃中脫穎而出。她不只是一個女人——在當(dāng)時已經(jīng)夠非常突出了——她還是一個母親。周末她晚上在實驗室工作時,經(jīng)常帶著年幼的女兒。
將人類帶到月球的代碼
瑪格麗特漢密爾頓探索阿波羅指揮艙
最初,NASA 并沒有預(yù)測阿波羅任務(wù)需要復(fù)雜的軟件。根據(jù)麻省理工學(xué)院教授大衛(wèi)明德爾的說法,“軟件沒有包含在日程表中,也沒有包含在預(yù)算中?!?/p>
很快,NASA 意識到如果沒有合適的軟件,這項任務(wù)就會失敗,到 1968 年,瑪格麗特的軟件團(tuán)隊已經(jīng)有 400 多名程序員在工作。該團(tuán)隊為兩臺 阿波羅 計算機(jī)編寫和測試軟件:一臺用于命令艙,另一臺用于將宇航員帶到月球表面的登月艙。
如果災(zāi)難全都集中在阿波羅任務(wù)上,責(zé)任可能會落在漢密爾頓身上。有一次,在一個聚會后的深夜,漢密爾頓突然意識到她的部分代碼是錯誤的,于是沖到實驗室?!拔乙恢痹谙胂髨蠹埳系念^條新聞,他們會指出它是如何發(fā)生的,它會指向我?!?/p>
在 1960 年代,為太空任務(wù)創(chuàng)建軟件程序并不容易。瑪格麗特和她的團(tuán)隊在紙上手寫代碼,然后使用打孔機(jī)在紙卡上打孔,這些卡被送入計算機(jī),計算機(jī)會將這些卡作為指令讀取。
在一臺巨大的霍尼韋爾大型計算機(jī)上測試了他們的穿孔卡代碼以找出模擬登月的任何錯誤后,代碼被運送到附近的雷神工廠。磁環(huán)是編織程序的 0 和 1——銅線穿過環(huán)表示 1,繞環(huán)表示 0。
銅線通過內(nèi)存磁環(huán)纏繞自身的方式代表了用于飛向月球、降落在表面并返回地球的實際導(dǎo)航軟件代碼
上面的繩索為模塊創(chuàng)建了一個硬接線代碼,這些代碼是堅不可摧且無法擦除的。
阿波羅計算機(jī)必須從太空計算引導(dǎo)方程,否則任務(wù)會失敗。這臺電腦有大約 72 KB 的內(nèi)存——不到現(xiàn)代手機(jī)容量的百萬分之一。它可以在銅繩存儲器中存儲 12,000 位(代表 1 或 0),但在其臨時工作存儲器中只能存儲 1,000 位。
在麻省理工學(xué)院從事這個項目的人說“我們證明了這是可以做到的,”他說?!拔覀冊诮裉炜雌饋矸浅I俚膬?nèi)存和非常慢的計算速度中做到了這一點?!?/p>
瑪格麗特如何拯救了阿波羅 11 號任務(wù)
尼爾·阿姆斯特朗拍攝的一張照片顯示了巴茲·奧爾德林在月球上
瑪格麗特的女兒勞倫按下模擬器上的一個按鈕,導(dǎo)致瑪格麗特正在測試的系統(tǒng)崩潰。只需在飛行過程中按下預(yù)啟動按鈕,勞倫就會從系統(tǒng)內(nèi)存中刪除導(dǎo)航數(shù)據(jù)。
“我想:我的上帝——這可能會在真正的任務(wù)中無意中發(fā)生,”瑪格麗特回憶道。但當(dāng)她建議改變該計劃時,美國宇航局回應(yīng)說:“宇航員受過訓(xùn)練,絕不會犯錯。”
然而,一次任務(wù)中,宇航員吉姆·洛厄爾也犯了同樣的錯誤。
幾乎注定登月艙著陸的警告信息
在肯尼迪航天中心,NASA 員工觀看阿波羅 11 號的起飛
在阿波羅 11 號任務(wù)中,瑪格麗特看著她的團(tuán)隊設(shè)計的軟件引導(dǎo)宇航員尼爾·阿姆斯特朗和巴茲·奧爾德林前往月球表面。
但令人心碎的瞬間出現(xiàn),電腦上閃過警告信息。在那一刻,登月艙對她的軟件充滿信心。漢密爾頓解釋說:“很快就表明,該軟件不僅通知每個人存在與硬件相關(guān)的問題,而且該軟件正在對其進(jìn)行補(bǔ)償。 ”
漢密爾頓補(bǔ)充說:“幸運的是信任我們的軟件?!?/p>
登月艙下降到月球表面時的視圖
艙內(nèi)只剩下 30 秒的燃料,尼爾·阿姆斯特朗的聲音向任務(wù)控制中心報告:“已經(jīng)著陸。
在麻省理工學(xué)院,瑪格麗特記得親眼目睹了她幫助實現(xiàn)的歷史性時刻。“我的上帝??纯窗l(fā)生了什么,”她想。“我們做到了。有效?!?/p>
至于警告信息,漢密爾頓的團(tuán)隊了解到他們的程序完全按照設(shè)計工作。在下降過程中,錯誤位置的雷達(dá)開關(guān)觸發(fā)了警告。軟件重新啟動并專注于最高優(yōu)先級的任務(wù):登月艙。如果沒有瑪格麗特編寫的錯誤檢測和恢復(fù)機(jī)制,任務(wù)就會失敗。
“當(dāng)他們降落時,這完全是一種解脫,”瑪格麗特說?!坝詈絾T很安全,軟件運行良好?!?/p>
“除了做先驅(qū)別無選擇”
2016年,奧巴馬總統(tǒng)向瑪格麗特頒發(fā)了總統(tǒng)自由勛章
2016 年,美國總統(tǒng)奧巴馬授予瑪格麗特總統(tǒng)自由勛章?!拔覀兊挠詈絾T沒有太多時間,”奧巴馬說,“但謝天謝地,他們有瑪格麗特?!?/p>
當(dāng)瑪格麗特接手執(zhí)行阿波羅 11 號任務(wù)的軟件團(tuán)隊時,她的一位老板擔(dān)心瑪格麗特團(tuán)隊中的人可能會造反。“嗯,他們沒有,”瑪格麗特打趣道。
用瑪格麗特的話說,在阿波羅 11 號任務(wù)中,“除了成為先驅(qū)之外別無選擇”。