当前位置:萬花小說>书库>都市青春>重生八七之傳奇> 第165章 iV和iD

第165章 iV和iD

  說到虛擬機,甚多人肯定會想到雲計算,確實雲計算中的虛擬服務器也是一種虛擬機。隻是更早以前還有一種應用級的虛擬機,主要用於托管應用程序和操作係統的交互。比如後世的Java、.等都是有名的應用級虛擬機。


  MinVM也是一款應用級的虛擬機,它主要把一種字節碼程序實時翻譯成操作係統能識別的機器指令,用以代替應用程序直揮計算機硬件來執行機器指令。袁明這個C和Java雙料程序員不是吃素的,上輩子他參與過OpenJDK的開源項目,自己寫JVM核心代碼,也研究過整個JVM的項目代碼。OpenJDK是後世JavaVM的開源版本,由Java所有者Sun公司在2006年推出,並負責維護。


  初始的MinVM不需要多大,因為它和曆史上的JavaVM不一樣,它不是為一個新的語言而定製的,所以無需重新做編譯器,袁明利用GNU的GCC編譯器源碼改造後,去除內存管理和指針後,增加了堆棧管理作為原來的內存管理替代品。另外取消了GCC的詞法和語法分析器,改為字節碼分析器。這等於定製化GCC後,在外部套了一個解釋器的殼子,所以代碼量小了不是一點點。


  主要的困難在於從未有過的內存垃圾回收器,這個在後世JavaVM中也是核心技術。幸好袁明看過這個垃圾回收器的源代碼,所以他很容易就把這個內存垃圾回收器的設計給複製出來,甚至核心的代碼都自己寫了。


  另一項困難不是技術難度,而是工作量大。MinVM需要提供MSDos、MinOS、Win等主流操作係統的支持,所以適配開發的工作量非常大。袁明把MinVM為每一種操作係統,發布一個分支版本,這些分支版本最終合成一個大的發布版本。用戶可以根據自己的操作係統有選擇的下載相應操作係統版本的MinVM。所以這部分的開發人員最多,測試的複雜度也最高。


  MinVM這個項目主要由袁明自己負責,除了核心代碼,他隻負責給開發人員講解設計,review他們的代碼,具體的開發工作都是由項目小組自己完成。其實如果袁明自己寫,也不是不可以,甚至能更快些完成。


  袁明本質上還是一個程序員,這一點無論他賺多少錢,有了多大的事業,都未曾變過。每一行代碼的敲擊,會讓他無比投入;每次調試,都會讓他無比激動;每次抓蟲子,都會讓他徹夜難眠。自從他開始Min軟件平台項目,就百分之一萬的投入了進去,就連陸倩都有被冷淡的感覺了,也許程序員們談戀愛難的主要原因就在於此吧。幸好陸倩是個懂事的,她看得出袁明最近很忙,所以就沒有過多打攪他。


  考慮到鍛煉項目組成員地能力,以及未來這個項目需要更多人參與進來,讓MinVM不斷地擴充和升級。而且袁明也不想完全綁定在這個項目上,他還有很多大事情要做,沒那麽多時間和精力來關注具體地軟件開發。所以他在完成了最初的設計,和一些核心代碼之後,更多的是以指導那些開發人員為主,甚至會給他們開一些分享課程,讓他們盡快提高能力。


  這個時代還是有熱血的,很多人充滿了對知識、自由、愛情和高尚情操的向往,所以那是才會有北島、芒克、三毛、王朔這些文學巨子,也有崔健、竇唯、黑豹這樣熱血搖滾。


  在《十三邀》裏,馬東反問許知遠:“你說現在的文化粗鄙了,那我們曾經精致過嗎?”而這些人每一個都可以回答:“當然,我們曾經無比向往過精致、向往過自己思考的日子。”


  這個時代的程序員們雖然處在的領域不同,但是他們一樣有著自己的追求。所以也有著王永民、求伯君、武曉軍這些第一代華夏程序員的奮鬥史。而此時在複興軟件,整個公司上下對這個年輕的老板是非常尊敬的,不是因為他是老板,而是因為他的智慧、他的能力、他的無私,值得他們去學習、去崇拜!


  所以團隊的熱情很高,公司裏到處都是劈裏啪啦的鍵盤敲擊聲,隨處可見熱烈討論,甚至相互爭吵的開發人員。辦公空間裏到處都是寫滿了字小黑板,由於此時沒有白板和白板筆,袁明隻能剛給他們提供黑板和粉筆。在黑板上寫粉筆字,會搞得空間裏到處都是粉塵,不過他們從來都不介意過。


  也許他們不能完全想明白為什麽要做MinVM,但袁明給他們分享的那些知識,極大的開闊了他們的能力,以及他們的人生經曆。袁明相信,隻要給他們成長的機會,他們未來不會比王永民、求伯君、武曉軍這些人來得差!甚至遠遠超越,因為他們所聽、所見、所做的無一不是這個時代最先進的理念!


  MinIDE項目由武曉軍親自負責,由於最核心的編譯器,袁明已經在MinVM中順帶完成了,所以他們主要進攻的是圖形界麵的代碼編輯、調試等功能。MinIDE支持MinB、MinC++三種開發語言,編譯時不會直接生成機器碼,而是生成MinVM能識別的字節碼,編譯後的程序會在MinVM上執行。


  袁明設計的微內核架構困擾了武曉軍很久,因為這種理念在當時還沒有人提出過,他特別難以理解。和袁明閉門討論了幾天,他才逐漸搞清了袁明的整體設計。一旦想明白了之後,他便立刻喜歡起這樣的架構來,也對他的設計思想激發了很多靈感。這就如同印刷,開始武曉軍他們都是雕版印刷,一個本子從頭擼到尾。現在經過袁明指點之後,立刻升級為活字印刷!裝活字的架子就是核心代碼,每一個活字就是一個插件,無論靈活性,還是穩定性都大幅提高,而成本卻是隨著印刷越多,越是在下降的。


  另一個困擾武曉軍的是編譯生成字節碼,這一中間態。開始他和一些項目成員對這個完全想不通,認為沒有必要增加一層代理,這樣會降低程序性能。確實,在當下386時代,是有可能降低一些性能,但隻要486一推出,這些問題都不複存在了。曆史上Java的第一個版本Oak就是1990出生的。


  袁明看著因堅持己見而有些激動的武曉軍,無奈的笑笑問:“你認為未來計算機還會不會變快?”


  他一愣道:“那是當然!”開玩笑摩爾定理那可是已經說了,集成電路上可容納的晶體管數目,約每隔兩年便會增加一倍。那就是說計算機的運行速度就會越來越快。


  “那你認為MinVM會損失多少性能?”袁明笑著又問。


  “大概幾微妙吧?”武曉軍不敢確定的說。


  “那好就算幾微妙吧,當總的計算速度越來越高時,損失的這些時間是否會縮短?”袁明接著問。


  “一定會的。”武曉軍想了一想後,這樣回答。


  “既然損失的性能會越來越少,而總體性能卻又增加的很多,這樣一來,那點損失的性能幾乎可以忽略不計了。”袁明這才笑著解釋道。


  “哦!你的意思是說,以後計算機性能越來越高,損失的性能會越來越微不足道!”武曉軍恍然大悟,他隻想到了現在,沒把計算機的發展速度考慮進來。


  “是的,不但計算機速度會越來越快,另一方麵,我們在虛擬機上的持續研發,會利用算法的優勢來提高程序運行的性能,兩方加一起,整體上MinVM和直接運行機器碼差異就不會太大了。”袁明繼續說道。


  “既然性能損失可以忽略不計,而又可以帶來跨平台的優勢,我們何樂而不為?”袁明笑著反問道?


  “是啊!”武曉軍感歎道:“老板的眼光長遠,考慮的周詳,我沒什麽話說了!今天和老板又學習了一招,用發展的眼光看問題!”


  說服了項目組主要的人員,其他就好辦了。袁明長舒一口氣,開始他還擔心這樣的矛盾會持續存在,可能會影響開發進度。看到他們都跨過了這道坎,袁明的心終於放下來了。

上一章目录+书签下一章