多媒體和網絡時代中,C++,Delphi,Java,還是C#?

在應用領域,C/C++不算高級語言,對硬件和系統程序員才算。雖然C++首腦任務堅稱C++的地位不會有太大變化,但.NET和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前途難料,蘋果出了基于FreeBSD核心的MacOS X,這回是徹底的C/C++系統了,CodeWarrior放棄了Pascal編譯器的開發,主推C++、Objective-C、Java,只剩下Pascal社區和民間的編譯器在撐腰呐喊。Borland的OP倒是火得很,可惜Pascal沒有嚴格標准,沒有其他編譯器能很好的兼容Borland的OP。

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

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

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

Java:由C++簡化而來。Sun對Java語言的設計上的確有很大創新,當年博得一致的喝采。

多媒體和網絡時代中,C++,Delphi,Java,還是C#?
多媒體和網絡時代中,C++,Delphi,Java,還是C#?在應用領域,C/C++不算高級語言,對硬件和系統程序員才算。雖然C++首腦任務堅稱C++的地位不會有太大變化,但.NET和Java的對抗很可能最終將其踢出主賽局。在多媒體、...查看完整版>>多媒體和網絡時代中,C++,Delphi,Java,還是C#?
 
Delphi中實現C++/Java類似靜態變量的功能
在網上看到很多人都在爲Delphi是否支持C++/Java中的靜態變量及靜態方法的功能而困擾,其實這在Delphi中是很簡單的.靜態方法就是使用Class Function. 靜態變量則使用單元局部變量來實現. 代碼如下://=================...查看完整版>>Delphi中實現C++/Java類似靜態變量的功能
 
Delphi中實現C++/Java類似靜態變量的功能
在網上看到很多人都在爲Delphi是否支持C++/Java中的靜態變量及靜態方法的功能而困擾,其實這在Delphi中是很簡單的.靜態方法就是使用Class Function. 靜態變量則使用單元局部變量來實現. 代碼如下://=================...查看完整版>>Delphi中實現C++/Java類似靜態變量的功能
 
回複:delphi的接口的意義是不是跟C++和Java的不同呢?
delphi的接口的意義是不是跟C++和Java的不同,怎麽我這樣不行的呢: IInterface1 = interfaceend;IInterface2 = interface(IInterface1) procedure method();end;TClass1 = class(TInterfacedObject, IInterface2)....查看完整版>>回複:delphi的接口的意義是不是跟C++和Java的不同呢?
 
delphi編程實現圖像的淡入淺出-C/C++
下面是關鍵代碼,需要引用的單元,自己添加上去就可以~function IntToByte(i:Integer): Byte;begin if i 255 then Result := 255 else if i else Result := i;end;procedure Lightness1(var clip: tbitmap; Amo...查看完整版>>delphi編程實現圖像的淡入淺出-C/C++
 
C++ 和 Delphi 的函數覆蓋(Override)與重載(overload
C++ 和 Delphi 的函數覆蓋(Override)與重載(overload)Spacesoft【暗夜狂沙】在面向對象編程中,當子類繼續了來自基類的函數後,子類有可能需要對其中的一些函數作出與基類不同處理,比如:class CHuman{public: v...查看完整版>>C++ 和 Delphi 的函數覆蓋(Override)與重載(overload
 
一個C++程序員的Delphi學習筆記
一個C++程序員的Delphi學習筆記 一個C++程序員的Delphi學習筆記 一個C++程序員的Delphi學習筆記 說心裏話,站在一個C++程序員的立場,是有那麽一點看不上用Delphi的開發者的。就幾周前,我還撰文維護過C++的...查看完整版>>一個C++程序員的Delphi學習筆記
 
Delphi和C++的語法區別
目錄 一、Delphi永遠沒辦法在棧上創建一個對象下面是一段常見的的Delphi代碼,在過程的開頭聲明本過程所需要的全部局部變量:procedure Foo;var obj: TObject; //這句容易被C++程序員誤會。...查看完整版>>Delphi和C++的語法區別
 
用Delphi的思想初步構建C++的ADO對象
用Delphi的思想初步構建C++的ADO對象 其實名字起的太大了,哈哈,大家有沒有在寫數據庫的時候老是需要try,catch,覺得很麻煩呢?我可受不了啊。但是沒怎麽寫下去,一是對VC的ADO不了解,二是沒時間。我把寫的一些代碼...查看完整版>>用Delphi的思想初步構建C++的ADO對象
 
 
回到王朝網路移動版首頁