如果有人問你,詩人跟程序員有關系嗎?
千萬不要隨便回答沒關系,雖然這兩個職業(yè)看起來風馬牛不相及,但實際上,詩人和程序員還真有很密切的關系。
“If shuld see u,after lng ear”
“H shuld I greet,ith silene and tears “,這兩句是著名的詩人拜倫的名句,
“一別經(jīng)年,若再見,問候你的,是我的沉默,還有淚水“
你會問,詩人有了,程序員呢?
別急,拜倫的女兒,Ada Lvelae,是世界上第一個程序員,她的父親是偉大的詩人,母親是一位業(yè)余數(shù)學家,她沒有繼承父親的浪漫,卻繼承了母親的數(shù)學才能。
Ada 幫助巴貝奇設計了世界上第一臺計算機-巴貝奇的分析機。
并書寫了第一個巴貝奇分析機的程序,一個解伯努利方程的程序(巧合的是,伯努利方程是流體力學的基礎,也是所有飛行器上能飛上天的理論基礎)。
我們今天所使用的什么 fr,什么 d hile 包括子程序的概念,部來自 Ada ,神奇不?
Ada 和他父親一樣,在最燦爛的年華就離開了,他們在世上都只呆了短短三十六載。
天妒英才,莫過于此啊。
王一男唏噓了一會詩人和程序員之間的關系,把容與公司幾個程序員,還有116所的飛控程序設計員唬得一愣一愣的。
老板就是老板啊,一個簡簡單單的開場白,硬生生被他弄出花來了。
他在白板上寫下
“Ada”,三個字母。
“今天,我們就來講一講Ada”
“Ada是米**方使用的程序設計語言,也是華國大量軍工企業(yè)使用的程序設計語言”
“所以兔子是最大的美粉,這是沒問題的”,
“當然,這樣做也沒毛病”,“ADA設計出來,正是為了應對軟件危機的”
“上世紀六七十年代,由于軟件規(guī)模的擴大,質量來難以保證,bug增加的速度甚至超過了軟件開發(fā)的速度”
“所以有了軟件危機一,什么人月神話啊,什么米有免費的銀彈之類的著作都是講這些的”
“后來米國國防部就針對這些問題,專門設計了一個新的語言,就是Ada”
王一男,”我覺得 Ada 最成功的地方,就在于他回答了一個核心問題,什么問題呢“
”就是在軟件開發(fā)中,什么是最重要的“,
“我覺得當年設計Ada的米國國防部所分析的程序設計語言設計時候考慮的優(yōu)先順序,直到今天都還是正確的”,王一男在白板上寫下三個詞,
“穩(wěn)定性“”可維護性“”表達能力“
“穩(wěn)定性毫無疑問是最重要的,如果程序不能穩(wěn)定運行,任何軍用系統(tǒng),都不可能將它投入實際使用。”
“可維護性在幾十年前是被忽略的,但是今天,大家發(fā)認識到它的重要作用了,程序的生存周期長,可維護性的重要性高“
“程序寫出來容易,但是程序就像生命一樣,會跟周圍的環(huán)境發(fā)生作用,會慢慢的長大,會變化,會生長,會成熟,也會老去。”
“很多程序的壽命要超過人的壽命,所以,不同的人會來維護他,修改他,首先要讀懂它”
“讀都讀不懂,怎么長大?而可讀性,正是可維護性中最重要的一部分”
“表達能力是我給總結的,雖然從理論上來,任何程序設計語言的表達能力跟只有向前和向后兩個指令的圖靈機是等價的“
“但是語言能力還是體現(xiàn)在無歧義啊,簡潔,清晰等等上,所以最早的設計目標,跟自然語言接近啥的,被我理解為表達能力”
“不得不,米國國防部還是非常強大的”
“Ada語言至少領先工業(yè)界三十年以上”
“當工業(yè)界還在為挖掘每一個時鐘周期的性能而絞盡腦汁的時候,人家已經(jīng)把可維護性放在僅次于穩(wěn)定性的位置了”
“所以116所選擇Ada作為飛控系統(tǒng)的開發(fā)語言,那是非常有遠見的”
李文靜在臺下舉手了,“你的很好,很正確”
“不過我們接下來該怎么干呢”
”難道我們重新用哥德爾系統(tǒng)理解的語言重寫一遍飛控嗎“,李文靜的話還沒完呢,就聽見呯呯的聲音,116所的幾個程序開發(fā)人員口吐白沫,癱倒在椅子上。
”還是我們寫一套編譯器,將使用Ada語言書寫的飛控系統(tǒng)編譯成哥德爾系統(tǒng)能夠理解的語言“,
呯呯的聲音又響起來了,這回是趙天成和李飛口吐白沫,癱倒在椅子上。
”Gd Questin“,王一男指了指李文靜,”很好的問題“,
“要不怎么咱們是最佳拍檔呢”
“這就要感謝我們偉大的開源事業(yè)了”
“有一個開源項目,叫做LLVM的,有人知道嗎”
立刻好幾個人舉起了手,王一男指著116所的一個程序員,“你來吧”
“LLVM是L Level Virtual Mahine 的意思,也就是低級虛擬機,它實際上是一組規(guī)范和工具的集合,為開發(fā)現(xiàn)有語言的編譯器,甚至設計新的程序設計語言,提供了一個非常強大的基礎“
”Perfet“,王一男夸獎了一句。
“DragnEgg 有人知道嗎“,王一男接著問。
這回沒人舉手了,李文靜舉手,”龍蛋哇,這個誰不知道“
沒等王一男罵人呢,李文靜坐了下來,“開個玩笑,活躍一下氣氛嘛”
“這是一個GCC的后端,或者LLVM的前端,能夠將GCC和LLVM連接起來”,王一男,
“GCC你們都知道吧”
“廢話,別侮辱我們的智商好嗎”,“GCC是一組開源的編譯器,包括C/C++,F(xiàn)rtran ,當然也包括了Ada語言的編譯器,我們116所目前使用的就是GCC”
“好了,齊活啦”,王一男拍了拍手。他在黑板上先畫了一個圓圈,然后在里面寫上
“116所飛控代碼”,
“一共多少行代碼”,王一男問116所的攻城獅,
“大概四百多萬吧”。
偷偷咽了一口口水,王一男在圓圈了添上”4萬行“的字樣。
然后在旁邊又畫了一個圓圈,在里面寫上“GCC”,再畫了一條帶箭頭的線,從“116所飛控代碼”指向“GCC”。
“這樣大家能理解吧,GCC可以編譯116所的飛控代碼”,王一男。
“這步?jīng)]問題,我們也是用GCC來編譯成飛控計算機使用的機器代碼的”,116所的攻城獅。
王一男在“GCC”圓圈的邊上又畫了一個圓圈,然后在里面寫上“龍蛋”兩個字。
“龍蛋就是將GCC和LLVM連接起來的東西”,王一男,
他在“GCC”圓圈添上一條帶箭頭的線通往“龍蛋”,然后在“龍蛋”圓圈后面又添上一條帶箭頭的線。
在箭頭指向處,王一男打上一個大大的問號。
“看明白了嗎”,王一男問。
所有的人都搖了搖頭,“作者大大,臣妾真的不明白”
王一男指了指趙天成和李飛,
”我們之前在研發(fā)哥德爾系統(tǒng)的時候,曾經(jīng)使用過LLVM,你們還記得嗎?“
”當然記得,哥德爾系統(tǒng)的一部分核心用的就是LLVM的 IR“,
”等等“,”IR“(Interdiate Representin),就是那個通用的中間表示,能夠被LLVM輸出,同時又能被哥德爾系統(tǒng)理解的那個東西?“
”賓果“,王一男打了個響指,
在那個大大的問號那里,他重重地寫下IR兩個大字。
“這樣,整個流程就通了,我們不用重寫飛控的代碼”,116所倒下的攻城獅立刻坐了起來。
“也不用寫編譯器”,李飛和趙天成也滿血復活了。
“利用現(xiàn)有的這些工具鏈,我們可以將116所的飛控代碼自動編譯成LLVM的中間代碼”
“我們現(xiàn)在要做的事情,只是將這些中間代碼,跟前段時間我們建立的理論模型對應起來,添加必要的輸入輸出模塊”
“添加實際控制面的虛擬模型和代碼”
“然后,就可以用成噸的數(shù)據(jù)來訓練哥德爾系統(tǒng)了”
“簡單不簡單,完美不完美?”,王一男顯然又把自己嗨到了,按照他的設想,現(xiàn)在應該是大家高呼“完美,簡單”,
當然如果有識相的來一句“王一男萬歲”,就更完美了。
“干活啦”,李文靜一巴掌打破了王一男的幻想。
”咱們這里面,寫代碼最牛是你,所以能者多勞,你就把整體框架先弄出來,我們負責補充啦“
”老大威武“,這回,連116所的程序員也跟在屁股后面喊上了,”老大威武!“
王一男想了一下,確實,整體框架這東西,人多了還真不一定有用,需要保證思路的一致性,讓其他人來弄,他還真不放心,進度也沒有保證。
“好吧,給我三天時間,我會給世界一個奇跡“
“讓你們看看傳中卡馬克。王”(卡馬克是D開發(fā)者,以**開發(fā)游戲引擎而聞名于世,他一個人寫了三代D戲引擎)
王一男把自己關在一個**的辦公室里面,禁止任何人打擾他。
電話也關機,辦公室里面一個冰箱是必須有的,他讓人然后扛了一箱子雪碧和一箱子方便面進去,把張琪家里的那套價值好幾十萬的音響給勒索了過來,電話里他是這么的,“音響沒有,我就干不了活,我干不了活,116所的事情一定就砸了,116所的事情砸了,公司就開不下去了,你自己看著辦吧”
之后整整三天時間,整個公司都能隱約聽到重金屬搖滾的聲音。
三天后,門打開了,王一男胡子拉碴,神情憔悴的走了出來,對著門外的李文靜和趙天成,
“git 里面我剛提交了版,你們看看吧,所有文檔都在/d 目錄下”
“所有示例代碼都在/sales 目錄下面”
“你們叫上116所的攻城獅一起研究吧,我去睡一覺”。
“八個時之后,所有人一起開工!”
【精彩東方文學 www.nuodawy.com】 提供武動乾坤等作品手打文字版最新章節(jié)首發(fā),txt電子書格式免費下載歡迎注冊收藏。