當前位置: UU看書 > 玄幻 > 月之影面最新章節列表 > 第三十七章 詩人和程式設計師
選擇背景顏色: 選擇字體: 選擇字體大小:

第三十七章 詩人和程式設計師

如果有人問你,詩人跟程式設計師有關係嗎?

千萬不要隨便回答說沒關係,雖然這兩個職業看起來風馬牛不相及,但實際上,詩人和程式設計師還真有很密切的關係。

“If should see you,after long year.”

“Ho should I greet,ith silence and tears “,這兩句是著名的詩人拜倫的名句,

【鑑於大環境如此,本站可能隨時關閉,請大家儘快移步至永久運營的換源App,huanyuanapp.org 】

“一別經年,若再見,問候你的,是我的沉默,還有淚水“

你會問,詩人有了,程式設計師呢?

別急,拜倫的女兒,Ada Lovelace,是世界上第一個程式設計師,她的父親是偉大的詩人,母親是一位業餘數學家,她沒有繼承父親的浪漫,卻繼承了母親的數學才能。

Ada 幫助巴貝奇設計了世界上第一臺計算機-巴貝奇的分析機。

並書寫了第一個巴貝奇分析機的程式,一個解伯努利方程的程式(巧合的是,伯努利方程是流體力學的基礎,也是所有飛行器上能飛上天的理論基礎)。

我們今天所使用的什麼 for net,什麼 do hile 包括子程序的概念,全部來自 Ada ,神奇不?

Ada 和他父親一樣,在最燦爛的年華就離開了,他們在世上都只呆了短短三十六載。

天妒英才,莫過於此啊。

王一男唏噓了一會詩人和程式設計師之間的關係,把容與公司幾個程式設計師,還有116所的飛控程序設計員唬得一愣一愣的。

老闆就是老闆啊,一個簡簡單單的開場白,硬生生被他弄出花來了。

他在白板上寫下

“Ada”,三個字母。

“今天,我們就來講一講Ada”

“Ada是米國軍方使用的程序設計語言,也是華國大量軍工企業使用的程序設計語言”

“所以說兔子是最大的美粉,這是沒問題的”,

“當然,這樣做也沒毛病”,“ADA設計出來,正是為了應對軟體危機的”

“上世紀六七十年代,由於軟體規模的擴大,質量越來越難以保證,bug增加的速度甚至超過了軟件開發的速度”

“所以有了軟體危機一說,什麼人月神話啊,什麼米有免費的銀彈之類的著作都是講這些的”

“後來米國國防部就針對這些問題,專門設計了一個新的語言,就是Ada”

王一男說,”我覺得 Ada 最成功的地方,就在於他回答了一個核心問題,什麼問題呢“

”就是在軟件開發中,什麼是最重要的“,

“我覺得當年設計Ada的米國國防部所分析的程序設計語言設計時候考慮的優先順序,直到今天都還是正確的”,王一男在白板上寫下三個詞,

“穩定性“”可維護性“”表達能力“

“穩定性毫無疑問是最重要的,如果程式不能穩定執行,任何軍用系統,都不可能將它投入實際使用。”

“可維護性在幾十年前是被忽略的,但是今天,大家越發認識到它的重要作用了,程式的生存週期越長,可維護性的重要性越高“

“程式寫出來容易,但是程式就像生命一樣,會跟周圍的環境發生作用,會慢慢的長大,會變化,會生長,會成熟,也會老去。”

“很多程式的壽命要超過人的壽命,所以,不同的人會來維護他,修改他,首先要讀懂它”

“讀都讀不懂,怎麼長大?而可讀性,正是可維護性中最重要的一部分”

“表達能力是我給總結的,雖然從理論上來說,任何程序設計語言的表達能力跟只有向前和向後兩個指令的圖靈機是等價的“

“但是語言能力還是體現在無歧義啊,簡潔,清晰等等上,所以最早的設計目標,跟自然語言接近啥的,被我理解為表達能力”

“不得不說,米國國防部還是非常強大的”

“Ada語言至少領先工業界三十年以上”

“當工業界還在為挖掘每一個時鐘週期的效能而絞盡腦汁的時候,人家已經把可維護性放在僅次於穩定性的位置了”

“所以116所選擇Ada作為飛控系統的開發語言,那是非常有遠見的”

李文靜在臺下舉手了,“你說的很好,很正確”

“不過我們接下來該怎麼幹呢”

”難道我們重新用哥德爾系統理解的語言重寫一遍飛控嗎“,李文靜的話還沒說完呢,就聽見呯呯的聲音,116所的幾個程序開發人員口吐白沫,癱倒在椅子上。

”還是我們寫一套編譯器,將使用Ada語言書寫的飛控系統編譯成哥德爾系統能夠理解的語言“,

呯呯的聲音又響起來了,這回是趙天成和李飛口吐白沫,癱倒在椅子上。

”Good Question“,王一男指了指李文靜,”很好的問題“,

“要不怎麼說咱們是最佳拍檔呢”

“這就要感謝我們偉大的開源事業了”

“有一個開源專案,叫做LLVM的,有人知道嗎”

立刻好幾個人舉起了手,王一男指著116所的一個程式設計師,“你來說說吧”

