人類登月無名英雌 軟件工程界祖師奶奶 阿波羅11號成功全靠她
蓋茨、喬布斯、朱克伯格、貝索斯、馬雲、馬化騰,全球科技界猛人,一直數下去的話,繼續都是男士。任憑是軟件或系統工程,以至資訊科技,這堆名稱概括出來的行業,多年來均由男性主導,至少大家理所當然是這樣以為。可是假如沒有她,以上的主角們可能連出場機會也沒有,阿波羅11號亦不能成功登月。她,就是原本一心當數學家的元祖級軟件工程師瑪嘉烈咸美頓(Margaret Hamilton)。
1957年10月4日,蘇聯成功發射歷來首枚環繞地球軌道飛行的人造衞星史普尼克1號(Spunik I),時值二戰後冷戰時期,美國為首的西方國家為之震動,開展美蘇太空競賽年代。1960年4月12日,蘇聯的加加林(Yuri Gagarin)駕駛太空船環繞地球軌道一周,成為太空航行第一人。
一路陷於落後狀態的美國,苦思突破良策,以落實啟動載人登月計劃阿波羅(Project Apollo)為競選政綱的甘迺迪,上任後立即「找數」,在國會發表演說遊說議員撥款,1962年再發表《我們選擇去月球》公開演說,為耗資過百億美元天文數字的龐大計劃,贏得民心。他的目標,不是追平而是超越蘇聯,利用最先進的太空科技,進一步強化國民自信心和優越感。
MIT自由人
總統先生行政指令「話咁易」,真正做出來又是另一回事。從厄勒姆學院數學系畢業不久的瑪嘉烈,1959年為麻省理工學院(MIT)一位教授工作,接下人生中首份有關軟件的工作。計劃是待丈夫在哈佛畢業後,便輪到她返回校園進修抽象數學(Abstract Mathematics),朝着當數學系教授的目標邁進。後來,MIT一個又一個計劃找上她,且愈來愈具挑戰性,讓她在MIT多個學系和實驗室中游走。「我靠自學,學習了幾種軟件語言,在羅倫士教授(Professor Edward N. Lorenz)教導下,學懂如何建立軟件。」
首先是氣象分析系統,然後是在林肯實驗室,為早期的美軍防空系統SAGE(Semi-Automatic Ground Environment)編寫軟件。正當她預備到布蘭迪斯大學研究院進修,命中注定的機會出現了,「那時大約是1963或64年,我收到MIT獲得美國太空總署(NASA)合約,負責開發載人上月球軟件的消息,而且MIT正在物色人選參與這計劃。這像是一生只有一次的機會,我立即致電MIT看看能否加入。」數小時內她已跟負責的計劃經理會面,並在即日獲聘,那年她只有24歲。
「上司根本不知我們做什麼」
那年頭,軟件工程尚未獨立成科,很多時候連管理層也不清楚他們在幹什麼,「工作環境跟我在MIT其他崗位相若,不拘小節,但認真。在那時,軟件對管理層而言仍是一個謎、是個神秘黑色盒子,讓我們得到完全的自由與信任。」
她的團隊在正確時間、正確地點出現,她深感幸運,過程之艱辛卻非筆墨可形容。「當時沒有學校或學系可學習現在的『軟件工程』或『系統工程』,當我們找不到答案,便要發明一個出來。我們要設計出首次造出來便能用上的東西,幸好團隊內大都是20出頭的大無畏年輕人,挑戰愈大,樂趣愈多。那時根本沒有時間當新人,大家都是邊做邊學。」
害怕成為報章頭條
瑪嘉烈大學以至職業生涯,無論在數學系就讀,還是當上程式員,都是生活在男性主導的圈子,在男女尚未平等、女性不獲擔當「重要職位」的年代,當上全美以至全球最吃重的高科技計劃核心小組主管,壓力之大可想而知。有一晚,深夜派對後她匆匆趕回實驗室,糾正一個忽然發覺是錯誤的編碼,「我時常幻想,(失誤)會在報章頭條出現,然後他們會將矛頭指向我。」
瑪嘉烈團隊設計的阿波羅登月計劃程式,需在太空人出發前,模擬一切可能發生的情景,不過,別忘記,程式需要在巨型Honeywell電腦上運作,往往每小部分都需要通宵達旦才能完成。
一張經典照片,正是她身旁堆砌了一堆幾乎跟她一樣高的厚厚紙張,內容全是她為阿波羅11號撰寫的程式編碼。「我們不單要確保所有東西運作良好,而且軟件還要配合硬件、人手和任務本身一起工作。」
那是史上首套由人手操控但具備線傳操控(fly-by-wire)技術的機艙電腦導航系統,成為現今商業客機基本配備電腦導航系統的先驅。
我們是全世界最幸運的人,那時沒有時間當新人,於是別無選擇下成為先驅者。
太空人是完美的?
超乎常人的工作量沒完沒了,她會趁開夜車或周末加班時,帶同年幼女兒羅倫一起上班,爭取時間相聚。有一天,羅倫在MIT模擬駕駛艙控制鍵盤上玩耍,卻錯誤輸入指令。在現實環境,沒有太空人會這樣做,但此事卻提醒她要增加編碼,以防太空人出錯。怎料遭NASA反對,「我們多次被告誡:太空人訓練得十全十美,絕不會犯下任何失誤」。
無奈下她只好在阿波羅計劃文件中加入備忘,提醒太空人和NASA工程師在飛行期間別誤觸錯誤指令。她希望在系統中加入檢查錯誤編碼,上司卻認為是多此一舉,「每個人都說,那絕對不會發生」。然而當然是發生了:1968年聖誕節左右,阿波羅8號歷史性載人沿月球軌道航行,於航行第五天,太空人路維爾(Jim Lovell)錯誤輸入指令,清洗了所有航行數據,沒有那些數據,太空船不能將太空人送回家,最終瑪嘉烈和MIT工程師們用了9小時搶救,修正失誤。是次事件令她成功說服高層,讓她的團隊開發錯誤檢查及復修軟件。
輪到人類登陸月球正本戲──阿波羅11號登場。參與人數多達40萬,主宰計劃成敗的不是太空人或NASA管理層,而是最初由電腦程式員一路晉升至MIT儀器實驗室軟件工程部主管的瑪嘉烈咸美頓。太空船的電腦竟在登月前數分鐘的關鍵時刻發生故障,彈出大量錯誤訊息,由於登陸行動極度依賴機艙電腦系統,因此隨時導致整個行動失敗。
幸好,瑪嘉烈設計的系統即時向太空人發出警告,提示電腦出錯,並同時將任務重新排序,只列出最重要的、即是與降落月球相關任務,讓太空人與侯斯頓太空中心科學家決定繼續執行任務,創下人類歷史性新一頁。
我們選擇去月球!這樣做不是因為那很容易,而是因為那很困難,這個目標會迫使我們組織和運用最優秀的精力與技巧。我們願意接受這項挑戰,不想作任何拖延,我們想要贏……
後知後覺的嘉許
阿波羅11號上的3位太空人杭思朗(Neil Armstrong)、艾德林(Edwin Aldrin)、柯林斯(Michael Collins),成為了人類英雄,登月同一年經已獲總統尼克遜頒發象徵美國平民最高榮譽的總統自由勳章。翌年,阿波羅13號上3位太空人和8位NASA工程師或後備太空人,同獲得此榮譽,卻沒有幕後功臣瑪嘉烈以及MIT工程師的份兒。
而於阿波羅11號任務完成之後,她轉戰了商界,創立了軟件公司,繼續發展防止錯誤和容錯(fault tolerance)科技,並獲空軍和其他政府部門採用,同時又協助創立開放式架構系統、人機介面、端對端測試、軟件穩定性測試等現今業界標準編碼規範,就連「軟件工程」這個名稱,也是由她首先採用,令它與其他的工程學科看齊。瑪嘉烈其後的事業、名聲也許不如阿波羅11號響亮,她在業界祖師奶奶的地位卻是無可取代。
瑪嘉烈所設計的阿波羅導航軟件,在所有阿波羅載人太空任務之中,均沒有出現任何的程式錯誤(software bugs),功能難以置信地強大、可靠,經轉化後廣泛用在太空實驗室和穿梭機中。
2003年,NASA後知後覺,向瑪嘉烈頒發特別大獎,以表揚她在阿波羅軟件開發的創意。今年美國總統奧巴馬,亦向已屆80高齡的她頒發總統自由勳章,讚揚她代表着「將人類送上太空的一代無名英雌」。這項榮譽,她早在47年前已該獲得,好教那些高叫「女孩不懂編碼」(Girls can’t code)的工程師閉嘴,誠然,遲到總好過永不。