"

在阿波羅11號飛船著陸月球的前幾分鐘,意外出現了。由於著陸器雷達的電源出現問題,計算機出現過載現象,程序報警顯示“執行溢出”,這意味著導航計算機不能實時完成所有任務。系統近乎崩潰,難道這次挑戰要以船毀人亡的慘劇結束嗎?

"

在阿波羅11號飛船著陸月球的前幾分鐘,意外出現了。由於著陸器雷達的電源出現問題,計算機出現過載現象,程序報警顯示“執行溢出”,這意味著導航計算機不能實時完成所有任務。系統近乎崩潰,難道這次挑戰要以船毀人亡的慘劇結束嗎?

拯救阿波羅的程序媛 | 賽先生


撰文 | 李唐

1969年7月16日,搭載著阿波羅11號的土星5號火箭在肯尼迪航天中心發射升空。這是人類的首次登月嘗試。7月21日,阿姆斯特朗和奧爾德林成功踏上了月球的表面,在完成考察任務後順利返回地球。

這一偉大創舉的背後,是無數科學家和工作人員的辛勤努力。在他們之中,就有一位堪稱傳奇的程序員。如果沒有她的智慧,阿波羅計劃便會毀於一旦。她就是程序員們的“女神”——瑪格麗特·海菲爾德·漢密爾頓(Margaret Heafield Hamilton)。

學業與家庭

瑪格麗特於1936年8月17日在印第安納州的保利出生。高中畢業後的第二年(1955年),她開始在密歇根大學學習數學。在這裡,她結識了詹姆斯·漢密爾頓,並在畢業後與他結為夫妻。1958年,瑪格麗特獲得數學學士學位。同時,她還在厄勒姆學院( Earlham College)完成了輔修哲學的學業。瑪格麗特說,是她的父親(哲學家、詩人)和祖父(校長、貴格會牧師)激勵了她學習哲學。

大學畢業後,為支持丈夫在哈佛大學攻讀本科學位,她在一所高中教了一段數學和法語。後來,她搬到了馬薩諸塞州的波士頓,並打算在布蘭迪斯大學(Brandeis University)讀研。這次,她選擇抽象數學作為主攻方向,她的理想是成為一名數學教授。當時,詹姆斯·漢密爾頓在哈佛大學修讀法律。為了緩解經濟壓力,1959年的夏天,瑪格麗特開始在麻省理工學院的氣象係為愛德華·諾頓·洛倫茨(Edward Norton Lorenz)工作。在她看來,這只是暫時性的一步,過不了多久她還會繼續研究生的學業。瑪格麗特並未預料到,這份臨時的工作竟為她打開了一個充滿樂趣的全新領域。

初涉編程

在為洛倫茨工作期間,她為Marvin Minsky的MAC項目開發了預測天氣的軟件——這項工作對洛倫茲在混沌理論方面的成果做出了直接貢獻:混沌理論關注於初始條件的細微變化所引起的結果上的巨大差別,天氣預報是混沌理論研究的典型案例。

在1961年,由於能力出色,瑪格麗特進入了著名的林肯實驗室,成為SAGE( Semi-Automatic Ground Environment )項目的研發成員。SAGE項目的初衷是利用計算機系統模擬氣流的運動,對天氣狀況進行預測,後來其被美國軍方用於防空,以抵禦蘇聯可能發動的攻擊。

當時,計算機科學和軟件工程還沒有成為系統的學科,程序員往往在工作中通過實踐經驗來學習,編寫程序的複雜度和現代編程也不在一個量級上。由於新興的編程行業還缺乏完善的統一標準,每個程序員必須掌握多種彙編語言。他們首先將代碼用打字機寫到紙上,再依靠人力對程序進行排錯(debug),這往往需要數遍檢查。在確認無誤後,這些程序才會被專職人員用手工編成的磁環存入電腦。儘管如此,瑪格麗特依然樂此不疲,她已經沉醉在了這個嶄新的世界之中。她說道:

當你作為一個初學者進入這個組織時,他們通常會給你分配一個沒人能想出或者運行的程序。當我接手這個項目時,它的確很棘手,但我真的讓它運作了起來,我是第一個使它工作的人。


