1969 年 7 月 20 日,阿姆斯壯與艾德林駕著登月艙,預計再過三分鐘就要降落月球表面,完成前所未有的壯舉。不料,此時導航電腦突然出現「執行超載」的緊急訊息,他們兩人面面相覷,連忙呼叫休士頓:該繼續或中止任務?
******
1961 年,漢密爾頓在勞倫茲博士的實驗室工作兩年後,轉到以國防專案為主的林肯實驗室,同樣是做程式設計的工作。雖然都是在麻省理工學院,但林肯實驗室由於有軍方的資助,所用的 AN/FSQ-7 電腦不但是當時最大的電腦,還具有網路連線能力。
所謂網路並不是現今的 Internet,AN/FSQ-7 只是與各個雷達站連線,接收即時訊號,建構成「半自動地面防空系統」。漢密爾頓要做的便是寫套程式,讓電腦根據雷達站傳來的資料判斷目標是否為敵機。除此之外,她也為空軍撰寫追蹤衛星的程式。這段經歷讓她在 1964 年雀屏中選,加入阿波羅計畫。
漢密爾頓仍是在麻省理工學院工作,只不過又換到另一個承接阿波羅導航系統的「儀表實驗室」。上次她替最大的電腦撰寫程式,這次剛好是另一個極端,執行導航程式的電腦 AGC 只有 32 公斤重。這是因為 AGC 之後要安裝在指揮艙與登月艙上,得盡量輕小,因此它完全不用真空管,是第一台全部採用矽電晶體的電腦。
這次漢密爾頓仍然得自己翻閱手冊,學會 AGC 所用的組合語言。事實上,當時普遍認為寫程式原本就是靠自己心領神會,沒法像電機工程那樣有系統性的教學方式,所以大學也都沒有專門科系。寫程式既然不成為一門學科,自然難以獲得敬重。
漢密爾頓與美國太空總署 (NASA) 的人接觸,感受更加深刻,於是她刻意用「軟體工程」來稱呼自己所做的事,以示寫程式也與硬體工程一樣有科學方法,應該平起平坐。一開始那些男性工程師都嘲笑漢密爾頓發明這個用語,但隨著阿波羅計畫越來越緊鑼密鼓,電腦的角色也越來越吃重,漢密爾頓轄下的軟體人員快速增長到近百人,大家終於認可「軟體工程師」這個職稱。
另一方面,漢密爾頓晉身為媽媽這個身分也帶給她更多壓力。那些男性工程師有老婆在家相夫教子,可以無後顧之憂地加班到深更半夜,但她若加班,就被認為未盡母親的天職。後來她若要在假日加班,索性將女兒蘿倫 (Lauren) 也一起帶去,但她還是要忍受異樣眼光,因為這更是極不尋常的作法。沒想到有次竟因而無意間發現一個安全性的問題。
那天四歲的蘿倫自己亂玩指揮艙模擬器的鍵盤,突然間系統整個當機。漢密爾頓過來檢查後,發現原來是蘿倫在指揮艙已經進入飛行模式時,又啟動了飛行前的程式 P01。她大驚失色,連忙向 NASA 報告,要求改寫程式以防萬一。但 NASA 的主管否決了她的要求,因為太空人訓練有素,不可能犯這種錯誤,沒必要為此造成時程延宕。沒想到莫非定律再次應驗,不該發生的就是發生了。
1968 年 12 月 26 日,阿波羅 8 號返回地球途中時,地面控制中心要求在自動模式下測試天線,以確保第二天的電視轉播順利。駕駛員洛維爾 (James Lovell) 依指示一個個按下鍵盤,突然間太空艙竟自己翻轉起來。洛維爾大吃一驚,連忙切換為手動模式後,以目光搜尋窗外的獵戶座參宿七與天狼星,將太空艙回歸正確方位。
原來他剛剛不小心刪除了電腦中的座標資料,使得導航電腦誤以為仍在地面,遂點燃推進器,好讓太空艙轉向「上方」。洛維爾切回自動模式後,發現電腦上顯示的仍是發射前的程式 P01,在控制中心的引導下,他才順利予以解除,設定回正確的導航程式,終於有驚無險地度過這個意外狀況。
經此教訓,NASA 終於放手讓漢密爾頓為程式增添各項防呆、容錯的功能,不久後,她的堅持與努力就發揮了關鍵作用。文章一開頭描述阿波羅 11 號的登月小艇快降落前,出現「執行超載」的訊息,正是她修改程式後才有的警示。
原來不知是阿姆斯壯或艾德林誤開了雷達開關,讓電腦瞬時多了額外工作要處理。漢密爾頓設想過這類爭奪運算資源的衝突可能發生,已經將程式修改成遇到這種狀況就跳出警告訊息,讓太空人決定何者優先處理。幸好控制中心的電腦工程師葛曼 (Jack Garman) 知道這則訊息代表的意義,連忙叫他們繼續原來的降落任務。儘管由於耽擱了幾十秒,阿姆斯壯必須改以手動操控,終於還是成功降落在月球表面。
後面所寫下的歷史新頁大家都知道了,但如果漢密爾頓沒有在程式加入這項功能,登月小艇的電腦可能會因為無法負荷而當機,阿姆斯壯是否還能踏出「人類的一大步」就不得而知了。
2016 年,緊接在凱薩琳.強森(註)之後,漢密爾頓也獲頒美國平民的最高榮譽——「總統自由勳章」,美國總統歐巴馬在頒獎典禮給予頌辭:「她象徵了那一代幫助人類上太空,卻未獲讚揚的女性。」的確,很少人會注意到「挽救」了登月任務的漢密爾頓,但其實何止太空任務,現在的軟體工程師也很少人知道這位為他們正名、為程式設計立下諸多規範的女性先驅。
註:凱薩琳.強森於 2015 年獲頒總統自由勳章,她曾在 NASA 擔任計算員,也對太空任務作出重大貢獻。電影《關鍵少數》(Hidden Figures) 即是以她為主角,我也曾寫過介紹她生平的文章。
- 標題圖片:漢密爾頓拿著麻省理工旗幟與阿波羅登月小艇模型合影。圖片來源:MIT’s Tumblr。
- 參考資料:
- Her Code Got Humans on the Moon—And Invented Software Itself | WIRED
- AGC – Conference 1: Margaret Hamilton’s introduction | Caltech
- The Apollo 8 Flight Journal – Day 5: The Green Team (archive.org)
- Apollo 11 Lunar Surface Journal: Program Alarms (nasa.gov)
- Margaret Hamilton: ‘They worried that the men might rebel. They didn’t’ | Computing | The Guardian
- Margaret Hamilton (software engineer) | Wikipedia