日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

C,C++,C#的点评

發(fā)布時(shí)間:2024/4/17 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C,C++,C#的点评 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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


總結(jié)目前各方對(duì)C++的批判,主要觀點(diǎn)如下:

1. 做系統(tǒng)底層編程(比如linux內(nèi)核、網(wǎng)易游戲引擎),C++和C相比沒(méi)有任何優(yōu)勢(shì)。因?yàn)榈讓泳幊滩恍枰狢++那么多的“面向?qū)ο蟪橄蟆?/p>

2. 做上層應(yīng)用編程(比如CRM、ERP等企業(yè)應(yīng)用),雖然需要“面向?qū)ο蟮某橄竽芰Α?#xff0c;但C++過(guò)多的語(yǔ)言機(jī)制導(dǎo)致C++語(yǔ)言陷阱太多(特別是稍不留神就有內(nèi)存泄漏),因此應(yīng)該選用提供垃圾收集機(jī)制的語(yǔ)言。(Linus沒(méi)說(shuō),但是基本指的是C#、Java幾個(gè)主流語(yǔ)言)。


雖然這種說(shuō)法有些太過(guò)絕對(duì),但是firelong認(rèn)為還是相當(dāng)有道理的。特別是第2點(diǎn),因?yàn)橐郧拔覀児揪陀幸粋€(gè)C++寫(xiě)得CRM項(xiàng)目,剛開(kāi)始老板還讓我們?cè)贑++上繼續(xù)改,改了將近半年,全體人員都決定放棄了,轉(zhuǎn)到現(xiàn)在的C#上。Linus這種觀點(diǎn)出來(lái)后,C#社區(qū)好像很受鼓舞,我甚至在某個(gè)論壇上看到一些C#程序員在歡呼C#萬(wàn)歲了。但是firelong的問(wèn)題是,C#語(yǔ)言真的完美了嗎?仔細(xì)思考這個(gè)問(wèn)題后,firelong認(rèn)為并非如此。事實(shí)上C#語(yǔ)言現(xiàn)在一路狂奔,有點(diǎn)重蹈當(dāng)年C++語(yǔ)言發(fā)展的覆轍。firelong將不成熟的思考寫(xiě)出來(lái),與大家共同討論。

?

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

?

但問(wèn)題是“新特性越多,語(yǔ)言就一定越強(qiáng)大嗎?”,我們真的需要那么多cool特性的編程語(yǔ)言C#嗎?

?C++語(yǔ)言走到今天的墻途末路,眾人踩踏的地步,跟C++語(yǔ)言過(guò)于臃腫的功能特性密切相關(guān)。 firelong這些年的編程經(jīng)驗(yàn)表明,語(yǔ)言新特性對(duì)語(yǔ)言并非一本萬(wàn)利,而是可能會(huì)帶來(lái)很多傷害:

1. 新特性加重了編譯器的編譯負(fù)擔(dān),編譯效率低下。大家試試很多l(xiāng)inq項(xiàng)目的編譯速度就知道了。

2. 新特性加重了運(yùn)行時(shí)的運(yùn)行負(fù)擔(dān),運(yùn)行效率低下,大家試試很多dynamic動(dòng)態(tài)新特性的運(yùn)行效率就知道了。

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

?

?有的朋友可能會(huì)說(shuō),那是firelong水平低,對(duì)這些新特性沒(méi)有掌握好,所以要批判C#新特性。首先f(wàn)irelong水平不一定低(帶一個(gè)10人的C#隊(duì)伍已經(jīng)近2年)。其次水平再高,也有心智負(fù)擔(dān)。看看Linux之父Linus Torvalds和網(wǎng)易的云風(fēng)等諸多國(guó)內(nèi)外大牛批判,他們可都是響當(dāng)當(dāng)?shù)腃++技術(shù)大牛,難道是對(duì)C++各種特性不熟練所以才批判C++?


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

1. 面向?qū)ο?/p>

2. 接口

3. 構(gòu)造器、字段、方法

4. 垃圾收集

5. 異常

6. 并發(fā)支持——這是firelong唯一投票支持的新特性,因?yàn)樗诮窈蟮捻?xiàng)目太常用了。

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

然后將研發(fā)精力投入C#語(yǔ)言的代碼優(yōu)化和內(nèi)存收集優(yōu)化上,讓C#成為一門(mén)效率超高的語(yǔ)言,比那些華而不實(shí)的新特性重要得多!
?

刪除C#以下功能:

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

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

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

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

5. JIT編譯(直接編譯成native代碼,完全沒(méi)必要JIT,微軟當(dāng)初JIT是因?yàn)槌兄Z跨平臺(tái),但是現(xiàn)在C#真的跨平臺(tái)了嗎?還是Windows上跑,Mono這種阿斗別提了。)

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

7. Linq(去掉,還是用Sql語(yǔ)句+存儲(chǔ)過(guò)程來(lái)的實(shí)際)

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

9. 還有更多。。。。大家來(lái)補(bǔ)充
?

firelong說(shuō)得不一定對(duì),但是firelong相信一個(gè)簡(jiǎn)潔、高效的語(yǔ)言,比那一堆華而不實(shí)的“新特性”要有用得多——語(yǔ)言最后的威力是“開(kāi)發(fā)軟件”,而不是“比拼新特性”。

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

?當(dāng)然微軟C#編譯器組不會(huì)聽(tīng)firelong的建議,但是如果這樣下去,C#幾年之后將比現(xiàn)在的C++更為臃腫,那時(shí)候批判C#的就不止firelong一個(gè)人了,恐怕也不僅僅是批判了。

轉(zhuǎn)載于:https://www.cnblogs.com/vvv999vz/archive/2011/01/22/2125367.html

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的C,C++,C#的点评的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。