當前位置:
首頁 > 天下 > 把人類送上月球的女程序員:她的代碼跟登月本身一般浪漫……

把人類送上月球的女程序員:她的代碼跟登月本身一般浪漫……

美國西部時間7月18日晚上,位於加州的世界最大太陽能電站——伊萬帕太陽能發電站出現一段無比驚艷的畫面。

日落月升之後,沙漠里10萬多面太陽能電池板的鏡面突然開始調整自己和月亮的角度。

隨後,月光反射到這些太陽能電池板鏡面上,明暗交織,當滿月掛上當空之後,人們驚訝地發現,太陽能電池板反射的月光組成了一副長發女性的半身像,旁邊還有一個數字和環繞的英文字母:阿波羅11號,Margaret Hamilton….

7月20日,也是人類登月50周年紀念日,

50年前,阿波羅11號載著人類開拓宇宙的夢想,踏上了月球之旅。

50年後,在全世界人民將「我的一小步,人類的一大步」背到滾瓜爛熟的今天,谷歌用太陽能電池板反射月光組成肖像,致敬這位「阿波羅11號先鋒」,Margaret Hamilton。

「她將人類送上月球,50年後,人們用光彩奪目的月光肖像向她致敬。」

其實,被稱為「阿波羅11號先鋒」的Margaret並沒有親自踏足月球,但這位女性卻是人類登月的首功之臣,只因為:

Margaret是人類歷史上第一位真正意義上的「軟體工程師」(這個詞也是她本人發明的),所有現代程序員的祖師奶奶。

因為她,人類首次在計算機的幫助下完成登月這樣的宏大工程,

更因為她,阿波羅11號得以在登月的最後3分鐘力挽狂瀾,及時救險,宇航員尼爾·阿姆斯特朗也得以代表人類邁出那「決定性的一大步」....

今天我們要說的,是這位登月工程幕後英雄的故事。

Margaret Hamilton於1936年出生在美國印第安納州,打小開始,Margaret就很喜歡讀書,也非常享受學習的樂趣,然而,這位天生學霸卻有一個缺點,懶得背東西…..

尤其在數學方面,Margaret對背公式和推論深惡痛絕,於是她想出了「偷懶」的辦法:

「我太懶了,不想每一個公式都去記,於是每一條數學公式我都自己推導一遍,學會了推理就不用去死記了…..」

懶得記東西,熱衷於推理演算,也為她日後成為編程界的祖師奶奶埋下了伏筆。

Margaret就這樣一直在「偷懶」中讀完了高中。

1955年,她順利考入了密歇根大學,就讀自己最喜歡的數學專業,原因還是曾經那一個:

不用背東西,可以偷懶…..

讀大學期間,Margaret一邊繼續「偷懶」弄弄數學,一邊還忙著談戀愛。

1958年,Margaret本科畢業,在拿到學位後不久,立馬就跟男友結婚了…..

本科畢業,Margaret本來打算繼續讀研,然而為了支持丈夫修讀哈佛大學的法學碩士,Margaret決定先工作掙錢,於是就到麻省理工的實驗室里當了一位編程員。

誰知道,拿到法律學位之後,丈夫卻希望Margaret放棄麻省的編程工作,到哈佛法學院當個茶水工,因為在當時,丈夫就讀了哈佛法律系的妻子,被稱為「法學之妻」,都可以直接進哈佛當茶水工,工作輕鬆愉快,還能和陪在另一半身邊…..

對於丈夫的這個要求,Margaret果斷拒絕了:

「我不會去端茶倒水的,總有一天,我會讓你以我為榮,但絕不是你希望的那種方式….」

Margaret選擇了繼續留在麻省的林肯實驗室,她開始學習計算機編程,當時的計算機還都是電子管的,計算能力很低,動輒佔據好幾個房間的機器怪獸,能夠承擔的程序任務也很有限,主要用於科研和軍事目的。

儘管如此,Margaret依然有著濃厚的興趣,不用背東西,只需要邏輯推理,這正中她的下懷,Margaret開始如饑似渴地鑽研編程,很快就寫出了預測天氣和偵察敵人軍機數量的程序。

在Margaret自己看來,只是發揮自己數學才能的小小成就,然而她的小成就卻很快引起了美國宇航局NASA的注意,因為當時的NASA正在實施一項史無前例的偉大計劃,急需Margaret這樣的人才。

1965年的一天,NASA的幾個人找到了Margaret,神情嚴肅地對她說出了如下的話:

「我們要找會編程的人,幫我們把人送到月球上去…..」

讓Margaret差點驚掉了下巴,半晌說不出話來,沉默了一陣,她堅定地回答:

