|
在阿波羅11號飛船著陸月球的前幾分鐘,意外出現(xiàn)了。由于著陸器雷達的電源出現(xiàn)問題,計算機出現(xiàn)過載現(xiàn)象,程序報警顯示“執(zhí)行溢出”,這意味著導(dǎo)航計算機不能實時完成所有任務(wù)。系統(tǒng)近乎崩潰,難道這次挑戰(zhàn)要以船毀人亡的慘劇結(jié)束嗎? 撰文 | 李唐 1969年7月16日,搭載著阿波羅11號的土星5號火箭在肯尼迪航天中心發(fā)射升空。這是人類的首次登月嘗試。7月21日,阿姆斯特朗和奧爾德林成功踏上了月球的表面,在完成考察任務(wù)后順利返回地球。 這一偉大創(chuàng)舉的背后,是無數(shù)科學(xué)家和工作人員的辛勤努力。在他們之中,就有一位堪稱傳奇的程序員。如果沒有她的智慧,阿波羅計劃便會毀于一旦。她就是程序員們的“女神”——瑪格麗特·海菲爾德·漢密爾頓(Margaret Heafield Hamilton)。 學(xué)業(yè)與家庭 瑪格麗特于1936年8月17日在印第安納州的保利出生。高中畢業(yè)后的第二年(1955年),她開始在密歇根大學(xué)學(xué)習(xí)數(shù)學(xué)。在這里,她結(jié)識了詹姆斯·漢密爾頓,并在畢業(yè)后與他結(jié)為夫妻。1958年,瑪格麗特獲得數(shù)學(xué)學(xué)士學(xué)位。同時,她還在厄勒姆學(xué)院( Earlham College)完成了輔修哲學(xué)的學(xué)業(yè)。瑪格麗特說,是她的父親(哲學(xué)家、詩人)和祖父(校長、貴格會牧師)激勵了她學(xué)習(xí)哲學(xué)。 大學(xué)畢業(yè)后,為支持丈夫在哈佛大學(xué)攻讀本科學(xué)位,她在一所高中教了一段數(shù)學(xué)和法語。后來,她搬到了馬薩諸塞州的波士頓,并打算在布蘭迪斯大學(xué)(Brandeis University)讀研。這次,她選擇抽象數(shù)學(xué)作為主攻方向,她的理想是成為一名數(shù)學(xué)教授。當時,詹姆斯·漢密爾頓在哈佛大學(xué)修讀法律。為了緩解經(jīng)濟壓力,1959年的夏天,瑪格麗特開始在麻省理工學(xué)院的氣象系為愛德華·諾頓·洛倫茨(Edward Norton Lorenz)工作。在她看來,這只是暫時性的一步,過不了多久她還會繼續(xù)研究生的學(xué)業(yè)?,敻覃愄夭⑽搭A(yù)料到,這份臨時的工作竟為她打開了一個充滿樂趣的全新領(lǐng)域。 初涉編程 在為洛倫茨工作期間,她為Marvin Minsky的MAC項目開發(fā)了預(yù)測天氣的軟件——這項工作對洛倫茲在混沌理論方面的成果做出了直接貢獻:混沌理論關(guān)注于初始條件的細微變化所引起的結(jié)果上的巨大差別,天氣預(yù)報是混沌理論研究的典型案例。 在1961年,由于能力出色,瑪格麗特進入了著名的林肯實驗室,成為SAGE( Semi-Automatic Ground Environment )項目的研發(fā)成員。SAGE項目的初衷是利用計算機系統(tǒng)模擬氣流的運動,對天氣狀況進行預(yù)測,后來其被美國軍方用于防空,以抵御蘇聯(lián)可能發(fā)動的攻擊。 當時,計算機科學(xué)和軟件工程還沒有成為系統(tǒng)的學(xué)科,程序員往往在工作中通過實踐經(jīng)驗來學(xué)習(xí),編寫程序的復(fù)雜度和現(xiàn)代編程也不在一個量級上。由于新興的編程行業(yè)還缺乏完善的統(tǒng)一標準,每個程序員必須掌握多種匯編語言。他們首先將代碼用打字機寫到紙上,再依靠人力對程序進行排錯(debug),這往往需要數(shù)遍檢查。在確認無誤后,這些程序才會被專職人員用手工編成的磁環(huán)存入電腦。盡管如此,瑪格麗特依然樂此不疲,她已經(jīng)沉醉在了這個嶄新的世界之中。她說道:
正是她在SAGE項目上的努力,使她成為美國宇航局阿波羅飛行軟件首席開發(fā)員的候選人。 (圖源:MIT Museum) 在“荒野”上工作的母親 麻省理工學(xué)院的查爾斯·斯塔克·德雷珀實驗室當時正在進行阿波羅計劃的研究,瑪格麗特加入了這個實驗室。作為編程專家,瑪格麗特擔任一支研發(fā)團隊的領(lǐng)導(dǎo)。 就在這段日子里,她的女兒勞倫出生了。在2015年的一次采訪中,瑪格麗特表示,在工作的同時擔當母親的角色的確充滿了挑戰(zhàn)性。在工作繁忙的時候,她不得不將僅有幾歲的女兒帶到實驗室里,專注的母親和在一旁玩耍的小女兒成為實驗室里一道別樣的風景。 在這個關(guān)于計算的新世界中,許多地方并沒有前人的腳步,路要靠自己去開拓?!澳抢锞拖袷窃嫉奈鞑?,沒有航線,沒有人教你東西?!闭窃谶@種情況下,她的團隊成功開發(fā)出了飛行軟件,其中包括由多位資深科學(xué)家為阿波羅指令艙、月球著陸器和隨后的天空實驗室(Skylab)設(shè)計的算法。 化解危機 我們知道,計算機的處理速度與作為臨時存儲空間的內(nèi)存有很大關(guān)系,而在那個時代,計算機內(nèi)存都很小,阿波羅飛船上的電腦也不例外,這意味著其運行能力的上限較低。 在阿波羅11號飛船著陸月球的前幾分鐘,意外出現(xiàn)了。由于著陸器雷達的電源出現(xiàn)問題,計算機出現(xiàn)過載現(xiàn)象,程序報警顯示“執(zhí)行溢出”,這意味著導(dǎo)航計算機不能實時完成所有任務(wù)。系統(tǒng)近乎崩潰,難道這次挑戰(zhàn)要以船毀人亡的慘劇結(jié)束嗎? 在這個緊要關(guān)頭,瑪格麗特編寫的程序竟然頂住了壓力。她的算法為各個進程分配優(yōu)先級,確保所有任務(wù)能以正確的順序進行?,敻覃愄貙懙溃?/p>
正是瑪格麗特設(shè)計的程序挽救了阿波羅飛船,使阿姆斯特朗邁出了“人類的一大步”。資深技術(shù)專家保羅·庫托(Paul Curto)提名瑪格麗特獲得美國宇航局太空行動獎,稱她的工作是“超可靠軟件設(shè)計的基礎(chǔ)”。在瑪格麗特的程序拯救人類的登月計劃時,她其實只有33歲。 榮譽永遠屬于她 后來,瑪格麗特離開了NASA,并與他人一同創(chuàng)建了一家名為high Order Software 的公司,繼續(xù)進行軟件開發(fā)的工作。她提出的算法思想為后來的很多程序設(shè)計提供了不可或缺的靈感。 瑪格麗特與Anthony Oettinger、Barry Boehm一道被認為是提出 “軟件工程”這一學(xué)科名稱的人。她想賦予編程以“合法性”,這樣它(以及程序員)就會得到應(yīng)有的尊重。因此,她創(chuàng)造了“軟件工程”這個術(shù)語,以區(qū)別于其他類型的工程學(xué)科。隨著時間的推移,“軟件工程”獲得了與其它任何技術(shù)學(xué)科相同的重視。 《連線》雜志的凱倫·特根·帕迪爾(Karen Tegan Padir)評價道,瑪格麗特為更多女性進入軟件等STEM領(lǐng)域并取得成功打開了大門。為此,我們應(yīng)該送上額外的贊譽。 2003年,瑪格麗特被授予NASA杰出太空行動獎;該獎項包含37200美元的獎金,是NASA歷史上授予個人的最高數(shù)額。在2016年,她又得到了美國最高平民榮譽——總統(tǒng)自由勛章。頒獎典禮上,奧巴馬總統(tǒng)說,漢密爾頓夫人“象征著一代幫助人類進入太空的默默無聞的女性”。 (圖源:Official White House photo by Lawrence Jackson) 人類的歷史是充滿進步的歷史。在閃耀的舞臺上,我們看到了英雄的風采。這時,我們不妨將聚光燈稍稍后移,讓它也照亮幕后的英雄。他們同樣閃耀,他們的努力同樣不可或缺。人類的一大步中,包含了每位英雄邁出的一步,鮮花和掌聲永遠屬于他們。 參考資料 [1] https://en./wiki/Margaret_Hamilton_(software_engineer) [2] https://www./smithsonian-institution/margaret-hamilton-led-nasa-software-team-landed-astronauts-moon-180971575/ [3] http://news./2016/scene-at-mit-margaret-hamilton-apollo-code-0817 [4] http://wap.sciencenet.cn/blog-2966991-1076583.html?mobile=1 文章頭圖及封面 文章頭圖及封面圖片來源:hackaday.com |
|
|
來自: taotao_2016 > 《文件夾1》