以下是三種語言的特性分析:
功能
|
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
|
有
|
有
|
有
|
其實我以前也是學C++起來的,C++的強大其實這是大部分的程式員都認同的,它是C語言的演化,所以有了類似物件導向的概念。但是語言是透過時代的演進下而慢慢的產生了新技術,所以進而誕生了Java這樣的物件導向程式語言。C#就是在這樣的概念下又產生了一個相似的兄弟語言。創造C#的Anders Hejlsberg目的也是希望能比Java好還要更好的使用技術(但是不是就見仁見智了)。
我們先來討論C++,C++是一種概稱, 是C語言加上物件的觀念,基本上(基本上啦~), 我個人的經驗是覺得,如果要真的懂如何去學習程式這門技術,一定要懂怎麼寫C/C++,或者ASM這兩個最接近電腦語言的程式語言。因為比較能夠真正的去了解到電腦的運作方式,如何寫才會有最好的效能,懂的演算法的呈現。之後再去學習C#這類的高階語言時,會非常容易了解如何的運用。我覺得C/C++、ASM就像是古代武學的內功一樣,通常我覺得會C/C++、ASM的人通常比較少人上手其它語言時會很困難。
C#理論上也算是C++的一種演化, 只不過C#更為高階, 一些記憶體配置或是記憶體回收等等這些麻煩又複雜的低階工作都由C#幫你完成, C# programmer只需專注於.Net函式庫的應用和程式開發. C#可以很容易引用VC的DLL和VB的COM, C#具有強大的物件功能, 豐富的.Net Library, 數量精簡的關鍵字, 優良的程式語言架構, 和JAVA類似的語法, 以及如同VB一般的方便使用。
簡單的說,就是諸如像是C#這類的語言,都已經把以前程式員會遇到的問題,都幫你排除,你只要稍微寫一點程式,就可以有很大的效果。當然啦,如果是追求程式藝術, 講究執行速度和硬體驅動控制, C/C++、ASM還是第一把交椅,可以參考使用微軟的Visaul C++。C#必須在.Net Framework平台上執行, 並透過.Net Framework提供的大量簡易使用的函式庫來達到快速的發展應用程式的目的. C#不適合低階應用, 因為用到了unmange code就不太好管理, 也破壞了.Net 跨平台的優點。
Java基本上能運用的層面也是很廣,它除了效能上是比較不適合寫低階的控制上,其它你能想的到的技術,它大部分都能實現,發展的十分成熟,程式的結構本身也不難學習,但Java其實是一個不太容易上手的技術,它的難不是難在程式的寫作上,而是在環境的設定,很多人常常光在設定架構上,就望之卻步了,我曾經也遇到新手的程式員,會寫Java程式,但是面對一個他未曾從頭開始建置的專案時.他常常會搞不懂怎麼讓Java裡的程式運行起來。
通常我們也很常用Java來寫Server端的應用,或者Web Client的應用,App應用程式,或者Mobile系統,這是Java目前在市場上常看到的應用方式。最有名的就是大家目前最熟悉的「Android」、「當個創世神」啦
如果你考慮到完全的跨平台, 可以選擇JAVA (其實現在微軟也慢慢往真正的跨平台方向邁進), 如果你單純的想要學學程式語言, 學學程式流程和資料結構等等基礎功, DOS下的C++是最好的入門選擇。C#是微軟幫開發者能想到很麻煩的事情,都幫你處理掉了,所以想要快速製作網站,可以考慮C#。
最後我必須要說,任何一門技術都可以玩的很厲害,端看自已投入學習多少喔。
-雲遊山水為知已逍遙一生而忘齡- 電腦神手
沒有留言:
張貼留言