“LLVM是Lo Level Virtual Machine 的意思,也就是低階虛擬機器,它實際上是一組規範和工具的集合,為開發現有語言的編譯器,甚至設計新的程序設計語言,提供了一個非常強大的基礎“

”Perfect“,王一男誇獎了一句。

“DragonEgg 有人知道嗎“,王一男接著問。

這回沒人舉手了,李文靜舉手說,”龍蛋哇,這個誰不知道“

沒等王一男罵人呢,李文靜坐了下來,“開個玩笑,活躍一下氣氛嘛”

“這是一個GCC的後端,或者說LLVM的前端,能夠將GCC和LLVM連接起來”,王一男說,

“GCC你們都知道吧”

“廢話,別侮辱我們的智商好嗎”,“GCC是一組開源的編譯器,包括C/C++,Fortran ,當然也包括了Ada語言的編譯器,我們116所目前使用的就是GCC”

“好了,齊活啦”,王一男拍了拍手。他在黑板上先畫了一個圓圈,然後在裡面寫上

“116所飛控程式碼”,

“一共多少行程式碼”,王一男問116所的攻城獅,

“大概四百多萬吧”。

偷偷咽了一口口水,王一男在圓圈了添上”400萬行“的字樣。

然後在旁邊又畫了一個圓圈,在裡面寫上“GCC”,再畫了一條帶箭頭的線,從“116所飛控程式碼”指向“GCC”。

“這樣大家能理解吧,GCC可以編譯116所的飛控程式碼”,王一男說。

“這步沒問題,我們也是用GCC來編譯成飛控計算機使用的機器程式碼的”,116所的攻城獅說。

王一男在“GCC”圓圈的邊上又畫了一個圓圈,然後在裡面寫上“龍蛋”兩個字。

“龍蛋就是將GCC和LLVM連接起來的東西”,王一男說,

他在“GCC”圓圈添上一條帶箭頭的線通往“龍蛋”,然後在“龍蛋”圓圈後面又添上一條帶箭頭的線。

在箭頭指向處,王一男打上一個大大的問號。

“看明白了嗎”,王一男問。

所有的人都搖了搖頭,“作者大大,臣妾真的不明白”

王一男指了指趙天成和李飛,

”我們之前在研發哥德爾系統的時候,曾經使用過LLVM,你們還記得嗎?“

”當然記得,哥德爾系統的一部分核心用的就是LLVM的 IR“,

”等等“,”IR“(Intermediate Represention),就是那個通用的中間表示,能夠被LLVM輸出,同時又能被哥德爾系統理解的那個東西?“

”賓果“,王一男打了個響指,

在那個大大的問號那裡,他重重地寫下IR兩個大字。

“這樣,整個流程就全通了,我們不用重寫飛控的程式碼”,116所倒下的攻城獅立刻坐了起來。

“也不用寫編譯器”,李飛和趙天成也滿血復活了。

“利用現有的這些工具鏈,我們可以將116所的飛控程式碼自動編譯成LLVM的中間代碼”

“我們現在要做的事情,只是將這些中間代碼,跟前段時間我們建立的理論模型對應起來,新增必要的輸入輸出模塊”

“新增實際控制面的虛擬模型和程式碼”

“然後,就可以用成噸的資料來訓練哥德爾系統了”

“簡單不簡單,完美不完美?”,王一男顯然又把自己嗨到了,按照他的設想,現在應該是大家高呼“完美,簡單”,

當然如果有識相的來一句“王一男萬歲”,就更完美了。

“幹活啦”,李文靜一巴掌打破了王一男的幻想。

”咱們這裡面,寫程式碼最牛是你,所以能者多勞,你就把整體框架先弄出來,我們負責補充啦“

”老大威武“,這回,連116所的程式設計師也跟在屁股後面喊上了,”老大威武!“

王一男想了一下,確實,整體框架這東西,人多了還真不一定有用,需要保證思路的一致性,讓其他人來弄,他還真不放心,進度也沒有保證。

“好吧,給我三天時間,我會給世界一個奇蹟“

“讓你們看看傳說中卡馬克。王”(卡馬克是Doom的開發者,以獨立開發遊戲引擎而聞名於世,他一個人寫了三代Doom遊戲引擎)

王一男把自己關在一個獨立的辦公室裡面,禁止任何人打擾他。

電話也關機,辦公室裡面一個冰箱是必須有的,他讓人然後扛了一箱子雪碧和一箱子泡麵進去,把張琪家裡的那套價值好幾十萬的音響給勒索了過來,電話裡他是這麼說的,“音響沒有,我就幹不了活,我幹不了活,116所的事情一定就砸了,116所的事情砸了,公司就開不下去了,你自己看著辦吧”

之後整整三天時間,整個公司都能隱約聽到重金屬搖滾的聲音。

三天後,門開啟了,王一男鬍子拉碴,神情憔悴的走了出來,對著門外的李文靜和趙天成說,

“git 裡面我剛提交了版本,你們看看吧,所有文件都在/doc 目錄下”

“所有示例程式碼都在/samples 目錄下面”

“你們叫上116所的攻城獅一起研究吧,我去睡一覺”。

“八個小時之後,所有人一起開工!”(未完待續)