設置
上一章
下一章

第一百六十六章 Min軟件開發平臺

  作為一個資深程序員,袁明對集成開發環境(IDE)認識比這個時代的任何人都深。早期的編程語言在送進編譯器處理之前,必須要先經過流程圖、撰寫表格、打卡,所以當時并不需要開發環境。作為第一個高級語言的Basic,是第一個有開發環境的編程語言,同時也是第一個可以直接在主機或終端機前編寫代碼的編程語言。當時它的開發環境是采取命令行方式的,并不像后來的大多數開發語言使用選單和圖形化。但是它提供了編輯、檔案、管理、編譯、調試、執行等功能,算是集成開發環境的雛形。

  袁明用的第一款集成開發環境是TurboC,那還是因為大學里開始學習C語言時才用到了。后來就是TurboC、BorlandC、CBuilder、VisualC,再之后就百花齊放。根據項目應用環境的不同,從命令行到圖形界面,從Eclipse到Idea,從C到Java,從編譯到反編譯,從單機到網絡,什么環境都要用。所以,后世的資深程序員任何一個拿出來,都要秒殺這個時代的那些程序員大牛。

  現在MinOS發布以后,只是對三方軟件開發商提供了一系列的DLL庫和資料,怎樣開發和集成還需要軟件商自己去琢磨。當時袁明就想做一個開發環境,幫助三方軟件商提供工作效率,減少開發成本。他有著后世的經驗,上來就準備做插件式集成開發環境。

  插件式集成開發環境是后世發展起來的終極開發環境,它基于微內核架構,把各種開發工具作為插件,根據需要動態載入軟件中,為集成開發環境提供了強大的擴展能力。Eclipse、Idea等著名集成開發環境都是采用的這種架構,一經推出就風靡了整個軟件行業,老牌的IDE提供商紛紛不敵退場。

  這款開發環境由于基于微內核架構,自然就可以載入多種編譯器,因此為跨語言編程提供了良好的支持。袁明目前暫時只準備提供Basic、C語言和C語言,Basic和C都是面向過程的,C是面向對象的。面向對象編程在大規模軟件開發中,具有強大的優勢,相對來講面向過程編程在小規模軟件開發中具有優勢。袁明知道未來不但有大規模的服務端系統,也會有小規模的移動系統,所以兩者都支持在未來會具有更多優勢。

  袁明這次不但要支持多語言,他還有野心要做跨平臺的開發環境。跨平臺就是指軟件開發一次以后,可以在多個操作系統上執行。這在后世Java語言之所以大流行,成為主流開發語言,和Java的跨平臺性直接有關。要在多個操作系統上執行,就必須面對每種操作系統在內核、接口、執行機制上的不同。在沒有跨平臺能力以前,如果軟件商需要在多個操作系統上發布自己的程序,就需要在每個操作系統上都開發一遍。

  比如蓮花公司,它的電子表格系統是在MSDOS、MakOS操作系統上提供的,當威阮的Win操作系統出來以后,它不看好Win操作系統,所以就沒有投資在Win操作系統上。當Win大行其道之后,它再花了很長時間才做出了Win版的電子表格軟件,而這時威阮的電子表格程序已經完全占領了市場。最終蓮花公司失去了在電子表格市場的領導地位,破產被收購。

  從這一點上就能看出,跨平臺對軟件商是多么重要!如果蓮花公司當初是基于跨平臺的開發環境下,開發出的電子表格系統就能很快遷移到Win上,而不用再做戰略選擇了。直接發布到Win就好了,軟件幾乎不用做什么修改。

  跨平臺能力其實就是在操作系統和軟件之間加了一個中間層,叫做虛擬機。虛擬機的作用就是把軟件的指令轉為操作系統的指令去執行,每種操作系統的不同由虛擬機去識別。軟件完全不用理會它會運行在哪個操作系統之上,它只要關心和虛擬機之間的接口即可。這樣通過虛擬機就可以讓軟件開發更簡單,開發速度更快,在多個操作系統上的發布更容易。

  跨平臺得到了軟件開發和發布的便利時,也付出了性能的代價。不過隨著計算機速度越來越快,這一點性能損失對于軟件開發和發布的成本來說,越來越無足輕重。未來誰掌握的跨平臺的標準和基礎,誰就能統治軟件行業,后世的Java已經證明了這一切。

  這一世袁明不準備讓Java出現了,他準備讓Basic、C和C直接運行在虛擬機上,讓這些語言具備了跨平臺能力,這也算是為后世程序員做一些貢獻吧。上一世袁明就經常吐槽,明明C和Java差不多,開發時還要用兩個環境寫,類庫和工具也是完全不同的兩套,一個項目做起來不知道有多辛苦。現在直接好了,C直接運行在虛擬機上了,無論你是做服務端開發,還是做桌面開發,你都可以用一種語言了!無形中學習的成本被降低了很多。

  當然讓C直接運行在虛擬機上,肯定會面臨被吐槽降低C性能,對于這個袁明根本不想理會,上輩子見過太多C和Java性能之爭,結果啦?跨平臺還是成為了主流。

  1月開始袁明集中精力到了復興軟件,專門組建了一個Min軟件平臺項目組。Min軟件平臺項目組內部包含兩個子項目,一個是虛擬機MinVM項目,一個是MinIDE項目。由于現在圖形界面還很簡陋,MinVM項目直接就是命令行,MinIDE項目采用了最簡圖形化界面形式,類似于當初TurboC的界面。

  由于MinVM存在,需要對標準的Basic、C和C語言進行改造,主要的部分就在于內存資源的分配和指針上。MinVM負責了內存資源的創建和銷毀,所以編程語言將不再需要管理內存了;指針既是C、C靈活性的特色,也是程序混亂和泄漏的源泉,而且內存地址變成MinVM堆棧,無需再讓程序員自己計算地址了,所以袁明直接取消了指針。改變后,由于新的Basic、C和C語言的語法和標準的不同,袁明就把他們重新命名為MinB、MinC和MinC語言。

  Min軟件平臺是一個龐大的項目,僅僅MinVM項目組就有40多人,MinIDE項目組更是有100多人。也虧了蘇省路9號地方大,裝下了復興軟件上下300多人。不過后面還是要準備搬家了,以后人會越來越多,這個地方總會裝不下的。現在安達已經對新買的新街地塊做設計了,后續準備建成第一個綜合商貿實體的安達廣場,其中會建三棟超級高樓,其中一棟60層最高樓,已經被袁明預定作為復興控股的新總部,改名為復興大廈,未來將把所有復興系公司都搬入進來。

  袁明為保證這兩個項目的質量,特地親自寫代碼開發了一個叫SVN源代碼版本控制系統,參考了后世的SVN軟件,主要用于在團隊開發模式下,代碼簽入簽出的版本管理。程序本身并不大,連1000行都沒有,關鍵是設計理念采用了無鎖模式,代碼的簽入簽出不需要給文件加鎖;采用差分編碼,只保留文件相繼版本之間的差異,這個方法可以更有效的存儲數個版本的文件;采用分支管理,可以讓同一軟件的不同版本以一棵樹的方式存在。

  此外他引入了后世持續交付的開發模式,從最核心功能開始,每天設定目標,每天交付,每天做一輪集成測試,下班前要保證集成后的程序可運行。把測試人員下放到開發小組中,基本2、3個開發人員和一個測試人員組成開發小組,測試每天檢查開發的單元測試用例執行情況,以及持續集成測試情況,及時反饋到開發手邊,讓每一個發現的問題都不留到第二天。同時,也是起著督促開發人員提升開發質量的作用。

  有了這一個SVN和持續交付,研發團隊的軟件質量和開發效率有了極大提升。如此袁明才能把更多的精力放在設計、架構和核心代碼上。

感謝書友20201011093627431、書友160727062848488、紅眼書癡的

上一章
書頁
下一章