首頁 » 科技 » 她寫的代碼把人類帶上了月球

她寫的代碼把人類帶上了月球

  來源:界面

  沒有她,就沒有阿姆斯特朗的一小步和人類的一大步。

她寫的代碼把人類帶上了月球瑪格麗特·漢密爾頓(Margaret Hamilton)在MIT博物館,圖片來源:HARRY GOULD HARVEY IV

  瑪格麗特·漢密爾頓(Margaret Hamilton)本無意提出軟件的現代概念,也沒想過要將人類送上月球。要知道1960年的社會並不鼓勵女性從事高科技行業。那時24歲的瑪格麗特數學系本科剛畢業,她計劃節衣縮食3年供丈夫入讀哈佛法學院,然後自己再去讀數學研究生。

  但是阿波羅登月計劃就在那個時候啟動了。瑪格麗特在實驗室帶領一次史詩般的工程壯舉,這項工程將改變人類和科技的未來。

  在1960年代做職場媽媽已經是件很不尋常的事,而瑪格麗特竟然還是個給太空飛船寫代碼的程序員。在周末或者平常的夜晚,瑪格麗特會把女兒勞倫帶來實驗室。在俯瞰查爾斯河的辦公室里,四歲的勞倫在地板上熟睡,而瑪格麗特忙着編寫代碼——這些代碼,最終都會添加到阿波羅控制艙的計算機里。

她寫的代碼把人類帶上了月球瑪格麗特躺在阿波羅控制艙的模擬器內,圖片來源:Margaret Hamilton

  瑪格麗特回憶說,“他們對我說,你怎麼能離得開女兒啊?”。但是她深愛這份工作的神秘和新奇,她也很喜歡同事之間的情誼——下班后他們會在MIT的職員俱樂部一起喝點小酒,講只有技術宅才能聽懂的笑話。旁人聽得一頭霧水,但在實驗室里,她說,“我是兄弟們的一員”。

  那時的技術與工程領域也由“兄弟們”主導。跟今天科技圈少有的女碼農一樣,當時的瑪格麗特就像是個不折不扣的異類。現在的軟件開發者也該驚訝,這個“男孩俱樂部”的其中一個奠基人竟然是個女人。他們或許也該停下來想一想,這種《廣告狂人》時代的性別不平等何以持續至今。

她寫的代碼把人類帶上了月球  瑪格麗特站在阿波羅計算機指導手冊(AGC)的源代碼程序列表旁邊,這些材料摞起來比她的人還要高。圖片來源:Margaret Hamilton

  瑪格麗特的事業發展漸漸上了軌道,而此刻的軟件世界——由於肯尼迪在1961年發起的阿波羅登月項目——也身處巨變的邊緣。瑪格麗特就職於MIT的儀器實驗室,在那裡,她和同事一起為世界上第一部便攜式計算機寫代碼,同時也創造了計算機編程的核心理念。瑪格麗特成了系統編程的專家,也在多場重要的技術爭論中得到認可。“我最開始研究編程的時候,沒人知道我們在幹嘛。我們就像身處美國荒涼的大西部,沒有這樣的課程,也沒有任何一個教授教這個”。瑪格麗特說。

  這個時候離微軟的出現還有10年,離馬克·安德森(Marc Andreessen,這傢伙是世界上最早開發瀏覽器的人)發現軟件正在“吞噬世界”也還有將近50年。在阿波羅計劃的早期,人們並沒有過多思考軟件是怎麼一回事。MIT航天學教授大衛·曼德爾(David Mindell)在《數字阿波羅》(Digital Apollo)一書中寫道,那些記錄阿波羅計劃相關工程要求的文件甚至都沒有提到“軟件”這個詞。“軟件並不包括在計劃里,因此也不在預算內”。反正一開始,軟件並沒有受到重視。

  但隨着阿波羅計劃的推進,軟件在這個任務中的重要性也明晰起來。1965年,瑪格麗特開始負責“阿波羅”號計算機的飛行軟件。對瑪格麗特而言,這是一段激動人心的日子,整個美國都指望着她的工作成果。但是有時候壓力也會讓她夜裡睡不着。有一次,在參加過一個深夜派對之後,瑪格麗特又沖回實驗室去修改一段突然想起來出錯了的代碼。“我總是在幻想報紙的新聞標題,它們會追問錯誤是如何發生的,而最終原因會指向我”。

她寫的代碼把人類帶上了月球  圖為1962年4月19日,瑪格麗特和她的前同事。瑪格麗特當時正在林肯實驗室的第一台AN/FSQ-7電腦上研發軟件,一個雷達監測軟件,用以監測敵機。圖片來源:Margaret Hamilton

  軟件成了美國要贏登月競賽的重要籌碼。在1968年,已經有超過400人參與研發阿波羅號的軟件。當然,最終人們發現軟件為世界帶來的遠超於此。當瑪格麗特和同事在為阿波羅飛船編程的時候,他們也在孵化這個未來估值4000億美元的產業。

  對瑪格麗特來說,編程就像是在一沓穿孔卡片上穿孔,可以整夜整夜分批在一台模仿阿波羅登月工作的霍尼韋爾(Honeywell)大型主機上進行。瑪格麗特回憶說,“我們必須在飛船起飛之前模擬各種可能發生的情況”。一旦代碼確定后,就會被送往附近一家雷神公司(Raytheon)的廠房。那裡有一群“擅長針線活”的婦女,她們在阿波羅項目中被稱為“小小老婦人”,她們將銅線穿過磁環(穿過磁心的代表1,繞過磁心的代表0)。沒有RAM,也沒有磁盤驅動器;在阿波羅號上,存儲器靠的就是硬接線,而且可以說是無堅不摧。