正是她在SAGE項目上的努力,使她成為美國宇航局阿波羅飛行軟件首席開發員的候選人。

"

在阿波羅11號飛船著陸月球的前幾分鐘,意外出現了。由於著陸器雷達的電源出現問題,計算機出現過載現象,程序報警顯示“執行溢出”,這意味著導航計算機不能實時完成所有任務。系統近乎崩潰,難道這次挑戰要以船毀人亡的慘劇結束嗎?

拯救阿波羅的程序媛 | 賽先生


撰文 | 李唐

1969年7月16日,搭載著阿波羅11號的土星5號火箭在肯尼迪航天中心發射升空。這是人類的首次登月嘗試。7月21日,阿姆斯特朗和奧爾德林成功踏上了月球的表面,在完成考察任務後順利返回地球。

這一偉大創舉的背後,是無數科學家和工作人員的辛勤努力。在他們之中,就有一位堪稱傳奇的程序員。如果沒有她的智慧,阿波羅計劃便會毀於一旦。她就是程序員們的“女神”——瑪格麗特·海菲爾德·漢密爾頓(Margaret Heafield Hamilton)。

學業與家庭

瑪格麗特於1936年8月17日在印第安納州的保利出生。高中畢業後的第二年(1955年),她開始在密歇根大學學習數學。在這裡,她結識了詹姆斯·漢密爾頓,並在畢業後與他結為夫妻。1958年,瑪格麗特獲得數學學士學位。同時,她還在厄勒姆學院( Earlham College)完成了輔修哲學的學業。瑪格麗特說,是她的父親(哲學家、詩人)和祖父(校長、貴格會牧師)激勵了她學習哲學。

大學畢業後,為支持丈夫在哈佛大學攻讀本科學位,她在一所高中教了一段數學和法語。後來,她搬到了馬薩諸塞州的波士頓,並打算在布蘭迪斯大學(Brandeis University)讀研。這次,她選擇抽象數學作為主攻方向,她的理想是成為一名數學教授。當時,詹姆斯·漢密爾頓在哈佛大學修讀法律。為了緩解經濟壓力,1959年的夏天,瑪格麗特開始在麻省理工學院的氣象係為愛德華·諾頓·洛倫茨(Edward Norton Lorenz)工作。在她看來,這只是暫時性的一步,過不了多久她還會繼續研究生的學業。瑪格麗特並未預料到,這份臨時的工作竟為她打開了一個充滿樂趣的全新領域。

初涉編程

在為洛倫茨工作期間,她為Marvin Minsky的MAC項目開發了預測天氣的軟件——這項工作對洛倫茲在混沌理論方面的成果做出了直接貢獻:混沌理論關注於初始條件的細微變化所引起的結果上的巨大差別,天氣預報是混沌理論研究的典型案例。

在1961年,由於能力出色,瑪格麗特進入了著名的林肯實驗室,成為SAGE( Semi-Automatic Ground Environment )項目的研發成員。SAGE項目的初衷是利用計算機系統模擬氣流的運動,對天氣狀況進行預測,後來其被美國軍方用於防空,以抵禦蘇聯可能發動的攻擊。

當時,計算機科學和軟件工程還沒有成為系統的學科,程序員往往在工作中通過實踐經驗來學習,編寫程序的複雜度和現代編程也不在一個量級上。由於新興的編程行業還缺乏完善的統一標準,每個程序員必須掌握多種彙編語言。他們首先將代碼用打字機寫到紙上,再依靠人力對程序進行排錯(debug),這往往需要數遍檢查。在確認無誤後,這些程序才會被專職人員用手工編成的磁環存入電腦。儘管如此,瑪格麗特依然樂此不疲,她已經沉醉在了這個嶄新的世界之中。她說道:

當你作為一個初學者進入這個組織時,他們通常會給你分配一個沒人能想出或者運行的程序。當我接手這個項目時,它的確很棘手,但我真的讓它運作了起來,我是第一個使它工作的人。


正是她在SAGE項目上的努力,使她成為美國宇航局阿波羅飛行軟件首席開發員的候選人。

