七彩美國
提起軟體大神,比爾·蓋茨,喬布斯,扎克伯格......說起碼工、碼農,不修邊幅的理工科技男是標準形像。在提倡性別平等的今天,男性依然主宰著高科技領域。
今天說說大多數軟體工程師可能都不知道的事實,這個「男孩俱樂部」的一號會員是一位女性 :軟體學科創始人瑪格麗特·漢密爾頓(Margaret Hamilton),一個六十年代不同尋常的女子。
來自洛杉磯時報
從阿波羅登月計劃初出茅廬到軟體工程界傳奇,瑪格麗特·漢密爾頓不經意之中,幫助建立了一個現在價值超過一萬億美元的行當:軟體(又叫碼工、碼農)。
軟體改變世界,這可是碼格麗特為阿波羅指導計算機APC寫下第一行程序時萬萬沒有想到的。也是美國航空航天局NASA在登月計劃項目之初並沒預計到的:麻省理工學院航空教授David Mindell在他的「數字阿波羅」一書中寫道,阿波羅計劃甚至都沒有提到軟體這個詞。「軟體既沒被安排在時間表中,也沒計劃在預算中。」 但隨著阿波羅項目的進展,軟體的重要性越來越清晰。
不同尋常的瑪格麗特·漢密爾頓,不僅誤打誤撞地成為了最早的軟體開發人員,而且她成功編寫的計算機代碼首次將人類送上月球。
1936年8月17日,在美國印第安納州的保利市,一位叫瑪格麗·特漢密爾頓的女嬰出生了。作為一個喜歡數學的女孩子,瑪格麗特考入密西根大學學習數學,並在那兒遇見了自已的另一半。1958年獲得本科學位之後,為了支持丈夫攻讀哈佛大學法律學位,她暫停了繼續攻讀研究生的計劃,搬到波士頓。先教了一段時間高中數學和法語。不久,就找到麻省理工學院的程式設計師的臨時工作,開發預測天氣和探測敵機的軟體。後來她的丈夫在報紙上發現了美國國家航空航天局(NASA)的招聘廣告:
"為登月計劃尋找編程人員」
於是,1965年,28歲的漢密爾頓,應聘進入了承擔阿波羅太空任務的麻省理工學院儀器實驗室(現名查爾斯-斯塔克-德雷珀實驗室)。作為NASA聘請的第一位程式設計師,後來她帶領包括各種高級科學家的團隊,開發機載飛行軟體。為Apollo指揮模塊,月球著陸器和隨後的Skylab(美國唯一獨立運營的空間站)設計軟體算法。
彼時,計算領域仍然像「狂野的西部」 一樣等待開墾,而大名鼎鼎的微軟要在十年之後才誕生。那時候的計算機體積龐大,經常不是占用整個房間,就是占據整個倉庫。並且編程工作一片洪荒,根本無人可教,無書可參考。
漢密爾頓天生具有碼工的責任感和認真精神。「為太空飛行器寫代碼真不是一件容易的事。責任太大了。晚上都睡不踏實」,她回憶。
有一次,在一個深夜派對上,她還想著白天寫的代碼。當她意識到一段代碼存在缺陷時,趕緊回到計算機實驗室去糾正。「我總在想像報紙上的頭條新聞,他們會指出問題是如何發生的,然後矛頭指向我。」
作為女性碼工,漢密爾頓有男同事沒有的煩惱。在上世紀六十年代的美國,女人參加工作都不受鼓勵,更別提高科技工作。大多數在麻省理工儀器實驗室工作的人,家裡都有人照顧他們的孩子。''而我別無選擇」 ,所以工作狂的瑪格麗特加班時只好帶著女兒一起去。
來自美聯社
於是媽媽鑽進模擬太空艙,從太空人的使用角度測試軟體,四歲的勞倫也嚷嚷著自己想扮演太空人。然後,她的小手摸到了什麼機關,模擬器突然崩潰!這個4歲娃娃一不小心成了史上最小的軟體測試員。
漢密爾頓查了半天,發現女兒在飛行模式時選擇了稱為P01的發射程序。漢密爾頓回憶說:「我說,天啊,這太糟糕了。程序設計中應該考慮各種誤操作,因為只要是人,都可能犯錯。」然而,她插入處理人為錯誤代碼的申請被宇航局駁回:「太空人永遠不會犯錯誤——他們己被訓練成'完美'的人」。
但是,正如大家所知,「哪壺不開提哪壺」。在1968年聖誕節前後,在第一個離開地球軌道到達月球軌道,繞月5周並準備返航的載人太空飛行器「阿波羅8號」上,發生了人們不願看到的一幕:
太空人吉姆·洛弗爾(Jim Lovell)在飛行中無意中選擇了P01(一種說法是漢密爾頓沒得到領導許可在機載指導計算機上加上P01出錯處理程序,只好在程序備註中添加說明「請勿在飛行期間選擇P01」);另一種說法是吉姆誤刪了機載計算機收集的所有導航數據。總之飛行器一度腦梗,在太空中踉踉蹌蹌不如何去何從。
在花了九個小時後,漢密爾頓和麻省理工學院的編碼員上傳了新的導航數據(另一種說法是機組人員意識到問題之後,重新計算並輸入了數據),飛行器終於腦清目明。
幾行代碼不僅挽救了兩個太空人的性命,拯救了投資巨大的太空飛行器,更重要的是堅定了人類在月球上行走的信心。
虛驚一場的Apollo 8號毫髮無損地返回地球,瑪格麗特的軟體設計理念終於得到航天局認可。
Margaret Hamilton和她為阿波羅寫的程序 mit.edu
1969年7月16日,美國國家航空航天局啟動了第一次載人月球任務,阿波羅11號的飛行。降落前三分鐘,機組人員撥錯了開關,致使軟體進入過載狀態:由於當年計算機的內存很小,中央處理器速度很慢,如果一個子程序占據了內存,不停地運行,計算機就無法實時完成所有任務,而不得不推遲其它任務。
「執行溢出」,「1202」程序報警意味著發生了緊急情況。太空人得做出決定:降落還是不降落?美國宇航局任務控制計算機工程師傑克·加曼意識到這個任務優先顯示器錯誤的含義之後,大聲向太空人喊話:「走吧,走吧!」
於是 7月20日星期日,在UTC時間20:17:40,名為「鷹」的月球飛行器降落在月球上。尼爾·阿姆斯特朗宣布降落時說:「休斯敦,這裡是靜海基地。'鷹'著陸成功。」
在最近接受西班牙報紙ElPaís採訪時,漢密爾頓解釋了為什麼她選擇「軟體工程」一詞來稱呼她的工作:
「在Apollo項目初期,軟體像一個被收養的孩子,並不像硬體工程等其他工程學科那樣被當做科學認真對待,而是被當作藝術和魔術。意識到這點之後,我開始努力使軟體具有合理地位,以便軟體以及構建軟體的人能得到應有的尊重,因此我開始使用術語『軟體工程』將其與硬體和其他類型的工程區分開來,每種類型的工程都是整個系統工程過程的一部分。當我第一次開始使用這個術語時,同事認為是一個有趣的笑話。他們喜歡打趣我爭取軟體與其他學科平起平坐的『激進』想法。」
漢密爾頓精心設計、測試的軟體,好幾次在太空中化險為夷,美國國家航空航天局很快就意識到,漢密爾頓的「軟體工程」將成為他們在月球競賽中擊敗蘇聯所需的工具。
來自大西洋月刊
2016年,瑪格麗特·漢密爾頓獲得了美國最高的公民榮譽:總統自由勳章,以表彰她在阿波羅計劃和通用系統語言(USL,一種建模語言和規範和設計的正式方法)方面的工作。
軟體第一人,軟體之母,軟體女神,計算機界的居里夫人,瑪格麗特當之無愧!在人類登月50周年之際,向這位幫助人類夢想成真的巾幗英雄致敬!