她只是一個女程式設計師,憑什麼獲得歐巴馬授予的自由獎章?

她只是一個女程式設計師,憑什麼獲得歐巴馬授予的自由獎章?

(圖/shutterstock)

 

前年,歐巴馬頒發了

他任內最後一批美國自由獎章

(美國授予公民的最高獎)。

在麥可.喬丹、比爾.蓋茨等人之中,

有位特別的獲獎者,

她叫做瑪格麗特.漢密爾頓。

 

她是一個女程式設計師,

一個曾經挽救了

阿波羅登月計劃的程式設計師。

 

 

文/李子

 

雖然現在程式設計師

看似是個男女數量極其不平均的崗位,

但就在不遠的過去,在計算機拓荒的年代,

卻是有不少女性程式設計師

為此貢獻了智慧與青春。

 

瑪格麗特·希菲爾德·漢密爾頓

(Margaret Heafield Hamilton)

就是其中一個。

 

一邊看孩子一邊寫程序

瑪格麗特本姓希菲爾德。

她 1936年生於美國一個普通家庭,

普通地讀完了高中和大學,主修數學。

在讀書的時候,

她嫁給了詹姆斯·漢密爾頓

(James Cox Hamilton),

成了漢密爾頓太太。

 

她畢業之後找了一份教師的工作,

教數學和法語。

那時候,她的丈夫還在哈佛法學院讀書,

她勇敢地承擔起了家庭的責任。

不過,她讀書深造的願望並沒有因此熄滅。

待丈夫安定下來,

兩人一起搬去了波士頓,

瑪格麗特準備去再讀一個抽象數學的學位。

 

然而,兩人的小日子還是太緊張了。

此時一個工作機會擺在了她面前。

當時計算機科學的先鋒 MIT裡

一個實驗室在招臨時編碼工。

瑪格麗特抱著試試看的態度,

就這樣踏進了程式設計師的殿堂。

 

一開始,她為天體學系寫天氣預報系統的代碼。

因為工作出色,轉為正式工,

後來又去了大名鼎鼎的林肯實驗室,

為美國軍方 SAGE項目寫代碼——

在冷戰之弦拉得最緊的 1960年代,

用電腦程式幫助偵查危險的「不友好的飛行物」。

 

那時候還沒有「軟體工程」這個學科,

更沒有「軟體工程師」這種高洋上的名頭,

沒人像今天的「計算概論」一樣教,

辛苦在計算機硬體上

直接編寫程序的程式設計師們,

就像從前的手工業工人一樣,

靠的大多是一點點摸索出來的經驗。

 

而一張白紙的瑪格麗特,

面前的都是前人扔給她的棘手程序。

這些毫無頭緒的程序有多難處理呢?

前人不得不用希臘語和拉丁語寫評論來取樂。

而瑪格麗特是全實驗室第一個解決問題的人,

還把調試方法翻譯成希臘語和拉丁語,

漂漂亮亮地回敬了一發。

 

瑪格麗特的女兒勞倫(Lauren),

也在這時候出生了。

繁忙的媽媽瑪格麗特

不得不將小勞倫帶去工作,

讓她睡在查爾斯河畔實驗室的地板上,

醒來的時候兀自玩耍。

 

當時的人們對於這樣一個

「工作狂媽媽」十分不理解。

「你怎麼這麼不顧你的小孩?」

 

瑪格麗特並不在意。

她熱愛著她這份雖然不時枯燥,

但卻充滿挑戰和「神秘感」的工作。

她也喜歡著實驗室,

喜歡每個人開的極客冷笑話,

工作結束之後和每個人去喝酒。

「就跟實驗室裡其他男孩子一模一樣。」

 

而勤奮的瑪格麗特,

還會在喝完酒之後,

忽然想起程序裡的一個小錯誤,

連夜飛奔回實驗室修改。

 

「不重要」的程序救了阿波羅一命

由於出色的表現,

瑪格麗特獲得了另外一個機會:

加入 MIT的 Charles Stark Draper實驗室,

帶領一個小團隊,

為 NASA的阿波羅計劃寫軟體。

 

在阿波羅的最初的預算報告中,

根本就沒有「軟體」二字。

不過後來,NASA意識到了軟體的重要,

逐漸把軟體相關的團隊擴大到了 400多人。

但瑪格麗特依然是一個無名小卒。

她負責的,大概是整個計劃當中

最不受重視的部分:

「萬一」任務失敗之後的後備方案。

但所有人都不重視,

覺得這不可能發生。

連這個部分的名字,

都被稱作「Forget it」。

 

「我想為整個系統中

加入一旦人工出錯之後的備用糾錯方案,」

瑪格麗特說,「但是他們不同意。

他們說,太空人們都經過了

嚴格的、完美的訓練,

『絕對不可能出錯』。」

 

也的確,那時候計算機的

存儲空間和計算能力都十分有限,

決策者不希望有任何「累贅」的部分。

瑪格麗特無奈,

只好在作業系統裡做了一個備註,

「不要在飛行的時候選擇 P01模式」。

 

但是,壞事兒還是發生了。

阿波羅 8號環繞月球的任務中,

太空人羅威爾(Jim Lovell)一時疏忽,

按下了 P01模式,

所有的巡航數據都被清空了,

飛船分分鐘迷路。

 

接到休斯頓緊急打來的電話之後,

瑪格麗特領著一群程式設計師,

連夜奮戰了 9個小時,

過了每一行代碼,修復了這個問題,

數據被重新上傳上去。

阿波羅 8號得以成功返航。

 

而真正的考驗還在後面。

隨著登月計劃緊鑼密鼓的進行,

美國政府和 NASA都繃緊了弦,

蘇聯就在背後,一刻也不能停止。

