您的瀏覽器不支援JavaScript功能,若網頁功能無法正常使用時,請開啟瀏覽器JavaScript狀態
:::

女性科學家專欄 #015

瑪格麗特·漢密爾頓

寫下登月程式碼,賦予「軟體工程」靈魂的科技先驅

在 1960 年代,當人們談論到「工程」時,腦海中浮現的通常是巨大的金屬硬體、火箭引擎或是複雜的電路板。當時的「軟體」被視為硬體的附屬品,甚至被認為是不需要嚴謹科學訓練的「打字工作」。然而,瑪格麗特·漢密爾頓(Margaret Hamilton)徹底顛覆了這個觀念。她不僅創造了「軟體工程(Software Engineering)」這個詞彙,更用極度嚴謹的邏輯,帶領團隊寫出了將人類安全送上月球的阿波羅飛航軟體。

作為麻省理工學院(MIT)儀器實驗室軟體工程部的負責人,瑪格麗特深知,在太空中,程式碼的一個小錯誤就可能導致機毀人亡。因此,她將軟體開發提升到了與硬體工程同等嚴格的科學層次。

瑪格麗特·漢密爾頓與阿波羅程式碼的經典合影
1969 年,瑪格麗特·漢密爾頓站在她與團隊為阿波羅計畫編寫的導航電腦(AGC)原始碼旁。這疊程式碼的高度幾乎與她等高,成為了科技史上最經典的畫面之一。

驚險的 1202 警報:拯救阿波羅 11 號

瑪格麗特對軟體工程最偉大的貢獻之一,在於她設計了具有「容錯能力」與「非同步執行」的系統。這個設計在 1969 年 7 月 20 日迎來了最嚴峻的考驗。就在阿波羅 11 號登月小艇距離月球表面僅剩三分鐘航程時,電腦突然被雷達傳來的無用數據淹沒,發出了致命的「1202」與「1201」過載警報。

在休士頓控制中心一片死寂之際,瑪格麗特設計的軟體發揮了作用。程式自動判斷出目前的最高優先級是「控制登月」,於是果斷捨棄了處理雷達數據的低優先級任務,將所有運算資源集中在登陸程序上。如果沒有這套聰明的「任務優先級」軟體架構,阿波羅 11 號極可能會被迫放棄登月,甚至墜毀。

從登月到現代軟體架構的基石

阿波羅計畫結束後,瑪格麗特並沒有停下腳步。她將在 NASA 累積的經驗轉化為更普遍的系統理論,創辦了多家軟體公司,並開發了「通用系統語言(USL)」。她提倡的「在設計階段就預防錯誤(Design by logic)」理念,至今仍是高可靠性系統(如航空、醫療、金融軟體)的核心準則。

2016 年,時任美國總統奧巴馬授予她「總統自由勳章」,表彰她對美國登月計畫與現代電腦科學的卓越貢獻。她用一疊疊厚重的報表紙證明了:軟體,才是賦予冰冷硬體靈魂的真正魔法。

「那時根本沒有『軟體工程』這個詞。我們就像是在荒野中開拓,沒有規則可循,所以我們必須自己創造規則。」 —— 瑪格麗特·漢密爾頓
深入了解瑪格麗特·漢密爾頓
Q:為什麼她要特別發明「軟體工程」這個詞?
A:在 60 年代,硬體工程師備受尊崇,但寫程式卻被視為次等的勞力工作。瑪格麗特發明這個詞,是為了向外界(包括 NASA 高層)爭取正當性,強調軟體開發同樣需要嚴謹的科學方法、測試與架構設計,它是一門真正的「工程學」。
Q:那張著名的「與程式碼等高」的照片,全都是她一個人寫的嗎?
A:不完全是。這疊高度及胸的紙本是「阿波羅導航電腦(AGC)」的完整原始碼。雖然不是她一人獨自敲下每一個字,但她是 MIT 軟體工程部的負責人,主導了整個架構的設計,並親自編寫了最核心的「非同步執行(Asynchronous Executive)」程式。這張照片象徵著她與她帶領的團隊的偉大心血。
Q:什麼是「非同步執行(Asynchronous Executive)」?
A:簡單來說,就是讓電腦擁有「分辦輕重緩急」的能力。早期的電腦多半是按順序死板地執行指令。瑪格麗特設計的系統允許電腦在遇到緊急狀況或資源不足時,中斷不重要的工作(例如雷達追蹤),優先處理攸關性命的任務(例如控制登月引擎)。這在當時是極具革命性的突破。
Q:除了阿波羅計畫,她後來還有什麼貢獻?
A:她後來參與了美國第一個太空站「天空實驗室(Skylab)」的軟體設計,並為早期的太空梭計畫提供架構建議。離開 MIT 後,她創立了軟體公司,致力於推廣能自動防止錯誤發生的「通用系統語言(USL)」,對現代高可靠度軟體的發展影響深遠。