(轉貼) C++,C#,Java功能比較 (.NET) (C#) (C/C++)
轉貼自 http://www.iiiedu.org.tw/knowledge/knowledge20020828_2.htm
C#(C Sharp)是微軟(Microsoft)為.NET Framework量身訂做的程式語言,C#擁有C/C++的強大功能以及Visual Basic簡易使用的特性,是第一個元件導向(Component-oriented)的程式語言,和C++與Java一樣亦為物件導向(object-oriented)程式語言;雖然微軟聲稱其C#的語法95%幾乎與C++相同,但筆者以為C#的語法其實更像Java,由於微軟與昇陽一直以來視彼此為競爭對手,在微軟的原文書中對Java這個字隻字不提是可以理解的。
就程式語言的演進史來看,C++於1980年由貝爾實驗室的Bjarne Stroustrup發明,其次Java於1990年由昇陽Jame Gosling等人發明,C#則是於近兩年由微軟發明,一個程式語言要出線,一定要優於前面同質性的程式語言許多才成,像Jame Gosling等人若非對C/C++如此地熟悉,無法將Java改得如此精要簡單,Java雖非用以取代C/C++,但也走出自己的一片天空,同樣地微軟發明C#,是要和Java一爭長短的,要在Java陣營前殺出一條血路,不可能再走C++的舊路,參考敵方陣營的內含並加以改善之是必要的做法,故而C#會像Java便不足為奇了。更確切地說法,C#的語法其實是由C/C++、Visual Basic和Java四種語言融合而成。
以下是Microsoft C# product manager : Tony Goodhew和Sun Microsystems的Jame Gosling and Henry McGilton分別對C#和Java程式語言的描述,由此可以推知此語言的特性(筆者註:通常愈前面的形容詞愈代表這個語言的特性),值得注意的是,兩種語言皆以”simple”這個字做為最重要的特性。
C#:A simple, modern, object-oriented, type-safe, versionable, compatible, and flexible language
Java:A simple, object-oriented, distributed, interpreted, robust, secure, architecture, neutral, portable, high performance, multithreaded, and dynamic language
單從程式語言的演進來談C#的語法特質是像C++或是Java,或許有些武斷,讓我們以表列的方式來讓讀者自行評判之。
功能 |
C++ |
Java |
C# |
Platform Independence |
無 |
有 |
有 |
Garbage Collection |
無 |
有 |
有 |
Type Safety |
無 |
有 |
有 |
Scalability |
無 |
有 (透過package來實踐) |
有 (透過namespace來實踐) |
Pointer |
有 |
無 |
無 (但可透過unsafe來使用) |
Multiple Inheritance |
有 |
無 (透過interface來實踐) |
無 (透過interface來實踐) |
Macro |
有 |
無 |
無 |
Template |
有 |
無 |
無 |
Operator Overloading |
有 |
無 |
有 |
Structure |
有 |
無 |
有 |
Enumeration |
有 |
無 |
有 |
Exception Handling |
有 |
有 |
有 |