瑪格麗特加班工作的時候也越來越多了。

而成就總是伴隨著錯誤和風險——

就在阿波羅 11號

歷史性著陸月面的 3分鐘之前,

忽然警報大作,

軌交雷達發來了大量的數據湧入電腦存儲區,

快把電腦弄崩潰了。

若是系統崩潰,

飛船將毫無懸念地墜毀在月面,

「人類的一小步」

可能是一個大坑和兩條生命。

 

但是,瑪格麗特設計的系統頂住了這個壓力。

在大量的數據湧入電腦的時候,

最寶貴的計算資源,

被用於最關鍵的部分,

比如安全登陸本身,

而處理不重要的雷達交互數據的任務被砍掉,

讓程序可以隨時中止低優先級任務,

專注於高優先級任務。

 

這次的事件,也讓她提出了

後來的「異步程序」的概念。

即程序可以不用等待當前任務響應,

先處理其它任務,

待到任務處理完成之後

再接受任務完成的通知。

這也提高計算效率,防止程序被卡死。

用開發術語來說,

瑪格麗特的程序「魯棒性」(Robust)非常高,

在出錯的時候更穩定、更可靠。

 

 

瑪格麗特拯救了人類的登月計劃。

她不僅努力、聰明,而且心思縝密,

她的團隊在每次程序確定之後,

都會一遍遍嚴格地測試,

使用模擬器(儘管還非常初級、簡陋)

來模擬登陸狀況。

許多問題她早就考慮到了,

畢竟「不出錯」永遠都是一個理想狀態。

 

當時的程式設計師們工作系統化程度很低,

如果出現了錯誤,

程式設計師們就潦草地往「出錯理由」裡面

填一個「有bug」完事兒。

瑪格麗特認為這遠遠不夠。

她認為程式設計師們需要理解錯誤,

梳理錯誤的原因,並防止下一次程序出錯。

這種我們現在看來完全是常識的東西,

在計算機的「蠻荒年代」,

需要一顆清醒而負責的頭腦來制定最初的規範。

 

瑪格麗特打趣說,自己如此努力,

是因為「不想在報紙頭版頭條上看到

『阿波羅計劃失敗,

瑪格麗特團隊難辭其咎』」。

「責任感」三個字,

或許在她身上,比什麼都清晰。

 

這就是她寫的代碼,反覆修改的版本,

幾乎快要超過她嬌小的身軀了。

就是這些代碼,寫好之後列印出來,

然後被送到另外一個小工作室,

在那兒有一幫精於針線活兒的女士,

用銅圈「寫」到硬體上……

 

(也不要再想當然地說計算機是男人的事業了。)

 

「軟體工程師」

一個程式設計師的自我修養

勤奮,充滿責任感,

又一直對自己的事業抱有熱愛。

這就是一個軟體工程師的自我修養。

 

前面不是說到,

那個年代不是還沒有「軟體工程」的概念嗎?

在瑪格麗特之前,寫程序是一門手藝,

仿佛變法術或者憑經驗拼湊一般,

而且沒有實體的東西產出——

感覺就像在寫文章,

沒人稱呼一個作者為「文字工程師」吧。

 

而瑪格麗特用自己的實踐,

賦予了這個詞全新的現實意義。

她說,「希望給予給做軟體的人們以尊重,

與做硬體和其它的人一樣,

在這個宏大的工程裡各司其責」。

她開始用「軟體工程師」

來稱呼她在內的程式設計師。

 

一開始,大家都帶著一點開玩笑的態度在用這個詞,

然而,在她的推動下,

「軟體工程」成了一門科學,

更規範、更系統,

瑪格麗特將程式設計師這份事業提升了一個高度。

瑪格麗特團隊寫的程序框架,

也用在了許許多多其它的太空計劃、

乃至後來的客機系統上,

就連你坐的飛機,也該感謝她的代碼呢。

而她在自己所涉及到的許多領域,

都有創見——比如系統設計、

軟體開發、過程模型、開發範式、

軟體可靠性、周期自動化等等等等。

當時 400人團隊所做的事,

已經轉化為規模超過 4000 億美元的巨大產業。

 

然後我們現在的程式設計師們,

就有了「軟體工程師」這個真正的工程師頭銜。

 

《WIRED》上近年的她。

離開 NASA的瑪格麗特自立門戶,

繼續在軟體工程領域發光發熱,

2003年,她因技術和科學貢獻

獲 NASA傑出太空行動獎

(Exceptional Space Act Award。

該獎獎金 37,200美元,

是美國宇航局史上對個人的最大獎賞)。

今天,她由贏得了總統頒發的美國自由勳章。

——是的,人們都不應該忘記,

在層疊的代碼背後,那個時常沉默的女孩,

也不要忘記為早期的計算機事業付出辛勞的女性們。

即使現在也一樣。

 

記住你的前人,

然後在她/他們鋪下的道路上前進。

本文由 果殼網 授權轉載, 原文 於此

未經授權,請勿轉載侵權!

(責任編輯:CMoney編輯 / Alodia)

 

 

菁英軟體工程師戰鬥營

熱烈招生中!

想學程式、成為工程師

卻怕自己沒基礎、學不好嗎?

這裡有史上最專業的魔鬼訓練課程,

讓你有機會 朝夢想前進

全程免費、不用基礎從頭開始、培養就業競爭力!

填寫報名表,將有專人與您聯絡

名額有限>>馬上報名

詳細活動介紹>>點我查看!

有問題歡迎私訊粉專:從0開始學程式!

 

 

 

 

CMoney精選

撰文者CMoney精選

CMoney 自出版社、各大報章雜誌精選好文 網路上的各家觀點,通通網羅呈現 !