2014年7月27日 星期日

C++ 和 C# 的差別???



個人目前使用認知

語法上 C++ 和 C#一樣

但是難度上差異很大,C++ 和 C#難度差異在於會不會動到很多物件導向

C#如同小記所說,好寫發展又快

因此面試時的時機測驗上,只會使用C++是最不吃香的,因為你會花更多力氣去寫程式
相對JAVA馬上就能看出C++缺點

開發過程中我分三段
1. 開發程式寫法 = 相同
2. 開發方法 = C# VB都能單純用拉的方式,快又有效率
3. compiler方式 = VC是最能攜帶,因為VB或V#都會遇上.net問題


引用1
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20070117022404R5C

我先講一講我個人的使用感想好了,但是我的答案並非絕對,只是純粹個人的使用觀點
若有高手還望高手不吝指正^^

.NET平台下的Visual C++ 與C#的差異與效能,我覺得要從很多角度切進來看
1.看寫程式的人功力如何,熟不熟悉.net物件,有沒有使用最節省效能的方式來撰寫,是不是有使用視窗程式
2.compirer時的效能、大概包括檢查程式碼錯誤及編譯時的速度
3.compirer後在非開發電腦上(指在其他的,net電腦上)的執行效能

就1的角度來看,我真的覺得程式沒有好壞之分,主要是差在開發工具的便利性與否,和寫的人有沒有考慮到效能最佳化,熟不熟悉開發工具提供的物件,坦白說我覺得c++語法比較難,一定有人用vb的寫法在寫c#,可是用vb的寫法寫c++就很難了(什麼?真的有人這樣寫,那當做我沒說這句話好了)。

我主要的意思是說,會c++的人你不能不會繼承、多型、動態記憶體配置、樣版、類別,如果不會,你不能說你會寫c++,但是寫c#的人也許只會用類別就夠了,像我也是寫了快2年,才被Allen老大提示一些物件導向的觀念,慢慢地體會繼承的好處,進而對物件導向的觀念感到興趣,語法的差異性來看,個人認為c++難多了,c#就算開發的人不懂物件導向觀念,還是一樣可以很開心的藉由拖拉來開發,可是c++要是拖拉了之後,你看不懂裡面的指標語法和繼承多型...應該會很想哭吧。

說c#和c++效能哪個好,主要還是跟寫的人有關係,是不是要把程式日後維護改修的方便性這點考慮進去、有沒有使用最佳化效能的方式在開發、和開發時有沒有將不必要的資源做釋放。

還有,大家應該也都明白,寫程式不光是寫就好,也許一直開發web的人就從來沒機會碰過socket的東西,也許一直開發winform的人從來就沒機會碰過webform的東西(我就聽過資管系畢業的人,寫了2年多程式,老闆指派他webform的工作,他說他不熟,聽到那個人這麼說我還當場有點傻眼),玩gis的人就不一定懂進銷存系統,各行各業那麼多,各種專精的領域也有其專門的.net物件可使用,沒有人可以全部都懂,1個寫socket數年的高手你叫他來寫gis的東西,因為不熟悉mapObject物件,也未必能比1個寫gis,1年經驗的人寫的好,所以真的還是看人、看寫什麼。

