無疑的C/C++是一個成功的語言,符合當時的程式設計需要,但是"最近"(約十年吧)竄起的java卻是非常的快速,我覺得C/C++在lib上的發展也不比他快
為何會這樣?有些人歸功於java的memory management的成功,其實我頗不以為然,尤其最近,記憶體對於一般應用程式來說根本不成問題;再加上OS的進步,一個不回收記憶體的程式,只要很快的結束的話,OS也可以把大部分的記憶體回收回來
後起的Ruby、Python、PHP也也感覺不大會威脅到Java,畢竟他們都還不如Java全方位,可是不能否認的,他們在web application上打下了一片天地
Java成功的法則是?我認為歸功於良好的設計跟隨著時代演化的架構。
良好的設計使得程式設計師不用在面對多種的平台,如果移植過C++到不同的平台上,你就會發現你要花上很長的時間除錯跟維護相容性,更可能只要換個compiler,你就得應付到手忙腳亂,反觀java,幾乎只要拿個jar檔,就可以正確無誤的運作(web上一些設定檔還挺麻煩的,這倒是不得不唸一下)。在意外處理上面也是相當的良好,你很容易可以找到你的錯誤,至於C++,如果不一賴debugger,你就得依賴log跟printf,真的要抓出錯誤要額外花上很多時間。當然還有相當多的地方java設計的比C++好,這就不多說了
一個良好的設計,總有一天會"腐敗",因為人們不斷的進步,java另外成功的一點就是不斷使用一些新發明的觀念、架構,不斷的改進他本身的設計,例如java2引進了swing(重要的是他背後一堆的pattern,老實說有些pattern還真不好用XD),在java 5之後,真的是大幅度的改善,java 6更是有大進步;java 2雖然用了一堆pattern,可是在做國際化(i18n),真的是"吐血身亡",swing的些GUI跟事件也是相當難處理,可是可以看到在JSR-296引進之後,開始解決這個問題,一個全新的framwork可以做更好的開發跟國際化,程式設計師不用為了國際化花費太多的心力。以這些觀念看來,java不斷的在成長,可惜C++就成長的比較緩慢
當然在效能上面C/C++真的還是遠遠把java拋在後頭(不要跟我說啥文字處理多快又多快,沒啥意義),看看那繪圖軟體、科學計算軟體、商用資料庫,哪些骨子是用java寫的,因為他們對於資源的苛求、效能的要求,這些都是讓他們把維護性擺在比較後面的理由;再者C/C++才能接觸到比較硬體方面的開發,比方驅動程式等等,畢竟這是一種極度硬體平台相關的東西。
C/C++並不會完全被java取代,但是java將是可能被推上主流開發程式的語言之一;不過還有M$挾持著OS平台優勢的C#在一旁虎視眈眈,看來java還是要努力不懈才可以
沒有留言:
張貼留言