設置
上一章
下一章

第一百六十七章 MinVM和MinIDE

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

  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和MinC三種開發語言,編譯時不會直接生成機器碼,而是生成MinVM能識別的字節碼,編譯后的程序會在MinVM上執行。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

上一章
書頁
下一章