日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
一個發(fā)誓不用Java的程序員,不得不在太空中調(diào)試Lisp

1998年10月24日,伴隨著火箭的轟鳴,美國宇航局的深空一號成功升空。

為西吉等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及西吉網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站制作、成都網(wǎng)站建設(shè)、西吉網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

深空一號肩負(fù)著NASA的重要使命,旨在驗(yàn)證未來行星際探測所需的十幾項新技術(shù)。

在深空一號飛行了2.4億公里以后,突然發(fā)生了一個故障,有個進(jìn)程不工作了。

地面人員非常緊張,趕緊召來軟件團(tuán)隊商量對策。

軟件團(tuán)隊在會議絞盡腦汁,激烈爭論,最后決定對深空一號的軟件進(jìn)行調(diào)試。

調(diào)試?到底該怎么調(diào)試?

軟件可不是部署在某個機(jī)房里,而是位于距離地球2.4億公里的航天器中,距離之遠(yuǎn)即使是光也需要半個小時才能跑個來回。

但是NASA的工程師們卻成功地解決了這個問題,原因就是深空一號上的控制軟件是用Lisp寫的!

要想了解整個事情的來龍去脈,必須把時間拉得長一些。

1988年,羅恩來到NASA的JPL(噴氣推進(jìn)實(shí)驗(yàn)室,錢學(xué)森是創(chuàng)始人之一),在自主機(jī)器人的人工智能組工作。

JPL當(dāng)時制定了一個火星探測的計劃,希望能到達(dá)火星,并且采樣返回。

任務(wù)龐大而艱巨,預(yù)算有數(shù)十億美元,羅恩他們要做的是火星車原型的研制。

這些原型有大有小,有重達(dá)一噸,像SUV的Robby :

也有小巧玲瓏,像個玩具車的Tooth:

為了讓火星車能自主避障,在火星漫游,必須要給它配套一個強(qiáng)大的軟件,讓它具備一個強(qiáng)大的大腦。

用什么編程語言呢?

在80年代,沒有Java, 沒有Python,沒有JavaScript,航天器主要是用匯編編寫的。

而羅恩他們決定嘗試一個新語言:Lisp。

Lisp在當(dāng)時是人工智能的編程語言,正好和火星車的任務(wù)匹配,并且也不用管理C語言的指針,還支持垃圾回收。

不過當(dāng)時的NASA對Lisp持懷疑的態(tài)度,很多人覺得Lisp很奇怪,擔(dān)心Lisp那奇怪的垃圾回收技術(shù)會突然讓應(yīng)用進(jìn)程死掉。

但是羅恩認(rèn)為:“當(dāng)你使用的語言提供一種高級的抽象時,完成工作會變得更快更容易?!?/p>

羅恩他們先使用Lisp針對手頭的問題定義一個自定義語言,相當(dāng)于DSL,然后為火星車的硬件進(jìn)行編譯,這種方式對于內(nèi)存受限的硬件非常有用。

在把代碼安裝到火星車上進(jìn)行測試之前,羅恩的小組還在Macintosh 電腦上寫了一個模擬器,把代碼做了非常充分的測試。

羅恩的小組不但能寫火星車的漫游和避障程序,還能寫底層的編譯器和模擬器,可見技術(shù)能力還是非常強(qiáng)的。

雖然Lisp火星車進(jìn)展順利,可以使用立體視覺傳感器在戶外自主導(dǎo)航,在崎嶇地形環(huán)境下漫游,但是羅恩他們并不是唯一一組火星車原型制造者,他們還有競爭對手。

羅恩回憶說:NASA內(nèi)部也存在山頭,也有政治斗爭,Lisp火星車不幸成為犧牲品,最后團(tuán)隊解散,很多成員離開了。

1997年,第一個火星車Sojourner到達(dá)火星,這時候,驅(qū)動它的是C語言。

幸運(yùn)的是,NASA換了一個領(lǐng)導(dǎo),發(fā)起了一個叫做新千年的計劃,其中一個任務(wù)就是深空探測。

深空一號計劃飛過一個小行星和彗星。

它需要一個自主航天器控制系統(tǒng),叫做遠(yuǎn)程代理(Remote Agent)。

C++派和Lisp派展開了一場斗爭,這一次最終Lisp獲勝。

羅恩他們故伎重演,再次使用Lisp 定制了一個領(lǐng)域?qū)S姓Z言,這個語言的結(jié)構(gòu)會阻止你編寫某些有問題的代碼,例如競爭條件。

代碼在深空一號的備份上做了一遍又一遍的測試,羅恩他們對軟件非常有信心,認(rèn)為絕對不會出錯。

但是世界上哪有絕對的事情?

越是你覺得不會出錯的地方,偏偏就在那里出錯。