「好….我去!」

等打包好行李搬到NASA的工作室時,Margaret才發現:

她本人是NASA為「登月飛船導航」項目招來的第一個編程員,也是當時唯一一個。

按NASA的想法,給登月的宇宙飛船導航編程的事,以後就由她本人全權負責了…..

Margaret也沒被場面嚇到,既然接了這麼大的活兒,那就開動吧,她立馬開始培訓人員,組建團隊。

然而,剛開始啟動「登月導航計算機」項目,她就發現,除了她以外,NASA的其他人幾乎都是小白….

在那個年代,大多數人沒聽說過計算機,更別提軟體,硬體這些專業術語了,一開始,Margaret費了老鼻子勁,才讓她手下的一些大老爺們明白軟體(software)是個什麼玩意兒,有啥用途:

「現在看來是個笑話,但在當時,真的有很多人以為軟體是某種衣服或紡織品……」

當然,NASA為Margaret找來的這幫人也不是吃素,也都是美國數學領域的頂尖人才,大家很快就跟上了節奏,成為Margaret的得力幹將。

不過時間一長,Margaret開始覺得有些力不從心了,原來,實驗室里其他男同事也不比Margaret大多少,雖然一個個都有子女,但因為是男人,可以放心地在實驗室上班,反正家裡有老婆帶娃。

但Margaret不一樣,她的女兒年紀還小,一到實驗室工作,就容易分心牽掛女兒。

考慮了很久,為了既不影響登月,又能照顧到女兒,Margaret乾脆每天把女兒帶到實驗室來上班。

Margaret經常加班到很晚,有時候周末也要趕工,好在女兒終於也可以照顧得到了。

那時候,女兒就每天幫母親假扮宇航員,坐進模擬器中,測試軟體的運行和調試。

有一次,女兒不小心在「模擬著陸」時,提前打開了一個按鈕,這讓Margaret心中一驚,她不由得想到:

萬一在實際登月運行中,宇航員也發生了類似的錯誤,問題可就大了.....

這事兒給了Margaret靈感,她立刻向NASA報告,要求著手開始寫程序補丁——防止宇航員提前開啟某些程序的保護程序。

一開始,NASA的其他人認為這個程序沒有必要:

「我們訓練有素的宇航員絕對不會犯下幾歲小女孩那樣的錯誤!」

Margaret和女兒

然而,Margaret據理力爭,她認為在太空黑暗又孤獨的環境下,人犯低級錯誤的概率相當大,研發這個程序補丁有相當的必要。

最終Margaret贏得了這場爭論,她主導的修正人為錯誤的保護程序,就這樣嵌入了登月的阿波羅飛船上面….

這個保護性程序的實現方式就是:

制定了程序優先順序調度,讓程序可以隨時中止優先順序較低的任務,專註於高優先順序任務。

舉個例子:

比如有人像Margaret的女兒一樣,按錯了按鈕,提前啟動了不該啟動的程序,那也沒關係,電腦能識別出錯誤,並在分析之後仍然執行當下應該執行的——優先順序高的任務……

誰都沒有想到,Margaret從女兒假扮宇航員,漫不經心的玩鬧中得到的啟發,竟然最終成為了挽救登月計劃的決定性因素!

除了這個靈光乍現的神來之筆,Margaret大多數時候的工作都是枯燥乏味的,那時候,NASA的計算機剛剛換成集成電路板,但遠沒有如今的工業設計,

Margaret的編程代碼都是寫在筆記本上的,然後像織毛衣一樣,把硅材料和金屬線圈一個個連接起來。

這個過程需要無比的細心和高度的精神集中,接了一條線,就全盤皆錯。

幾年下來,Margaret寫出的代碼筆記本,堆起來比她本人還高....

而她裝配好的第一台集成電路計算機,背後密密麻麻複雜的線路,交織成一張巨大的蜘蛛網,

這是人類最早的集成電路計算機之一,更承載了史上第一個大型軟體程序——飛船登月的導航程序!

登月計算機的雛形

歷經艱苦卓絕的4年,決定性的一刻終於到來了,1969年7月16日,阿波羅11號宇宙飛船,在大推力火箭「土星5號」的推動下,伴著震天動地的轟鳴,飛向地球外的第一個天體——月球。

經過三天多的飛行,7月20日,阿波羅11號終於開始向月球背面的著落點飛去,一切順利,飛船在慢慢下降。

忽然,還有3分鐘就要著陸的時候,竟然出現了意外情況:

一名宇航員不小心在啟動按鈕時點錯了位置….

宇航員阿姆斯特朗有些慌張,立刻開始報告:

「1202程序警報!1202程序警報!….」