拯救阿波羅的程序媛 | 賽先生


(圖源:MIT Museum)

在“荒野”上工作的母親

麻省理工學院的查爾斯·斯塔克·德雷珀實驗室當時正在進行阿波羅計劃的研究,瑪格麗特加入了這個實驗室。作為編程專家,瑪格麗特擔任一支研發團隊的領導。

就在這段日子裡,她的女兒勞倫出生了。在2015年的一次採訪中,瑪格麗特表示,在工作的同時擔當母親的角色的確充滿了挑戰性。在工作繁忙的時候,她不得不將僅有幾歲的女兒帶到實驗室裡,專注的母親和在一旁玩耍的小女兒成為實驗室裡一道別樣的風景。

在這個關於計算的新世界中,許多地方並沒有前人的腳步,路要靠自己去開拓。“那裡就像是原始的西部,沒有航線,沒有人教你東西。”正是在這種情況下,她的團隊成功開發出了飛行軟件,其中包括由多位資深科學家為阿波羅指令艙、月球著陸器和隨後的天空實驗室(Skylab)設計的算法。

化解危機

我們知道,計算機的處理速度與作為臨時存儲空間的內存有很大關係,而在那個時代,計算機內存都很小,阿波羅飛船上的電腦也不例外,這意味著其運行能力的上限較低。

在阿波羅11號飛船著陸月球的前幾分鐘,意外出現了。由於著陸器雷達的電源出現問題,計算機出現過載現象,程序報警顯示“執行溢出”,這意味著導航計算機不能實時完成所有任務。系統近乎崩潰,難道這次挑戰要以船毀人亡的慘劇結束嗎?

在這個緊要關頭,瑪格麗特編寫的程序竟然頂住了壓力。她的算法為各個進程分配優先級,確保所有任務能以正確的順序進行。瑪格麗特寫道:

在這種情況下,軟件的作用是清除優先級較低的任務,並重新執行更重要的任務……如果計算機沒有意識到這個問題並採取恢復措施,我懷疑阿波羅11號能否成功登月。


正是瑪格麗特設計的程序挽救了阿波羅飛船,使阿姆斯特朗邁出了“人類的一大步”。資深技術專家保羅·庫託(Paul Curto)提名瑪格麗特獲得美國宇航局太空行動獎,稱她的工作是“超可靠軟件設計的基礎”。在瑪格麗特的程序拯救人類的登月計劃時,她其實只有33歲。

榮譽永遠屬於她

後來,瑪格麗特離開了NASA,並與他人一同創建了一家名為high Order Software 的公司,繼續進行軟件開發的工作。她提出的算法思想為後來的很多程序設計提供了不可或缺的靈感。

瑪格麗特與Anthony Oettinger、Barry Boehm一道被認為是提出 “軟件工程”這一學科名稱的人。她想賦予編程以“合法性”,這樣它(以及程序員)就會得到應有的尊重。因此,她創造了“軟件工程”這個術語,以區別於其他類型的工程學科。隨著時間的推移,“軟件工程”獲得了與其它任何技術學科相同的重視。

《連線》雜誌的凱倫·特根·帕迪爾(Karen Tegan Padir)評價道,瑪格麗特為更多女性進入軟件等STEM領域並取得成功打開了大門。為此,我們應該送上額外的讚譽。

2003年,瑪格麗特被授予NASA傑出太空行動獎;該獎項包含37200美元的獎金,是NASA歷史上授予個人的最高數額。在2016年,她又得到了美國最高平民榮譽——總統自由勳章。頒獎典禮上,奧巴馬總統說,漢密爾頓夫人“象徵著一代幫助人類進入太空的默默無聞的女性”。

"

在阿波羅11號飛船著陸月球的前幾分鐘,意外出現了。由於著陸器雷達的電源出現問題,計算機出現過載現象,程序報警顯示“執行溢出”,這意味著導航計算機不能實時完成所有任務。系統近乎崩潰,難道這次挑戰要以船毀人亡的慘劇結束嗎?

拯救阿波羅的程序媛 | 賽先生