從2的角度來看,在.net平台下(假設開發的東西都一樣,寫的人功力也都一樣深厚,1個寫c#1個寫c++,也一樣用效能最佳化的方式開發),我覺得這時候跟硬體設備有關,好吧,再假設硬體設備都一樣好了,不知道大家有沒有發現,每一次安裝出來的OS系統,效能都不太一樣(這我有測過,滿有趣的),其實在.net平台下來看,就算有差,一般人也感覺不出來差別吧,但是你不能1台電腦開著vc++開著msn又開著netsacape還開著outlook再加上Dreamwaver、photoshop,然後跟另1台只純粹開c#開發做比較,編譯時你就說c#效能比較好,開發時的環境執行工作的數量也會影響cpu運算的結果,我想在相同條件下,這2個開發時編譯的速度是感覺不出來的吧

再來看3的角度,雖然在另一台非開發的電腦上,執行的是編譯過的檔案,可是個人覺得如果不是以視窗介面(例如以console程式)來做比較的話(假設所有條件都相同),我認為從c++語法上來看,c++比較接近機械語言,應該是c++的效能比c#好,不過這純粹是我個人觀點,也許有人不以為然,雖然我寫了快2年的c#居然還支持c++~哈

有沒有人要說說自己的心得感想呢....希望我的發文能拋磚引玉~~~

====

引用2
http://www.programmer-club.com.tw/ShowSameTitleN/csharp/1425.html
2004/1/16 上午 11:59:19
1. 基本上,這兩種語言除了都是以 C 開頭,沒有太多一樣的地方。C# 轉到 VB.Net 幾乎可以一行一行轉,C++ 就差別太多了。
2. 低階不宜用 C#,還是用 C++ 較為適當。應用系統的發展,以 C# 較為適宜,發展也較快。

2004/1/17 下午 09:41:26
我想說一下我的看法, 解解癮頭^^

1. C++是一種概稱, 是C語言加上物件的觀念, C#則是一個完全物件導向的語言, 我們或許可以這樣說, 一個以C為主體架構, 而且包含有物件的觀念, 可以說是C++的一種, VC是, C#是, BCB也可以是, 但通常我們說C++, 都代表是DOS下的C++或是VC

2. C#必須在.Net Framework平台上執行, 並透過.Net Framework提供的大量簡易使用的函式庫來達到快速的發展應用程式的目的. C#不適合低階應用, 因為用到了unmange code就不太好管理, 也破壞了.Net 跨平台的優點 (雖然目前只跨win平台)

所以我想, C#也算是C++的一種, 只不過C#更為高階, 一些記憶體配置或是記憶體回收等等這些麻煩又複雜的低階工作都由C#幫你完成, C# programmer只需專注於.Net函式庫的應用和程式開發. 如果需要, C#可以很方便的引用VC的DLL和VB的COM, 而且C#具有強大的物件功能, 包羅萬象的.Net函式庫, 數量精簡的關鍵字, 不錯的程式語言架構, 和JAVA類似的語法, 以及如同VB一般的方便使用, 我想C#會蠻受歡迎的吧~

所以囉~ 要快速的發展程式又要速度快和方便使用, C#是不二人選(VB.NET也很好,但是C#這個.Net原生語言更適合), 如果是追求程式藝術, 講究執行速度和硬體驅動控制, VC還是第一把交椅, 如果懶的專研程式, 不想管什麼物件理論, 而又想快速的建立視窗程式, VB會讓你最快的上手, 而如果你考慮到完全的跨平台, 選擇JAVA就對了, 而最後, 如果你單純的想要學學程式語言, 學學程式流程和資料結構等等基礎功, DOS下的C++是最好的入門選擇

我認為, 其實程式語言都大同小異, 只要你精通程式語言的原理和觀念,所使用的作業系統的架構以及電腦的架構, 那麼, VC,C#,VB,Java,Perl,BCB,甚至於組合語言, 對你而言, 也只不過是語法不同, 引用的函式名稱不同..等等 罷了
2004/2/7 下午 01:05:37
市面上的有關C#或是.NET的書籍很多唷~ 以下是我目前身邊看得到的書,
1.剛入門, 看C# Primer Plus (還有一本類似的...忘記書名, 也是很有名的), 這本從基礎談起, 沒有太多著墨在GUI,以及一些相關的class上, 很適合初學C#語言者入門之用
2.用C#談.NET平台(GOTOP), 不同於C# Prime Plus的以Console為主的教學, 這一本書以Windows Form為主體, 探討如何用.NET快速的開發出視窗程式
3..NET Framework 程式設計 (Microsoft Press), 和上一本蠻像的, 只是講的更深更細一些, 有點像是第二本加上第一本, 對.NET平台有比較深入的介紹
4.21天學會C#, 這本最好不要看...有點浪費錢的感覺...@@"
5.C#網路程式設計, 教你如何用C#設計網路程式, 當做參考書籍用即可, 需要時翻一翻
6..NET本質論首部曲CLR, 專門探討.NET平台和CLR的, 這一本我覺得就蠻精深的了, 要看很多遍才會有心得
7.專業ADO.NET程式設計, 買來學ADO.NET的, 內容還不錯, 重點是"打五折"!!!

以上這些書主要都是以C#為講解語言, 除了第四本, 其餘我都覺得還不錯~
我認為, 電腦參考書籍買多沒關係, 總有一天會用的到的 (但是不要買一些騙錢的商業書)
最近都很少逛書店了, 不知道有沒有什麼好的新書上市, 知道的大大請推薦一下吧^^


以上

沒有留言:

張貼留言