史上最偉大的女程式設計師瑪格麗特·漢密爾頓,沒有她,就沒有阿姆斯特朗的一小步和人類的一大步。
基本介紹
- 中文名:瑪格麗特·漢密爾頓
- 國籍:美國
- 職業:程式設計師
- 主要成就:為世界上第一部攜帶型計算機寫代碼
瑪格麗特·漢密爾頓(Margaret Hamilton)本無意提出軟體的現代概念,也沒想過要將人類送上月球。要知道1960年的社會並不鼓勵女性從事高科技行業。那時24歲的瑪格麗特數學系本科剛畢業,她計畫節衣縮食3年供丈夫入讀哈佛法學院,然後自己再去讀數學研究生。
但是阿波羅登月計畫就在那個時候正式啟動了。瑪格麗特在實驗室帶領一次史詩般的工程壯舉,這項工程將改變人類和科技的未來。
在1960年代做職場媽媽已經是件很不尋常的事,而瑪格麗特竟然還是個給太空飛船寫代碼的程式設計師。在周末或者平常的夜晚,瑪格麗特會把女兒勞倫帶來實驗室。在俯瞰查爾斯河的辦公室里,四歲的勞倫在地板上熟睡,而瑪格麗特忙著編寫代碼——這些代碼,最終都會添加到阿波羅控制艙的計算機里。
瑪格麗特回憶說,“他們對我說,你怎么能離得開女兒啊?”。但是她深愛這份工作的神秘和新奇,她也很喜歡同事之間的情誼——下班後他們會在MIT的職員俱樂部一起喝點小酒,講只有技術宅才能聽懂的笑話。旁人聽得一頭霧水,但在實驗室里,她說,“我是兄弟們的一員”。
那時的技術與工程領域也由“兄弟們”主導。跟今天科技圈少有的女碼農一樣,當時的瑪格麗特就像是個不折不扣的異類。軟體開發者也該驚訝,這個“男孩俱樂部”的其中一個奠基人竟然是個女人。他們或許也該停下來想一想,這種《廣告狂人》時代的性別不平等何以持續至今。
瑪格麗特的事業發展漸漸上了軌道,而此刻的軟體世界——由於甘迺迪在1961年發起的阿波羅登月項目——也身處巨變的邊緣。瑪格麗特就職於MIT的儀器實驗室,在那裡,她和同事一起為世界上第一部攜帶型計算機寫代碼,同時也創造了計算機編程的核心理念。瑪格麗特成了系統編程的專家,也在多場重要的技術爭論中得到認可。“我最開始研究編程的時候,沒人知道我們在幹嘛。我們就像身處美國荒涼的大西部,沒有這樣的課程,也沒有任何一個教授教這個”。瑪格麗特說。
這個時候離微軟的出現還有10年,離馬克·安德森(Marc Andreessen,這傢伙是世界上最早開發瀏覽器的人)發現軟體正在“吞噬世界”也還有將近50年。在阿波羅計畫的早期,人們並沒有過多思考軟體是怎么一回事。MIT航天學教授大衛·曼德爾(David Mindell)在《數字阿波羅》(Digital Apollo)一書中寫道,那些記錄阿波羅計畫相關工程要求的檔案甚至都沒有提到“軟體”這個詞。“軟體並不包括在計畫里,因此也不在預算內”。反正一開始,軟體並沒有受到重視。
但隨著阿波羅計畫的推進,軟體在這個任務中的重要性也明晰起來。1965年,瑪格麗特開始負責“阿波羅”號計算機的飛行軟體。對瑪格麗特而言,這是一段激動人心的日子,整個美國都指望著她的工作成果。但是有時候壓力也會讓她夜裡睡不著。有一次,在參加過一個深夜派對之後,瑪格麗特又沖回實驗室去修改一段突然想起來出錯了的代碼。“我總是在幻想報紙的新聞標題,它們會追問錯誤是如何發生的,而最終原因會指向我”。
軟體成了美國要贏登月競賽的重要籌碼。在1968年,已經有超過400人參與研發阿波羅號的軟體。當然,最終人們發現軟體為世界帶來的遠超於此。當瑪格麗特和同事在為阿波羅飛船編程的時候,他們也在孵化這個未來估值4000億美元的產業。
對瑪格麗特來說,編程就像是在一沓穿孔卡片上穿孔,可以整夜整夜分批在一台模仿阿波羅登月工作的霍尼韋爾(Honeywell)大型主機上進行。瑪格麗特回憶說,“我們必須在飛船起飛之前模擬各種可能發生的情況”。一旦代碼確定後,就會被送往附近一家雷神公司(Raytheon)的廠房。那裡有一群“擅長針線活”的婦女,她們在阿波羅項目中被稱為“小小老婦人”,她們將銅線穿過磁環(穿過磁心的代表1,繞過磁心的代表0)。沒有RAM,也沒有磁碟驅動器;在阿波羅號上,存儲器靠的就是硬接線,而且可以說是無堅不摧。
阿波羅飛行器上載著兩個近乎一樣的機器:一個用於登月艙——也就是登入月球的鷹號,另一個是用於載著太空人往返地球的操作艙。跟其他龐大的計算機不同,這些重達70磅的計算機是便攜的。由MIT工程師哈爾·蘭寧(Hal Laning)和瑪格麗特的老闆迪克·貝頓(Dick Batton)設計,這是首批使用積體電路而非電晶體的重要計算機。正如曼德爾在書中所寫,這是第一個由人工操作、但帶有計算機控制自動駕駛技術的機載導航系統,可謂是如今噴氣客機標配的導航系統的老前輩。
這個系統可以永久保存超過1.2萬個位元組——也就是雷神公司的女孩們用銅線穿繞的環——臨時存儲的空間為1024個位元組。“這是第一次將一台重要的計算機搬到飛船上,還賦予了它極大的責任,”當時在MIT儀器實驗室負責編寫登月艙代碼的唐·埃爾斯(Don Eyles)說,“我們證明了這是可以實現的。我們用今天看起來不可思議、超小的記憶體和非常緩慢的計算速度做到了這一切。”缺了這一切,尼爾·阿姆斯特朗(Neil Armstrong)不可能登上月球;而如果沒有瑪格麗特、埃爾斯和MIT工程師們編寫的軟體,計算機於此也不過是一件無用之物。
這一點在1969年的6月20號得到了充分體現。在阿波羅11號飛船即將登入月球前的幾分鐘,這么關鍵的時刻,阿波羅計算機卻開始突然不斷出現錯誤信息。而正是接下來發生的一切為瑪格麗特贏得認可,為團隊成功解決了危機。錯誤信息的大量出現是因為計算機的過度運轉,除了控制艙登入月球表面所需的進程以外,計算機還進行著一系列不必要的計算。而在休斯頓,工程師很清楚,因為阿波羅號特有的異步處理,這部計算機會集中處理手邊這項任務——讓鷹號在月球登入。瑪格麗特說,當軟體意識到沒有足夠空間去運行進程的時候,它會自己進行錯誤檢查,然後集中處理權重最高的工作。
“不可能發生的事”
一天,勞倫在擺弄MIT控制艙模擬器的顯示器鍵盤一體機DSKY。當她在鍵盤上亂按的時候,一條錯誤信息突然出現。勞倫不知怎地啟動了一個叫做P01的預運行程式,原本正在飛行狀態的模擬器一下子崩潰了。雖然一般來說太空人不會犯這樣的錯,但瑪格麗特還是想加一段代碼防止這種狀況的發生。這一提議被NASA否決,“他們一遍又一遍地跟我說太空人不會犯任何錯誤,他們被訓練得近乎完美,”瑪格麗特說。她轉而加了一句程式說明,所有NASA工程師和太空人都能看到:“不要在飛行過程中按下P01”。她回憶說,“所有人都說,‘那樣的事情永遠都不會發生’。”
但事情的的確確發生了。時間大約在1968年的聖誕節,進入阿波羅8號飛船的第五天飛行,太空人吉姆·洛威爾(Jim Lovell)不小心在飛行中啟動了P01程式。當電話從休斯頓打來的時候,瑪格麗特正在儀器實驗室的2層會議室。啟動P01程式導致此的導航數據全部清空,阿波羅計算機無法計算出如何返回地球。瑪格麗特和MIT的程式設計師們需要想出一個補救的辦法,必須是無錯漏的辦法。在花費9小時鑽研過面前8英寸厚的程式列表後,他們有了一個計畫。休斯頓方面需要上傳一份新的導航數據,而後一切都會順利進行。多虧了瑪格麗特,還有調皮的勞倫,阿波羅號上的太空人才得以重返地球。
同樣值得感激的是瑪格麗特和她開創的工作,這些讓人類認清自己在太空和地面能做些什麼。而軟體工程這個由瑪格麗特引領的概念,從人類登月到現在幾乎進入人類生活的方方面面。到1970年代,瑪格麗特已經超越了之前在NASA和阿波羅計畫中的研究。她後來成立並領導了多家軟體公司。如今她的公司漢米爾頓科技距離她開始職業生涯的地方只有幾個街區遠——MIT,那個至今仍引領代碼革命、仍然仰望星辰的地方。