The Woman Whose Software Guided the Apollo Missions Has Died
Margaret Hamilton, the first female programmer hired to work on the space project at M.I.T., was 90.
Margaret Hamilton, who led the 100-person team that wrote the onboard software for the Apollo missions, guiding Neil Armstrong and Buzz Aldrin to a safe landing on the moon, died on Sept. 30 in Cambridge, Mass. She was 90.
Her death, in a hospital, was confirmed by her daughter, Lauren.
Ms. Hamilton was a young mathematician at the Massachusetts Institute of Technology in the early 1960s, putting her husband through law school by working in a computer lab. When she learned that M.I.T. was designing in-flight computers for the moon mission, she eagerly joined the team.
She was the first female programmer hired to work on the Apollo project, housed at M.I.T.’s Instrumentation Laboratory, in 1965. Her skills led to her promotion to director of software engineering on the project, which developed the two 70-pound onboard computers for the Apollo flights: one in the command module, which carried the astronauts from Earth, and the second in the lunar module, which set down on the moon’s surface.
Ms. Hamilton, who would bring her young daughter to work on weekends and evenings, is credited with popularizing the term “software engineering” to describe the complexity of the work her team did, thus elevating software coding to a status equal to hardware design.

-----
Margaret Hamilton, the profoundly influential computer scientist best known for leading the software engineering team at MIT’s Instrumentation Lab during NASA's Apollo program, passed away on Sep. 30, 2026. She was 90.
Hamilton left an indelible mark on computer science and space exploration. She had a talent for leadership, as well as a keen instinct for problem-solving and critical thinking – skills that will be forever remembered for enabling the “giant leap” that put humankind on the moon. She was also an entrepreneur, a trailblazing advocate for software engineering as a discipline, and an inspiration to women in STEM across the globe.
Reflecting on what she and her team accomplished, she said: “Looking back, we were the luckiest people in the world; there was no choice but to be pioneers.”
Hamilton’s many awards and honors include the 2016 Presidential Medal of Freedom; the NASA Exceptional Space Act Award; the Computer History Museum Fellow Award; the National Aviation Hall of Fame; and the Women of NASA LEGO set.
Read Hamilton’s obituary in MIT News: https://ow.ly/Y9zg50ZVHfW
剛剛才知道程式設計師先驅瑪格麗特·漢密爾頓(Margaret Hamilton)於9月30日以90歲高齡過世了。因為她的先見之明,人類首次登月才沒有搞砸,特再次轉貼之前所寫的文章,以資悼念。
🚀呼叫休士頓
1969年7月20日,格林威治時間17點44分,阿波羅11號太空人阿姆斯壯(Neil Armstrong)與艾德林(Buzz Aldrin)駕著登月艙「小鷹號」,脫離指揮艙,從月球軌道往月球表面下降,準備完成人類首度的登月壯舉。
一切按計畫進行,不料預計再三分鐘就要降落月球表面時,導航電腦突然出現「1202」的程序警報!阿姆斯壯與艾德林兩人面面相覷,他們之前在模擬器進行訓練時從未見過這個錯誤代碼,這究竟代表什麼意思?大部分的警告出現時都應該中止任務,現在也是嗎?他們連忙呼叫休士頓,請求指示。
休士頓控制中心的喇叭傳出阿姆斯壯的緊急呼叫,現場氣氛馬上凝結,不過現場的電腦工程師葛爾曼(Jack Garman)不用查閱手冊就知道1202代表什麼意思,因為這正是負責設計導航程式的瑪格麗特·漢密爾頓,當初極力爭取才有的機制……。
🚀混沌
漢密爾頓於1936年8月17日出生於印第安那州,大學主修數學、副修哲學,畢業後因夫婿進入哈佛法學院就讀,她也一起搬到波士頓。漢密爾頓原本要繼續讀數學研究所,卻發現麻省理工學院在徵程式設計員,便改變了計畫,於1959年中去應徵這個工作。
徵求程式設計員的是氣象學家勞倫茲博士(Edward Lorenz),他打算利用電腦模擬來預測天氣。當時男性都對寫程式這種低階工作不屑一顧,漢密爾頓雖然沒有經驗,仍因數學專長獲得錄用,畢竟得要懂勞倫茲博士擬出的12條方程式,才能寫成電腦程式,進行迭代運算。
漢密爾頓靠翻閱電腦手冊自學,最後駕輕就熟,還能隨時因應勞倫茲調整方程式來修改程式。後來勞倫茲教授便是在跑漢密爾頓所寫的程式時,發現奇妙的混沌現象,而在演講時說出膾炙人口的:「一隻蝴蝶在巴西輕拍翅膀,會在德州引起龍捲風嗎?」
🚀 阿波羅計畫
1961年暑假,漢密爾頓轉到麻省理工學院另一個實驗室。林肯實驗室要為軍方建構「半自動地面防空系統」,各地雷達站會將資料經由網路傳到當時最大的電腦AN/FSQ-7,漢密爾頓負責的就是撰寫程式,讓電腦即時從資料中辨識敵機。
除了防空系統,漢密爾頓還為空軍撰寫追蹤衛星的程式,這段經歷讓她在1964年雀屏中選,加入麻省理工學院的「儀表實驗室」,協助建構阿波羅計畫中的導航系統。
上次她替最大的電腦撰寫程式,這次剛好是另一個極端,用來執行導航程式的電腦AGC(Apollo Guidance Computer)只有32公斤重。這是因為AGC要安裝在指揮艙與登月艙上,受限於空間與承載重量,必須盡量輕薄短小,因此AGC捨棄真空管,成為第一台全部採用矽電晶體的電腦。
🚀軟體工程師
這次漢密爾頓仍然得自己翻閱手冊,學會AGC所用的組合語言。事實上,當時普遍認為寫程式原本就是靠自己心領神會,沒法採用電機工程那樣有系統性的教學方式,所以大學裡也沒有專門科系。寫程式既然不成為一門學科,自然難以獲得敬重。
漢密爾頓與美國太空總署(NASA)的工程師們接觸,更感受到他們的輕視。於是她刻意用「軟體工程」(Software Engineering) 來稱呼自己所做的事,以示寫程式也與硬體工程一樣有科學方法,應該平起平坐。
一開始那些男性工程師都嘲笑漢密爾頓自己發明這個用語,但隨著阿波羅計畫越來越緊鑼密鼓,電腦的角色也越來越吃重,漢密爾頓轄下的軟體人員快速增長到近百人,「軟體工程師」這個職稱終於獲得大家認同。
🚀帶小女兒上班
另一方面,漢密爾頓有了小孩後,媽媽這個身分又帶給她更多同儕壓力。那些男性工程師有老婆在家相夫教子,可以無後顧之憂地加班到深更半夜,但她如果加班,就被認為未盡母職、不顧家庭。於是後來她若須在假日加班,索性將女兒蘿倫 (Lauren) 也一起帶去實驗室。不過這仍未能消弭閒言閒語,因為這在當時更是極不尋常的作法。
儘管如此,她還是不顧外界眼光,帶著小女兒去加班。沒想到竟無心插柳,因此發現一個阿波羅導航系統的安全性問題。
那天四歲的蘿倫自己亂玩指揮艙模擬器的鍵盤,突然間系統整個當機。漢密爾頓過來檢查後,發現原來是指揮艙已經進入飛行模式,但蘿倫又啟動了起飛前的程式P01所致。她唯恐太空人真正出任務時發生這種狀況,連忙向NASA報告,要求改寫程式以防萬一。
然而NASA的主管否決了她的要求,因為太空人訓練有素,絕不可能犯這種錯誤,沒必要為此修改電腦程式,延宕了發射時程。沒想到莫非定律再次應驗,不該發生的事偏偏就是會發生。
🚀 阿波羅8號
1968年12月26日,阿波羅8號返回地球途中,地面控制中心要求在自動模式下測試天線,以確保第二天的電視轉播順利。負責駕駛的太空人洛維爾(James Lovell)依指示一個個按下鍵盤,突然間太空艙竟自己翻轉起來。洛維爾大吃一驚,連忙切換為手動模式,再以目光搜尋窗外的星座,找到獵戶座參宿七與天狼星做為參考點,慢慢操控太空艙回到正確位置。
此時洛維爾查看電腦,才發現原來他剛剛不小心刪除了座標資料,使得導航電腦誤以為仍在地面,遂自動點燃推進器,好讓太空艙轉向「上方」。洛維爾輸入座標後切到自動模式,但電腦上顯示的仍是發射前的程式P01。最後在控制中心的引導下,他才順利予以解除,設定回正確的導航程式,終於有驚無險地度過這個意外狀況。
經此教訓,NASA 終於放手讓漢密爾頓為電腦程式增添各項防呆、容錯的機制。結果不到一年,她的堅持與努力就發揮了關鍵作用。
🚀 千鈞一髮
文章開頭所提,阿波羅11號的登月小艇快降落前,導航電腦AGC出現的「1202」訊息,正是她修改程式後才有的警示,代表AGC目前執行超載。原來不知是阿姆斯壯或艾德林不小心打開雷達開關,讓原本執行導航的電腦,瞬時又要處理另一項作業而過載。
漢密爾頓就是設想過有可能發生這種爭奪電腦運算資源的衝突情況,於是將程式設定成一旦遇到這種狀況,就跳出警告訊息,讓太空人決定是否要改變執行的優先順序。
幸好NASA的電腦工程師葛爾曼記得1202代表的意義,當下立即告訴控制中心的主管沒有問題,登月小艇可以繼續降落。
不過因此耽擱了幾十秒,已來不及降落預定地點,阿姆斯壯必須改以手動操控,最後總算有驚無險地成功降落在月球表面。
後面所寫下的歷史新頁大家都已經知道了,但若不是漢密爾頓的先見之明,堅持在程式加入這項容錯機制,登月小艇的電腦就可能會因無法負荷而當機,屆時阿姆斯壯是否還能踏出「人類的一大步」就不得而知了。
🚀 榮耀
沒有留言:
張貼留言