撰文 | 李唐

1969年7月16日,搭載著阿波羅11號的土星5號火箭在肯尼迪航天中心發射升空。這是人類的首次登月嘗試。7月21日,阿姆斯特朗和奧爾德林成功踏上了月球的表面,在完成考察任務後順利返回地球。

這一偉大創舉的背後,是無數科學家和工作人員的辛勤努力。在他們之中,就有一位堪稱傳奇的程序員。如果沒有她的智慧,阿波羅計劃便會毀於一旦。她就是程序員們的“女神”——瑪格麗特·海菲爾德·漢密爾頓(Margaret Heafield Hamilton)。

學業與家庭

瑪格麗特於1936年8月17日在印第安納州的保利出生。高中畢業後的第二年(1955年),她開始在密歇根大學學習數學。在這裡,她結識了詹姆斯·漢密爾頓,並在畢業後與他結為夫妻。1958年,瑪格麗特獲得數學學士學位。同時,她還在厄勒姆學院( Earlham College)完成了輔修哲學的學業。瑪格麗特說,是她的父親(哲學家、詩人)和祖父(校長、貴格會牧師)激勵了她學習哲學。

大學畢業後,為支持丈夫在哈佛大學攻讀本科學位,她在一所高中教了一段數學和法語。後來,她搬到了馬薩諸塞州的波士頓,並打算在布蘭迪斯大學(Brandeis University)讀研。這次,她選擇抽象數學作為主攻方向,她的理想是成為一名數學教授。當時,詹姆斯·漢密爾頓在哈佛大學修讀法律。為了緩解經濟壓力,1959年的夏天,瑪格麗特開始在麻省理工學院的氣象係為愛德華·諾頓·洛倫茨(Edward Norton Lorenz)工作。在她看來,這只是暫時性的一步,過不了多久她還會繼續研究生的學業。瑪格麗特並未預料到,這份臨時的工作竟為她打開了一個充滿樂趣的全新領域。

初涉編程

在為洛倫茨工作期間,她為Marvin Minsky的MAC項目開發了預測天氣的軟件——這項工作對洛倫茲在混沌理論方面的成果做出了直接貢獻:混沌理論關注於初始條件的細微變化所引起的結果上的巨大差別,天氣預報是混沌理論研究的典型案例。

在1961年,由於能力出色,瑪格麗特進入了著名的林肯實驗室,成為SAGE( Semi-Automatic Ground Environment )項目的研發成員。SAGE項目的初衷是利用計算機系統模擬氣流的運動,對天氣狀況進行預測,後來其被美國軍方用於防空,以抵禦蘇聯可能發動的攻擊。

當時,計算機科學和軟件工程還沒有成為系統的學科,程序員往往在工作中通過實踐經驗來學習,編寫程序的複雜度和現代編程也不在一個量級上。由於新興的編程行業還缺乏完善的統一標準,每個程序員必須掌握多種彙編語言。他們首先將代碼用打字機寫到紙上,再依靠人力對程序進行排錯(debug),這往往需要數遍檢查。在確認無誤後,這些程序才會被專職人員用手工編成的磁環存入電腦。儘管如此,瑪格麗特依然樂此不疲,她已經沉醉在了這個嶄新的世界之中。她說道:

當你作為一個初學者進入這個組織時,他們通常會給你分配一個沒人能想出或者運行的程序。當我接手這個項目時,它的確很棘手,但我真的讓它運作了起來,我是第一個使它工作的人。


正是她在SAGE項目上的努力,使她成為美國宇航局阿波羅飛行軟件首席開發員的候選人。

拯救阿波羅的程序媛 | 賽先生


(圖源:MIT Museum)

在“荒野”上工作的母親

麻省理工學院的查爾斯·斯塔克·德雷珀實驗室當時正在進行阿波羅計劃的研究,瑪格麗特加入了這個實驗室。作為編程專家,瑪格麗特擔任一支研發團隊的領導。

