第164章 i軟件開發平台
作為一個資深程序員,袁明對集成開發環境(IDE)認識比這個時代的任何人都深。早期的編程語言在送進編譯器處理之前,必須要先經過流程圖、撰寫表格、打卡,所以當時並不需要開發環境。作為第一個高級語言的Basic,是第一個有開發環境的編程語言,同時也是第一個可以直接在主機或終端機前編寫代碼的編程語言。當時它的開發環境是采取命令行方式的,並不像後來的大多數開發語言使用選單和圖形化。但是它提供了編輯、檔案、管理、編譯、調試、執行等功能,算是集成開發環境的雛形。
袁明用的第一款集成開發環境是TurboC,那還是因為大學裏開始學習C語言時才用到了。後來就是TurboC++、BorlandC++、C++Builder、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++語言。
Min軟件平台是一個龐大的項目,僅僅MinVM項目組就有40多人,MinIDE項目組更是有100多人。也虧了蘇省路9號地方大,裝下了複興軟件上下300多人。不過後麵還是要準備搬家了,以後人會越來越多,這個地方總會裝不下的。現在安達已經對新買的新街地塊做設計了,後續準備建成第一個綜合商貿實體的安達廣場,其中會建三棟超級高樓,其中一棟60層最高樓,已經被袁明預定作為複興控股的新總部,改名為複興大廈,未來將把所有複興係公司都搬入進來。
複興軟件使用的全是複興電腦,不但成本低、速度快,而且造型還漂亮。因為從芯片到主板,從顯示器到機箱,全是複興電腦自己造的,使用上更加安全。公司裏的那些小年輕們,對於複興電腦那是愛不釋手,都不敢相信這是他們自己公司生產的。ATX機箱的造型可比現在普遍橫躺的AT機箱漂亮多了,關鍵是組裝和接線都簡單了。有時候,程序員自己就能打開機箱,做做清潔什麽的。
袁明為保證這兩個項目的質量,特地親自寫代碼開發了一個叫SVN源代碼版本控製係統,參考了後世的SVN軟件,主要用於在團隊開發模式下,代碼簽入簽出的版本管理。程序本身並不大,連1000行都沒有,關鍵是設計理念采用了無鎖模式,代碼的簽入簽出不需要給文件加鎖;采用差分編碼,隻保留文件相繼版本之間的差異,這個方法可以更有效的存儲數個版本的文件;采用分支管理,可以讓同一軟件的不同版本以一棵樹的方式存在。
此外他引入了後世持續交付的開發模式,從最核心功能開始,每天設定目標,每天交付,每天做一輪集成測試,下班前要保證集成後的程序可運行。把測試人員下放到開發小組中,基本2、3個開發人員和一個測試人員組成開發小組,測試每天檢查開發的單元測試用例執行情況,以及持續集成測試情況,及時反饋到開發手邊,讓每一個發現的問題都不留到第二天。同時,也是起著督促開發人員提升開發質量的作用。
有了這一個SVN和持續交付,研發團隊的軟件質量和開發效率有了極大提升。如此袁明才能把更多的精力放在設計、架構和核心代碼上。