新聞中心
?1969年7月20日,經(jīng)過4天飛行的阿波羅11號終于來到了最關(guān)鍵的時刻:降落到月球表面。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、虛擬主機、營銷軟件、網(wǎng)站建設(shè)、金秀網(wǎng)站維護、網(wǎng)站推廣。
就在這個時候,飛船計算機突然開始閃爍報警。
全球6億人在觀看電視直播,NASA飛行控制中心的氣氛讓人窒息。
人類的首次登月計劃面臨著艱難的抉擇:降落還是放棄。
幸運的是,控制中心的人對飛行控制軟件有著高度的信心,指示阿波羅11號繼續(xù)降落。
飛行控制軟件不負(fù)眾望,它忽略了那些低優(yōu)先級的情況,專注于最高優(yōu)先級的任務(wù),引導(dǎo)著阿姆斯特朗和奧爾德林穿過坑坑洼洼的月球表面,成功著陸。
事后分析發(fā)現(xiàn),是因為一個開關(guān)被放置到了錯誤的位置,導(dǎo)致計算機進(jìn)入了過載的狀態(tài)。
那個只有2K內(nèi)存的計算機既得執(zhí)行降落所需的計算,又得處理開關(guān)錯誤引起的額外數(shù)據(jù)。
但是這個程序居然實現(xiàn)了搶占式任務(wù):用高優(yōu)先級的著陸任務(wù)打斷了低優(yōu)先級的,實在太厲害了。
這個飛行控制軟件是瑪格麗特·漢密爾頓和她的團隊編寫的。
(代碼等身)
這無疑是瑪格麗特人生的最高光時刻。
后來樂高公司根據(jù)那張著名的照片開發(fā)了樂高玩具套裝:NASA中的女性,瑪格麗特成為其中的一員。
1、2K內(nèi)存的計算機
瑪格麗特1936年出生于美國印第安納州,后來全家搬到了密歇根,1958年她獲得了密歇根大學(xué)的數(shù)學(xué)學(xué)士學(xué)位,隨后她在MIT找了一份工作,成為了一名程序員,開發(fā)氣象預(yù)測軟件。
這是軟件開發(fā)的蠻荒歲月,計算機科學(xué)和軟件工程還沒有建立,一切全靠程序員在工作的實踐中學(xué)習(xí)。
1961年,瑪格麗特開始參與國防項目SAGE,協(xié)助開發(fā)了美國第一個空中防御系統(tǒng),通過雷達(dá)來搜索飛機。
瑪格麗特在這個項目上展示自己的天賦:“當(dāng)一個新人進(jìn)入項目時,總是會被分配一些沒有人能搞清楚的程序,我也被分了一個非常怪異的程序,最早寫程序的人甚至用希臘語和拉丁語來寫注釋!不過我還是成為了第一個讓這個程序跑起來的人!”
正是在SAGE項目上的成就讓瑪格麗特的人生發(fā)生了轉(zhuǎn)折。
1965年,她的丈夫在當(dāng)?shù)貓蠹埳峡吹搅艘粍t消息:NASA正在尋找程序員,開發(fā)程序,把人類送上月球。
瑪格麗特非常興奮:“哇,那我一定得去!”。
這一年瑪格麗特28歲,加入了阿波羅項目,成為了項目的第一個程序員。
阿波羅項目需要開發(fā)一個精簡的計算機AGC(Appollo Guidance Computer),用來控制登月飛船。
這是一件艱難的任務(wù),因為當(dāng)時的計算機通常要占據(jù)一間屋子,但是AGC被限制到只有一立方英尺那么大。
項目組被分為兩撥人,一撥設(shè)計硬件,另外一撥開發(fā)軟件。
瑪格麗特自然成為了軟件組的負(fù)責(zé)人。
AGC只有可憐巴巴的2K內(nèi)存,36K的ROM,更匪夷所思的是那個ROM是Core rope memory(芯繩存儲器?),也就是說,0和1是通過電線和微小的環(huán)形磁芯表示。
電線穿過磁芯表示1,沒有穿過表示0。
我們現(xiàn)在想把程序存盤,只需要按一個Ctrl + S就可以,但是想把阿波羅飛行軟件存盤,只有一種辦法:像紡織工那樣細(xì)心地把電線和磁芯給編織起來。
這個工作不能出一點兒差錯,要不然,無論代碼寫得多么正確,最終都會功虧一簣。
事實上,這個工作的確是由新英格蘭紡織廠的女工們完成的,繩索存儲器被一些程序員戲稱為Little Old Lady memory。
2、軟件工程
在NASA工作的大多數(shù)軟件工程師都是男性,有人在家里照顧孩子,但是瑪格麗特沒有辦法,在周末和晚上她會帶女兒勞拉來到辦公室。
勞拉經(jīng)常看到她的媽媽在飛船中扮演宇航員來測試軟件,好奇心大起,也想試一試,結(jié)果突然間整個系統(tǒng)崩潰了,原來勞拉在飛船“飛行”期間,選擇了一個叫做P01的功能。
瑪格麗特意識宇航員也有可能犯類似錯誤,希望修改軟件防止它。
但是NASA的人說,宇航員都是訓(xùn)練過的,絕對不會犯類似錯誤。當(dāng)然,修改軟件也非常難,想想芯繩存儲器!
但是,在阿波羅8號繞月飛行的時候,宇航員恰恰犯了和她女兒一樣同樣的錯誤,飛船在太空“迷路”,無法將宇航員送回地球。得知消息的瑪格麗特帶領(lǐng)團隊,突擊9個小時,終于讓阿波羅8號回到正常軌道。
(支援阿波羅8號)
此后,軟件都內(nèi)置了保護功能,防止類似事件的發(fā)生。
瑪格麗特開始將整個阿波羅任務(wù)視為一個系統(tǒng),這個系統(tǒng)由3部分組成:軟件,硬件,人。
在開發(fā)飛行控制軟件的過程中,瑪格麗特創(chuàng)造了“軟件工程”這一術(shù)語,她要賦予“軟件”的合法性,就像硬件以及其他類型的工程一樣,構(gòu)建軟件的人也應(yīng)該得到應(yīng)用的尊重。
在剛開始的時候,大家認(rèn)為這是一個笑話:軟件開發(fā)是工程嗎?
隨著時間的推移,NASA逐漸意識到,軟件工程會成為它們的重要工具,能夠搶先蘇聯(lián)一步完成登月。
3、除了成為先行者別無選擇
“回想起來,我們是世界上最幸運的人,除了成為先行者別無選擇” ---瑪格麗特·漢密爾頓
瑪格麗特就是軟件工程領(lǐng)域的先行者,開發(fā)阿波羅飛行軟件這種對正確性、可靠性要求極高的軟件,沒人任何經(jīng)驗可以遵循,沒有任何學(xué)??梢詫W(xué)習(xí),軟件不僅要工作,而且必須第一次就正確工作。軟件不僅要可靠,而且必須能進(jìn)行實時的錯誤檢測和恢復(fù)。
瑪格麗特帶領(lǐng)團隊出色地完成了這個軟件,在關(guān)鍵時刻把人類送上了月球。
2016年11月22日,瑪格麗特獲得了奧巴馬總統(tǒng)頒發(fā)的總統(tǒng)自由勛章,以表彰她在阿波羅登月任務(wù)開發(fā)機載飛行軟件所做的工作,以及對軟件工程的基礎(chǔ)性貢獻(xiàn)。
瑪格麗特說:當(dāng)我想了解新事物或者做新東西的時候,一定不要讓恐懼成為障礙。
一個人不應(yīng)該害怕說“我不知道”,“我不理解”,或者問“愚蠢的問題”。
即使事情看起來不可能,即使所謂專家說這不可能,也要繼續(xù)下去。
不要害怕犯錯,只有敢于失敗的人才能取得更大的成就。?
當(dāng)前名稱:50年前的程序員女神,用代碼把人類送上月球
文章源于:http://www.dlmjj.cn/article/dpjgdoj.html


咨詢
建站咨詢