機上的電腦一共發出了5次緊急信號,這是阿姆斯特朗等人此前從未訓練遇到過的。

30多萬技術人員,8年耗資250億美元的工程,全人類的希望,如今都要取決於這幾聲關鍵的警報和幾行計算機代碼了!

所有人的心都提到了嗓子眼,還有3分鐘就要著落了,程序竟然現在開始報錯!而這一警報顯示:

電腦運行過載了...

剎那間,指揮中心的空氣彷彿凝結了,所有人都望向Margaret,臉上帶著驚慌和疑問:

程序出問題了?

降落,還是不降落?

只有3分鐘了!

千鈞一髮的那一刻,Margaret突然想到了當年,她受到女兒胡鬧的啟發寫出來的那個保護軟體:

如果有人按錯了按鈕,提前啟動了其他程序,這個保護程序一定會站出來阻止!

現在應該是有人按錯了按鈕,保護程序啟動阻止了並開始糾錯,於是過載了。

但是,根絕Margaret之前設計的程序,電腦會執行優先順序高的任務——先讓飛船在月球著陸,

所以,此時該做的就是:忽略警報,繼續向前!

Margaret果斷接過麥克風,堅定地喊話:

「我們的軟體程序足夠聰明,相信我們,正常登陸吧!」

漫長的3分鐘過去了,

阿波羅11號終於在月球著落。

尼爾·阿姆斯特朗和隊友巴斯走出船艙,邁出了人類文明史上的一大步…..

那一天,全球6億人見證了阿波羅11號飛船,在Margaret設計的軟體下,順利登陸月球的慶幸。

登月工程獲得巨大成功,宇航員們成了萬眾矚目的英雄,Margaret卻和眾多幕後技術人員一道,躲在了光環背後,多年不為世人所熟知。

多年過去,隨著計算機技術的發展,計算機的運算能力有了長足的進步,軟硬體的搭配之下,如今頂級智能手機的運算能力都是阿波羅11號計算機性能的10萬多倍....

但是,由Margaret領導編寫的軟體卻是空前絕後的,它成功引導阿波羅飛船完成了登月任務,這是當今任何一台電腦都做不到的,因為那台性能並不強大的遠古電腦上,運行著程序員祖師奶奶Margaret寫下的代碼,它無比精確,強大,可靠,一如心智無比強大的Margaret本人。

如今,那14.5萬行,史無前例的,引導人類成功登月的代碼早已被開源,放到了GitHub(著名的軟體源代碼託管服務平台)上,供後世「程序猿」「攻城獅」們膜拜,瞻仰…..

2016年,Margaret獲得了奧巴馬總統給她頒發了總統自由勳章,表彰她在登月方面做出的傑出貢獻。

一路走來,時過境遷,Margaret始終認為,為阿波羅11號編寫導航程序的那些年,是她人生中最美好的時光,她也最終實現了讓丈夫以她為榮的誓言。

在人類闊別月球50年之際,程序員祖師奶奶Margaret的感慨依舊發人深省:

「我們不應該就此停下探索的腳步!」

「我們應當更加無懼無畏,哪怕有專家跳出來說』這不合理』,』那講不通』,因為,我們在夢想變為現實的路上,除了你自己,世上沒人能相信它可以實現,但是,只要你繼續一往無前,夢想終究會變成現實….」

Ref:

https://www.youtube.com/watch?v=k1Tuwvq86YA

https://www.youtube.com/watch?v=kTn56jJW4zY

https://www.computer.org/publications/tech-news/events/what-to-know-about-the-scientist-who-invented-the-term-software-engineering

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

--------------------------------------

xx_略略略略:看得起了一身雞皮疙瘩,太厲害了

棚仁沒果仁兒:懶的背公式...寫一人高的代碼...

神威飛燕:90年那會,我爸是全縣第一個接觸電腦的,一台二手386都特別貴。後來自學編程,自學網路,修電腦更是不在話下,但他經常說:我了解的也就只是計算機的皮毛而已。

chillllamb:我真的崇拜,真的羨慕,總有一天我也要成為她

牛奶妹不牛:祖師奶奶您的徒孫來了程序員必轉

Ev1van:登月背後的故事也如同登月本身硬核又浪漫

…………………………

事兒君有品,

專為大家準備英國的各種值得推薦的好產品~

純清澈蜂蜜

萃百花精選

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 英國那些事兒 的精彩文章:

他殺死4歲妹妹報復母親,如今媒體跟他面對面,他依舊冷靜的可怕……
他們把頭部相連大腦互纏的女嬰成功分離!金錢+技術+運氣…這一路太不容易!

TAG:英國那些事兒 |