就在這段日子裡,她的女兒勞倫出生了。在2015年的一次採訪中,瑪格麗特表示,在工作的同時擔當母親的角色的確充滿了挑戰性。在工作繁忙的時候,她不得不將僅有幾歲的女兒帶到實驗室裡,專注的母親和在一旁玩耍的小女兒成為實驗室裡一道別樣的風景。

在這個關於計算的新世界中,許多地方並沒有前人的腳步,路要靠自己去開拓。“那裡就像是原始的西部,沒有航線,沒有人教你東西。”正是在這種情況下,她的團隊成功開發出了飛行軟件,其中包括由多位資深科學家為阿波羅指令艙、月球著陸器和隨後的天空實驗室(Skylab)設計的算法。

化解危機

我們知道,計算機的處理速度與作為臨時存儲空間的內存有很大關係,而在那個時代,計算機內存都很小,阿波羅飛船上的電腦也不例外,這意味著其運行能力的上限較低。

在阿波羅11號飛船著陸月球的前幾分鐘,意外出現了。由於著陸器雷達的電源出現問題,計算機出現過載現象,程序報警顯示“執行溢出”,這意味著導航計算機不能實時完成所有任務。系統近乎崩潰,難道這次挑戰要以船毀人亡的慘劇結束嗎?

在這個緊要關頭,瑪格麗特編寫的程序竟然頂住了壓力。她的算法為各個進程分配優先級,確保所有任務能以正確的順序進行。瑪格麗特寫道:

在這種情況下,軟件的作用是清除優先級較低的任務,並重新執行更重要的任務……如果計算機沒有意識到這個問題並採取恢復措施,我懷疑阿波羅11號能否成功登月。


正是瑪格麗特設計的程序挽救了阿波羅飛船,使阿姆斯特朗邁出了“人類的一大步”。資深技術專家保羅·庫託(Paul Curto)提名瑪格麗特獲得美國宇航局太空行動獎,稱她的工作是“超可靠軟件設計的基礎”。在瑪格麗特的程序拯救人類的登月計劃時,她其實只有33歲。

榮譽永遠屬於她

後來,瑪格麗特離開了NASA,並與他人一同創建了一家名為high Order Software 的公司,繼續進行軟件開發的工作。她提出的算法思想為後來的很多程序設計提供了不可或缺的靈感。

瑪格麗特與Anthony Oettinger、Barry Boehm一道被認為是提出 “軟件工程”這一學科名稱的人。她想賦予編程以“合法性”,這樣它(以及程序員)就會得到應有的尊重。因此,她創造了“軟件工程”這個術語,以區別於其他類型的工程學科。隨著時間的推移,“軟件工程”獲得了與其它任何技術學科相同的重視。

《連線》雜誌的凱倫·特根·帕迪爾(Karen Tegan Padir)評價道,瑪格麗特為更多女性進入軟件等STEM領域並取得成功打開了大門。為此,我們應該送上額外的讚譽。

2003年,瑪格麗特被授予NASA傑出太空行動獎;該獎項包含37200美元的獎金,是NASA歷史上授予個人的最高數額。在2016年,她又得到了美國最高平民榮譽——總統自由勳章。頒獎典禮上,奧巴馬總統說,漢密爾頓夫人“象徵著一代幫助人類進入太空的默默無聞的女性”。

拯救阿波羅的程序媛 | 賽先生


(圖源:Official White House photo by Lawrence Jackson)

人類的歷史是充滿進步的歷史。在閃耀的舞臺上,我們看到了英雄的風采。這時,我們不妨將聚光燈稍稍後移,讓它也照亮幕後的英雄。他們同樣閃耀,他們的努力同樣不可或缺。人類的一大步中,包含了每位英雄邁出的一步,鮮花和掌聲永遠屬於他們。

參考資料

[1] https://en.wikipedia.org/wiki/Margaret_Hamilton_(software_engineer)

[2] https://www.smithsonianmag.com/smithsonian-institution/margaret-hamilton-led-nasa-software-team-landed-astronauts-moon-180971575/

[3] http://news.mit.edu/2016/scene-at-mit-margaret-hamilton-apollo-code-0817

[4] http://wap.sciencenet.cn/blog-2966991-1076583.html?mobile=1

"

相關推薦

推薦中...