日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C,C++,C#的点评

發布時間:2024/4/17 C# 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C,C++,C#的点评 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近,Linux之父Linus Torvalds在事隔三年之后,又一次炮轟C++語言(見http://www.realworldtech.com/forums/index.cfm?action=detail&id=110563&threadid=110549&roomid=2 )。在國外技術社區掀起新一波的批判C++語言的狂潮。國內技術社區也不甘清凈,csdn在這里(http://news.csdn.net/a/20100612/218785.html)也有非常熱烈的討論。國內C++的大牛網易的云風也加入論戰(http://blog.codingnow.com/2009/01/the_new_c_standard.html)。


總結目前各方對C++的批判,主要觀點如下:

1. 做系統底層編程(比如linux內核、網易游戲引擎),C++和C相比沒有任何優勢。因為底層編程不需要C++那么多的“面向對象抽象”

2. 做上層應用編程(比如CRM、ERP等企業應用),雖然需要“面向對象的抽象能力”,但C++過多的語言機制導致C++語言陷阱太多(特別是稍不留神就有內存泄漏),因此應該選用提供垃圾收集機制的語言。(Linus沒說,但是基本指的是C#、Java幾個主流語言)。


雖然這種說法有些太過絕對,但是firelong認為還是相當有道理的。特別是第2點,因為以前我們公司就有一個C++寫得CRM項目,剛開始老板還讓我們在C++上繼續改,改了將近半年,全體人員都決定放棄了,轉到現在的C#上。Linus這種觀點出來后,C#社區好像很受鼓舞,我甚至在某個論壇上看到一些C#程序員在歡呼C#萬歲了。但是firelong的問題是,C#語言真的完美了嗎?仔細思考這個問題后,firelong認為并非如此。事實上C#語言現在一路狂奔,有點重蹈當年C++語言發展的覆轍。firelong將不成熟的思考寫出來,與大家共同討論。

?

firelong認為C#目前可能重蹈C++語言覆轍。微軟從2002年C# 1.0開始,到2010年8年時間推到C# 4.0,平均每2年一個新版本。其中屬于重大的語言特性有:泛型、Lambda表達式與linq、dynamic動態特性、并發編程。除了重大語言特性外,還有很多很多技巧語法。微軟這樣一路狂奔,只要是想出來的cool點子,都往C#語言里面加。 很多程序員也很追求cool的效果,瞧瞧看,我們C#語言又有XXXXXXXXX功能,你們Java、Python? XXXXX有嗎?

?

但問題是“新特性越多,語言就一定越強大嗎?”,我們真的需要那么多cool特性的編程語言C#嗎?

?C++語言走到今天的墻途末路,眾人踩踏的地步,跟C++語言過于臃腫的功能特性密切相關。 firelong這些年的編程經驗表明,語言新特性對語言并非一本萬利,而是可能會帶來很多傷害:

1. 新特性加重了編譯器的編譯負擔,編譯效率低下。大家試試很多linq項目的編譯速度就知道了。

2. 新特性加重了運行時的運行負擔,運行效率低下,大家試試很多dynamic動態新特性的運行效率就知道了。

3. 新特性加重了程序員的心智負擔,在寫代碼時必須考慮很多功能背后的影響,“顧前思后”就是C++程序員最后拋棄C++的一個很大的原因。大家回想一下現在在VS2010底下寫C# 4.0程序,還有當初寫C# 1.0程序的流暢性了嗎??

?

?有的朋友可能會說,那是firelong水平低,對這些新特性沒有掌握好,所以要批判C#新特性。首先firelong水平不一定低(帶一個10人的C#隊伍已經近2年)。其次水平再高,也有心智負擔。看看Linux之父Linus Torvalds和網易的云風等諸多國內外大牛批判,他們可都是響當當的C++技術大牛,難道是對C++各種特性不熟練所以才批判C++?


綜上所述,firelong對微軟C#編譯器組有以下建議:
保留C#以下功能:

1. 面向對象

2. 接口

3. 構造器、字段、方法

4. 垃圾收集

5. 異常

6. 并發支持——這是firelong唯一投票支持的新特性,因為它在今后的項目太常用了。

7. 和其他語言的互操作(類似P/Invoke)——那些不適合C#做的,用其他語言來做,然后與C#互操作。
?

然后將研發精力投入C#語言的代碼優化和內存收集優化上,讓C#成為一門效率超高的語言,比那些華而不實的新特性重要得多!
?

刪除C#以下功能:

1. 委托和事件(這些都可以用接口來做,參考Java)

2. 反射(反射用處很小,如果真想用反射,請用其他語言)

3. 特性(也可以用接口做,C++沒有特性不是一樣活得很好)

4. 屬性、索引器、析構器(都是方法)

5. JIT編譯(直接編譯成native代碼,完全沒必要JIT,微軟當初JIT是因為承諾跨平臺,但是現在C#真的跨平臺了嗎?還是Windows上跑,Mono這種阿斗別提了。)

6. 泛型(沒必要,用的很少)

7. Linq(去掉,還是用Sql語句+存儲過程來的實際)

8. dynamic(去掉,真想dynamic,讓ruby、python, f#等去做吧)

9. 還有更多。。。。大家來補充
?

firelong說得不一定對,但是firelong相信一個簡潔、高效的語言,比那一堆華而不實的“新特性”要有用得多——語言最后的威力是“開發軟件”,而不是“比拼新特性”。

為什么C語言至今仍是編程語言的王者?它滿足了簡潔、高效!而不是它有很多新特性。如果C#不這么做,將會有其他語言埋葬C#。就像C慢慢埋葬C++,Ruby慢慢埋葬Java一樣。

?當然微軟C#編譯器組不會聽firelong的建議,但是如果這樣下去,C#幾年之后將比現在的C++更為臃腫,那時候批判C#的就不止firelong一個人了,恐怕也不僅僅是批判了。

轉載于:https://www.cnblogs.com/vvv999vz/archive/2011/01/22/2125367.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的C,C++,C#的点评的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。