Lisp代碼被部署到了生產(chǎn)環(huán)境:深空一號航天器

深空一號向一顆小行星飛去,這一去就是2.4億公里。

就在這時,深空一號發(fā)生了故障,它并沒有完成一件應(yīng)該做的事情。

羅恩他們必須對深空一號上的Lisp軟件進(jìn)行調(diào)試,這個調(diào)試并不是在一個機(jī)房的服務(wù)器上,代碼運(yùn)行的地方在2.4億公里以外,即使是光也需要半個小時才能跑一個來回!

幸虧深空一號運(yùn)行的是Lisp,它支持REPL(read–eval–print loop)這樣功能,可以輸入一個命令,然后查看結(jié)果。

一群人坐在會議中,絞盡腦汁,討論發(fā)送什么命令來調(diào)試。

當(dāng)然,每一條調(diào)試命令都需要層層審批,讓所有人簽字,然后由接受過培訓(xùn)的操作員在深空網(wǎng)絡(luò)控制臺前輸入命令,按下紅色按鈕,信號會通過一個巨大的70米的天線發(fā)送出去,以光速奔向深空一號。

羅恩他們要做的第一件事是看看系統(tǒng)的轉(zhuǎn)儲信息,看看當(dāng)前活動進(jìn)程的列表,他們向深空一號發(fā)了一個S表達(dá)式。

數(shù)據(jù)傳輸回來以后,大家立刻就發(fā)現(xiàn)了問題:有個進(jìn)程在等待一個已經(jīng)發(fā)生了的事件。

這本來是不可能發(fā)生的,主要是因?yàn)橛袀€程序調(diào)用了底層的Lisp函數(shù)導(dǎo)致的。

團(tuán)隊決定手工觸發(fā)這個事件,這就可以讓那個進(jìn)程繼續(xù)執(zhí)行了。

感謝 LISP 的魔力,感謝在深空一號飛船上安裝實(shí)時 REPL 的驚人想法,他們成功地挽救了這項任務(wù)。

在2.4億公里以外調(diào)試代碼,修復(fù)問題確實(shí)讓人印象深刻,但是NASA并沒有擁抱Lisp。

NASA當(dāng)時有個響亮的口號“更好,更快,更省”,其實(shí)這更像一個不可能三角形。

在這樣的思想指引下,深空探測項目經(jīng)費(fèi)很少,時間又很緊張。所以當(dāng)出現(xiàn)進(jìn)度延期和預(yù)算超支時,Lisp成了替罪羊。

關(guān)鍵的轉(zhuǎn)折點(diǎn)是一個有著200人參加的重大審查,包括很多JPL的高級管理人員,當(dāng)軟件集成工程師在做演示時,

有人問他:如果可以改變一件事情,可以讓事情變得更好,這件事情是什么?

這個工程師回答:去掉Lisp。

這幾乎就宣布了Lisp在JPL的死刑。

羅恩非常沮喪,他在JPL被邊緣化,希望和他合作的人越來越少。

這時候,他發(fā)現(xiàn)一家叫做Google的網(wǎng)站,這個網(wǎng)站的搜索結(jié)果好得不可思議,速度快得嚇人,羅恩很快找到了招聘鏈接,投遞了簡歷。

2000年,羅恩在JPL工作了12年以后,加入了正在冉冉升起的明星公司Google。

羅恩一直覺得在軟件業(yè),管理層一直在尋找一種開發(fā)流程,讓程序員變成可以插拔的、可以替換的組件,這實(shí)在是太嚇人了。

而Java恰好匹配了管理層的這種需求,所以他發(fā)誓永遠(yuǎn)不會成為一名Java程序員,在90年代后期,這個決定讓90%以上的工作對他關(guān)閉了大門。

羅恩選擇Google的一個重要原因就是他們不使用Java,但是,他在Google的第一項工作就是:

領(lǐng)導(dǎo)公司的第一個Java項目!

這個項目最終變成了Google AdWords。

羅恩很懷念Lisp,他有過在JPL推銷Lisp的經(jīng)驗(yàn),于是他故伎重演,先在團(tuán)隊做了Lisp演示,成功地捕獲了程序員的芳心,大家一致認(rèn)為使用Lisp是個好主意,接下來只需要說服工程副總即可。

羅恩信心滿滿地去找副總。

羅恩:有件事我想和你談?wù)?..

副總:讓我猜猜,你想用Smalltalk ?

羅恩:呃,不....

副總:Lisp?

羅恩:是的!

副總:不可能!

羅恩:...

參考資料:

https://corecursive.com/lisp-in-space-with-ron-garret/

https://flownet.com/gat/jpl-lisp.html

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


新聞名稱:一個發(fā)誓不用Java的程序員,不得不在太空中調(diào)試Lisp
本文鏈接:http://www.5511xx.com/article/dpoosid.html