她寫的代碼把人類帶上了月球一位雷神公司的員工正將銅線穿過磁環,圖片來源:JACK POUNDSTONE/RAYTHEON
她寫的代碼把人類帶上了月球阿波羅計劃的“小小老婦人”,圖片來源:JACK POUNDSTONE/RAYTHEON
她寫的代碼把人類帶上了月球銅線穿繞磁環,近照,圖片來源:JACK POUNDSTONE/RAYTHEON

  阿波羅飛行器上載着兩個近乎一樣的機器:一個用於登月艙——也就是登陸月球的鷹號,另一個是用於載着宇航員往返地球的操作艙。跟其他龐大的計算機不同,這些重達70磅的計算機是便攜的。由MIT工程師哈爾·蘭寧(Hal Laning)和瑪格麗特的老闆迪克·貝頓(Dick Batton)設計,這是首批使用集成電路而非晶體管的重要計算機。正如曼德爾在書中所寫,這是第一個由人工操作、但帶有計算機控制自動駕駛技術的機載導航系統,可謂是如今噴氣客機標配的導航系統的老前輩。

  這個系統可以永久保存超過1.2萬個字節——也就是雷神公司的女孩們用銅線穿繞的環——臨時存儲的空間為1024個字節。“這是第一次將一台重要的計算機搬到飛船上,還賦予了它極大的責任,”當時在MIT儀器實驗室負責編寫登月艙代碼的唐·埃爾斯(Don Eyles)說,“我們證明了這是可以實現的。我們用今天看起來不可思議、超小的內存和非常緩慢的計算速度做到了這一切。”缺了這一切,尼爾·阿姆斯特朗(Neil Armstrong)不可能登上月球;而如果沒有瑪格麗特、埃爾斯和MIT工程師們編寫的軟件,計算機於此也不過是一件無用之物。

  這一點在1969年的6月20號得到了充分體現。在阿波羅11號飛船即將登陸月球前的幾分鐘,這麼關鍵的時刻,阿波羅計算機卻開始突然不斷出現錯誤信息。而正是接下來發生的一切為瑪格麗特贏得認可,為團隊成功解決了危機。錯誤信息的大量出現是因為計算機的過度運轉,除了控制艙登陸月球表面所需的進程以外,計算機還進行着一系列不必要的計算。而在休斯頓,工程師很清楚,因為阿波羅號特有的異步處理,這部計算機會集中處理手邊這項任務——讓鷹號在月球登陸。瑪格麗特說,當軟件意識到沒有足夠空間去運行進程的時候,它會自己進行錯誤檢查,然後集中處理權重最高的工作。

  “不可能發生的事”

她寫的代碼把人類帶上了月球瑪格麗特和她的女兒勞倫,圖片來源:Margaret Hamilton

  一天,勞倫在擺弄MIT控制艙模擬器的顯示器鍵盤一體機DSKY。當她在鍵盤上亂按的時候,一條錯誤信息突然出現。勞倫不知怎地啟動了一個叫做P01的預運行程序,原本正在飛行狀態的模擬器一下子崩潰了。雖然一般來說宇航員不會犯這樣的錯,但瑪格麗特還是想加一段代碼防止這種狀況的發生。這一提議被NASA否決,“他們一遍又一遍地跟我說宇航員不會犯任何錯誤,他們被訓練得近乎完美,”瑪格麗特說。她轉而加了一句程序說明,所有NASA工程師和宇航員都能看到:“不要在飛行過程中按下P01”。她回憶說,“所有人都說,‘那樣的事情永遠都不會發生’。”

  但事情的的確確發生了。時間大約在1968年的聖誕節,進入阿波羅8號飛船的第五天飛行,宇航員吉姆·洛威爾(Jim Lovell)不小心在飛行中啟動了P01程序。當電話從休斯頓打來的時候,瑪格麗特正在儀器實驗室的2層會議室。啟動P01程序導致此的導航數據全部清空,阿波羅計算機無法計算出如何返回地球。瑪格麗特和MIT的程序員們需要想出一個補救的辦法,必須是無錯漏的完美辦法。在花費9小時鑽研過面前8英寸厚的程序列表后,他們有了一個計劃。休斯頓方面需要上傳一份新的導航數據,而後一切都會順利進行。多虧了瑪格麗特,還有調皮的勞倫,阿波羅號上的宇航員才得以重返地球。

她寫的代碼把人類帶上了月球  左下角的是瑪格麗特,她和其他同事正在MIT為阿波羅8號提供後方支持。圖片來源:Margaret Hamilton

  同樣值得感激的是瑪格麗特和她開創的工作,這些讓人類認清自己在太空和地面能做些什麼。而軟件工程這個由瑪格麗特引領的概念,從人類登月到現在幾乎進入人類生活的方方面面。到1970年代,瑪格麗特已經超越了之前在NASA和阿波羅計劃中的研究。她後來成立並領導了多家軟件公司。如今她的公司漢米爾頓科技距離她開始職業生涯的地方只有幾個街區遠——MIT,那個至今仍引領代碼革命、仍然仰望星辰的地方。

  翻譯:李睿一

她寫的代碼把人類帶上了月球

看看這個吧

霍金想要探測比鄰星,有可能成功嗎?

>>全台最快速,高清1080p ...

蘋果購地以時光女神命名 疑有關電動汽車項目

>>全台最快速,高清1080p ...