我們擅長(cháng)商業(yè)策略與用戶(hù)體驗的完美結合。
歡迎瀏覽我們的案例。
1969 年 7 月 20 日下午 4 時(shí) 17 分 42 秒,美國宇航員阿姆斯特朗將左腳小心翼翼地踏上了月球表面,這是人類(lèi)第一次踏上月球。
如今時(shí)間已經(jīng)過(guò)去了 50 年,但阿姆斯特朗那句“我的一小步,人類(lèi)的一大步”的經(jīng)典獨白,仍然深深地刻在每個(gè)人的心里。
騰訊科技聯(lián)合知乎發(fā)起“登月 50 年”系列策劃,聚焦人類(lèi)探索月球的點(diǎn)點(diǎn)滴滴,一起回顧人類(lèi)和月球的往事。
第三期:她的一串代碼讓人類(lèi)登月,兩次化解航天災難,是程序員永恒的女神
文/知乎專(zhuān)欄作者:SME 情報員
2017 年 9 月 15 日,土星探測儀卡西尼已宣告自毀成功,完成了人類(lèi)探索土星的悲壯史命。
但偉大歸偉大,其實(shí)在卡西尼身上也發(fā)生過(guò)讓人哭笑不得的錯誤。
當年的卡西尼身上還帶著(zhù)一枚用于探測土衛六(也稱(chēng)泰坦星,土星衛星中最大的一個(gè))的“惠更斯”號探測器。
當時(shí)“卡西尼-惠更斯”號非常完美地登陸了土衛六,但是地面卻一直沒(méi)有收到儀器傳來(lái)的數據。
經(jīng)徹查后,結果讓所有人大跌眼鏡,原因竟是地面控制員忘了按啟動(dòng)接收按鈕。
最后這個(gè)小失誤導致了大量的數據丟失,包括原本應收到的 700 張珍貴圖片,最后也只剩下 350 張。
而設計者大衛·阿特金森十八年的努力就這樣功虧一簣,而惠更斯號則得名卡西尼的“豬隊友”。
其實(shí)類(lèi)似這種事情,在航天史上從來(lái)沒(méi)少發(fā)生。人為錯誤確實(shí)低級,但卻難以避免。
像執行人類(lèi)第一次登月任務(wù)的阿波羅計劃,也曾經(jīng)因為一個(gè)按鈕的事,差點(diǎn)導致機毀人亡。
但幸運的是,那次有一位“女程序員”挺身而出,拯救這場(chǎng)浩劫。她在“最無(wú)用”的部門(mén)里,卻做了最有用的事情。只是當年極少人意識到她的貢獻,到現在她的故事才被重新提起。沒(méi)有她,就沒(méi)有阿姆斯特朗的一小步和人類(lèi)的一大步。
瑪格麗特·希菲爾德·漢密爾頓,1936 年出生于一個(gè)美國普通家庭。她從小就是典型的“別人家的孩子”,成績(jì)優(yōu)異,性格溫和。高中畢業(yè)后,她就順利考上大學(xué),主修數學(xué)。
在那里她也結識了詹姆斯·漢密爾頓,成了漢密爾頓太太。很自然地,大學(xué)畢業(yè)后她成了一名老師,教數學(xué)和法語(yǔ)。那時(shí),她的丈夫漢密爾頓還在哈佛法學(xué)院繼續深造。
所以一邊工作的她,還主動(dòng)承擔起了所有的家務(wù)。等到丈夫學(xué)成后,瑪格麗特才有機會(huì )繼續深造,再讀一個(gè)抽象數學(xué)的學(xué)位。
然而,他們小兩口的生活并不富裕。為了幫補家用,1962 年瑪格麗特也額外找了一份在 MIT 儀表實(shí)驗室的臨時(shí)編碼工作。也就是這個(gè)決定,讓她一腳踏入了程序的殿堂。
最初,她負責編寫(xiě)在計算機上運行的天氣預報軟件。但因為工作異常出色,很快就獲得了轉正資格,并加入著(zhù)名的林肯實(shí)驗室。
那時(shí),她的工作任務(wù)也從簡(jiǎn)單的程序變到為美國軍方的“賽其”(SAGE)系統*寫(xiě)代碼。(*注:“賽其”系統,被稱(chēng)為國際互聯(lián)網(wǎng)的鼻祖,也是阿帕網(wǎng)的前身,主要目的是在冷戰時(shí)期偵查蘇聯(lián)有可能發(fā)起的核攻擊。)
在上個(gè)世紀 60 年代,程序員可沒(méi)有今日這么風(fēng)光,連“程序猿”都比不上,更別提“軟件工程師”這樣響亮的頭銜。
和今日科技圈少有的女碼農一樣,當年的瑪格麗特就是一個(gè)不折不扣的異類(lèi)。
雖然名不正言不順,但當年程序員們的工作可比現在復雜上幾十倍。
在那個(gè)年代,并不是敲敲鍵盤(pán)就能寫(xiě)出代碼那么簡(jiǎn)單?,敻覃愄厥紫刃枰獙⒋a用打字機寫(xiě)到紙上,連 Debug(排錯)的功能都只能靠腦力檢查。在確認無(wú)誤后,這些信息才會(huì )交給一群精通針線(xiàn)活的“小老太太”(Little Old Ladies)。
她們會(huì )像繡花一樣用磁環(huán)把信息編到內存里,當銅線(xiàn)穿過(guò)磁芯代表1,繞過(guò)磁芯則代表0。
然而這些都還不是最難的。那個(gè)年代正是程序的“開(kāi)荒期”,軟件工程也不是一個(gè)拿捏得十分準確的領(lǐng)域,很多東西還未統一。所以要想為一個(gè)軟件編程,至少要學(xué)好幾套匯編語(yǔ)言。
而剛進(jìn)去的瑪格麗特更像一塊白紙,還需要面對各種棘手的程序,任誰(shuí)都得崩潰。但也正是這些五花八門(mén)的難題,激起了對編程的無(wú)限興趣。
隨著(zhù)日漸豐富的編程經(jīng)驗,瑪格麗特也慢慢成了系統編程的專(zhuān)家。而另一邊肯尼迪也在 1961 年發(fā)起的阿波羅登月計劃,這就成了瑪格麗特人生重要的轉折點(diǎn)。
那時(shí)的她也加入到了阿波羅計劃,為登月飛船寫(xiě)程序。在阿波羅計劃的最初,好像并沒(méi)有“軟件”什么事。就連在原始檔案列出的阿波羅任務(wù)的各項需求中,竟從頭到尾都沒(méi)有提到軟件這個(gè)詞,更別提預算什么的。
之后隨著(zhù)阿波羅項目逐漸啟動(dòng),NASA 才意識到軟件的重要,逐漸把軟件團隊擴大到 400 人。在 1965 年,瑪格麗特也成了整個(gè)軟件編程部的部長(cháng)。
隨著(zhù)責任變重,瑪格麗特的壓力也越來(lái)越大。有一次她甚至還做夢(mèng)見(jiàn)到,新聞頭條是阿波羅墜毀,最后追查下來(lái)竟是自己的程序有誤。當時(shí)她從夢(mèng)中驚醒,就連夜跑回實(shí)驗室,竟然還真的在程序中發(fā)現了一個(gè)小錯誤并改正。
在那段日子里她的女兒勞倫也出生了,所以特別忙的時(shí)候瑪格麗特還不得不將女兒帶去實(shí)驗室。她在工作的時(shí)候,小女兒就在旁邊玩耍,累了就直接在地板睡覺(jué)。
身邊的人都對這位“工作狂媽媽”十分不理解,常問(wèn)她“你怎么忍心這么不顧自己的孩子”。雖然心有愧疚,但她還是對神秘的程序十分癡迷,不能自拔。
一天,女兒勞倫在指令艙模擬器中玩耍。當她在鍵盤(pán)上亂按時(shí),一條錯誤的信息突然彈出。原因是她不小心啟動(dòng)了一個(gè)叫 P01 的預運行程序,導致原本還在飛行狀態(tài)的模擬器瞬間崩潰。
看到這種情況,瑪格麗特就提議在整個(gè)系統中多加一段代碼,防止類(lèi)似的狀況發(fā)生。如果在飛行過(guò)程中,宇航員操作出了什么差池,還有挽回的地步。
但是當時(shí)所有人都覺(jué)得宇航員是受過(guò)嚴格訓練,操作是完美的,“絕對不可能出錯”。再加上當年的計算機存儲空間和運算能力十分有限,決策者也不想添加任何“累贅”的部分。
所以瑪格麗特也無(wú)可奈何,只能在操作系統中添加了一個(gè)備注“不要在飛行中選擇 P01 模式”。
但是可怕的事情,還是發(fā)生了。1968 年 12 月 21 日,人類(lèi)首次繞月飛行的阿波羅 8 號發(fā)射。
但就在飛行的第 5 天,宇航員 Jim Lovell 還是在無(wú)意間按下了 P01 模式。這個(gè)模式的啟動(dòng)后,所有導航數據都會(huì )被清空。
這樣下去,飛船將無(wú)法把宇航員送回地球,在太空中迷路是分分鐘的事。知道要出大事了,決策者也十萬(wàn)火急地打電話(huà)到瑪格麗特那,讓她想一個(gè)補救的辦法。
于是,瑪格麗特也馬上帶著(zhù) MIT 的一群程序員,連夜奮戰了 9 個(gè)小時(shí),才設計出了一個(gè)新的計劃。當時(shí)這份新的導航數據上傳后,大家才松了一口氣。
一切又回到正常的軌道,阿波羅 8 號也順利載著(zhù)宇航員返航。這次事件后,決策者與瑪格麗特都更明顯地感受到軟件對登月計劃的重要性。
軟件幾乎成了美國要贏(yíng)得太空競賽的重要籌碼,瑪格麗特加班的頻率也越來(lái)越高,時(shí)間也越來(lái)越長(cháng)。
但瑪格麗特最大的挑戰還在后面。就在阿波羅 11 號飛船即將登陸月球前的幾分鐘,就是這么一個(gè)關(guān)鍵的時(shí)刻,危機還是發(fā)生了。
登月時(shí)期,人類(lèi)能用的電腦都是超小內存、計算速度極度緩慢的。系統能永久保存的不過(guò) 1.2 萬(wàn)字節,而臨時(shí)存儲的空間就更小了,只有 1024 字節。
用瑪格麗特的話(huà)來(lái)說(shuō)就是“今天看起來(lái)這簡(jiǎn)直不可思議”。所以就在阿波羅 11 號離月球不遠處時(shí),電腦也因過(guò)度運轉,大量地彈出錯誤信息,系統幾近崩潰。
如果電腦扛不住,飛船將毫無(wú)疑問(wèn)墜毀,成為世上最“悲壯”的登月。但就是在這么“不可思議”的硬件條件下,瑪格麗特設計的系統竟頂住所有壓力。
原因是她首創(chuàng )的“異步處理程序”,教會(huì )了電腦如何“決擇”,為阿波羅 11 號解決了危機,也為自己贏(yíng)得了榮譽(yù)。飛船在登月過(guò)程中,除了要控制推進(jìn)外,還會(huì )進(jìn)行著(zhù)一系列不那么重要的計算。
那時(shí)瑪格麗特就考慮到,當大量數據涌入電腦,系統扛不住時(shí)應該怎么辦。所以為了保險起見(jiàn),她細心地在原有的基礎上添加了這個(gè)“異步處理程序”,來(lái)解決問(wèn)題。
當沒(méi)有足夠空間運行時(shí),電腦最寶貴的存儲空間便會(huì )留給最關(guān)鍵的部分,比如最重要的——讓鷹號在月球登陸。而其他低優(yōu)先級的任務(wù),如雷達交換數據任務(wù)將會(huì )被暫時(shí)切斷。
每個(gè)人都看到了阿姆斯特朗在月球上的第一步。然而,不是每個(gè)人都知道這背后,有這么一位女程序員也為女性邁出了一大步。
瑪格麗特拯救人類(lèi)的登月計劃時(shí),年齡不過(guò) 33 歲。除了登月,這位先驅女極客還曾為廣大“碼農”正名,首次使用了“軟件工程師”一詞來(lái)稱(chēng)呼包括自己在內的程序員。
她說(shuō):“希望給予做軟件的人們以尊重,因為他們和其他做硬件的人一樣,在這個(gè)宏大的工程里各司其職。”
登月成功后,瑪格麗特也功成身退,離開(kāi) NASA 出來(lái)創(chuàng )建自己的公司,繼續在軟件行業(yè)努力。
2003 年,她也因當初的貢獻獲得美國宇航局對個(gè)人的最高獎勵,NASA 杰出太空行動(dòng)獎。2016 年,她再次獲得美國最高的民事榮譽(yù)總統勛章,與蓋茨、喬丹同臺領(lǐng)獎。
回顧那段從零開(kāi)始的程序員生活,她說(shuō)自己是世界上最幸運的人。因為“別無(wú)選擇,只能成為先驅者,沒(méi)有時(shí)間成為初學(xué)者”。
?。?a href="http://www.wxlp666.cn/website/">邯鄲網(wǎng)站建設)
小米應用商店發(fā)布消息稱(chēng) 持續開(kāi)展“APP 侵害用戶(hù)權益治理”系列行動(dòng) 11:37:04
騰訊云與CSIG成立政企業(yè)務(wù)線(xiàn) 加速數字技術(shù)在實(shí)體經(jīng)濟中的落地和應用 11:34:49
樂(lè )視回應還有400多人 期待新的朋友加入 11:29:25
亞馬遜表示 公司正在將其智能購物車(chē)擴展到馬薩諸塞州的一家全食店 10:18:04
三星在元宇宙平臺推出游戲 玩家可收集原材料制作三星產(chǎn)品 09:57:29
特斯拉加州San Mateo裁減229名員工 永久關(guān)閉該地區分公司 09:53:13