多媒體和網路時代中,C++,Delphi,Java,還是C#? (轉)

worldblog發表於2007-12-12
多媒體和網路時代中,C++,Delphi,Java,還是C#? (轉)[@more@] 

多和時代中,C++,,,還是C#?

在應用領域,C/C++不算高階語言,對和員才算。雖然C++首腦任務堅稱C++的地位不會有太大變化,但和Java的對抗很可能最終將其踢出主賽局。

在多媒體、遊戲等領域,據gamedev.net的資料,此領域以C++為主流。PS2,XBox等純遊戲機上只有C/C++可用,幾乎所有的大遊戲公司用C++,但近兩年有一些採用其他語言的嘗試。總的來說,大部分是C++,有一些是用的Delphi,一小部分是VB,很少的Java。從很久之前起,個人和小團體開發用VB的就較多,基本上都是不喜歡C/C++的人,現在因為考慮移植能力而轉向Delphi和Java,當然也有轉用C++的。最近由於新技術出現較多,基於C++的支援庫變得更為複雜,於是出現很多對於Java替代C++的可行性的討論,有比較可靠的說法是在較好的下配合最新的JIT,可以達到同等C++程式速度的1/4,圖形密集程式在使用OpenGL生介面時與同等C++程式速度差不多,但Java3D介面很慢。現在有在力推.NET平臺,C++在此沒有什麼優勢,可能對今後的局勢有較大的影響。

Pascal前途難料,蘋果出了基於Free核心的MacX,這回是徹底的C/C++系統了,CodeWarrior放棄了Pascal的開發,主推C++、ive-C、Java,只剩下Pascal社群和民間的編譯器在撐腰吶喊。Borland的OP倒是火得很,可惜Pascal沒有嚴格標準,沒有其他編譯器能很好的相容Borland的OP。

網路,當前商家的淘金之地,繼之爭之後,微軟又被Sun的Java搶了先,不得不和與他一樣的behemoth搶奪地盤。C++默默地築造著網路的基礎。

C++:在傳統領域,如演算法研究、資料計算、各種底層系統,幾乎就是C/C++的天下,尤其在類機器上。由於資源非常集中,以致很難不選擇C++。C++有統一的標準,各種硬體平臺都有它的編譯器。有幾年歷史的大公司的也大多是基於C++的,大量的程式設計庫資源也是基於C/C++的。理論上,C++能做任何事情。C++有強大的型別定義能力,如無所不包的模型、算符過載、模版、宏,可以對自己做擴充和定義;另一方面,也導致C++異常複雜、難維護,且編譯速度很慢。因此也有很多人把C++當成更好的C用,不用C++中的複雜功能,這在遊戲程式設計中很常見,因為他們更願意把大部分精力放在實現感興趣的功能而不是程式碼上。而興趣在程式上的人則偏愛竭盡語言的能力,寫出各種高明的程式碼,很可能是非常難懂的程式碼,但非常高效好用,例如C++標準模版庫。在新興領域,C++的處境就比較艱難,沒有統一的高層工具庫,而且工作量很大,而且是不必要又不得不的大。而且C++背後的權威人物Bjarne Stroustrup(就是在C++中加入dynamic_case“這種醜陋語法”的人,用他自己的話說:P)拒絕改進C++語言,只推動改進C++庫。所以C++的地位基本穩定的固定,既不會消亡,也不會擴大。其他評價:級人物必用,不適合教學用途。

Delphi:確切的說是Object Pascal。簡單直觀而又強大是最直接的理由。不需要去花多少心思考慮語言實現,想什麼寫什麼,而又不失C++的高效,甚至某些部分速度快過C++,如部分字串操作和讀寫緩衝等,編譯速度狂快(由語言特性決定)。包含大量好的新語言特性,擁有既簡潔又強大的執行庫和物件庫,直接整合COM、、網路、,支援、,並即將支援.NET平臺。在Delphi社群,對Delphi的支援是近乎狂熱的,成員們拿出自己最得意的來共享,如果你是新手,又想成為高手,Delphi是最佳選擇。但你來自C++背景,你會對begin..end、不能隨處宣告變數、沒有++運算子等感到反感;如果你喜歡複雜的程式碼且很熟悉STL並大量使用,你會因Delphi沒有模版而失望。Delphi提供了大部分的系統介面,但也有很多欠缺,Delphi社群提供了大量的API介面或封裝,如(Delphi不需要匯入庫和靜態庫,百兆的C/C++SDK的Delphi版只有幾兆:P)、OpenGL1.2的介面和封裝,但一般會有幾種不同的版本,質量好壞不一,當然也未必比Borland提供的差,事實上Borland也用社群提供的原始碼。只有Borland一家做OP的編譯器,沒有業內標準,沒有其他選擇,雖有可部分相容OP的FreePascal,可沒有了Delphi的庫的編譯器的吸引力就少了大半。由於Delphi剛興起沒幾年,使用它的公司還不多,組織倒有不少。如果你將找工作,一定弄清你要工作的領域是否多用Delphi,如資料庫領域就是。其他評價:節省你一大筆時間,可以給你充分的機會改進你的程式或出去玩;)。

Java:由C++簡化而來。Sun對Java語言的設計上的確有很大創新,當年博得一致的喝采。語言並不必須複雜才能強大,就像在微軟還是英雄的年代Bill Gates說他能用Basic做到C能做到的任何事情。Java也正是如此。由虛擬機器執行Java程式,不依賴於平臺,這是給程式設計師的一大福音。尤其對於網際網路,Java是具有天生的資質。但由於Sun的一些失誤,也使Java有了些不好的名聲和導致Java沒有達到預期的前景。一是Sun的虛擬機器速度太慢且不好的垃圾收集演算法導致寶貴的資源極度浪費,除非空閒實體記憶體大於程式所需全部記憶體,否則系統就會嚴重受垃圾收集的影響,這個弊病遭到強烈的抨擊。現在的虛擬機器技術要比以前強了不少,我個人覺得其他廠商提供的Java虛擬機器都比Sun的好。二是糟糕的類庫。Sun對PC的瞭解遠不如對他們的高階和工作站,設計的類庫也是濃烈的Sun的味道,而且各部分風格不一,似乎是很多缺少交流的人寫出的。熟悉PC程式設計的人會覺得極為羅索冗長且怪異低效,以致出現很多其他替代類庫(微軟就做了兩套)。這個問題到1.2版出臺時才有些改善。三是Sun拒將Java交給標準局,做虛擬機器需Sun授權。因此,Java現在集中在電子商務領域,由於其跨平臺能力,其地位基本上是不可替代的。其他評價:網路應用必學。

新品種的C++,被稱作C++--。可以說迎合了大部分C++程式設計師的願望,即保持C++的強大又做了適度的簡化,同時加入了時髦的語言特性,基於.NET平臺,簡單的說,太棒了。但是等等,C#並不完美,如果你是C++程式設計師,你未必完全喜歡它。而且由於C#是新東西,還沒有多少資源可用。總之,這裡還是未開墾的土地,雖然很有吸引力,但你必須對是否踏進這片土地非常謹慎。如果你是決心跟著微軟走的,而且已有程式設計,那麼可以放心地拿起C#。其他評價:將來很可能是Java的勁敵,微軟的主要開發工具。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991671/,如需轉載,請註明出處,否則將追究法律責任。

相關文章