C#和Java骨子里是兩種不同的語言
51CTO最近給大家貢獻(xiàn)了幾篇很有爭議文章,很多朋友對(duì)“青春期的Java不會(huì)衰亡”以及“微軟最鋒利的刀C# 4”各執(zhí)一詞。51CTO專家Xhinker特意對(duì)此發(fā)布博文,全文如下:
我相信有很多人認(rèn)為學(xué)會(huì)了Java,同時(shí)也學(xué)會(huì)了C#,或者認(rèn)為學(xué)了Java,C#幾小時(shí)內(nèi)就會(huì)了。但現(xiàn)實(shí)的情況是,熱愛Java的人用了C#的人可能會(huì)覺得渾身不舒服,熱愛C#的人也不是很喜歡Java.
Java的設(shè)計(jì)者是因?yàn)橛憛扖++的復(fù)雜,于是Java非常簡潔,GC也讓內(nèi)存管理非常方便,C#是看中了Java的GC,和虛擬機(jī)技術(shù),希望把微軟的幾大語言集成到.NET上來。因此C#從語言上來講并不簡單甚至可以算的上復(fù)雜。
兩種語言的設(shè)計(jì)思路也不一樣,Java是編譯解釋語言,C#是編譯然后編譯運(yùn)行語言。Java沒有委托,C#有委托。Java傾向于用Interface實(shí)現(xiàn)委托的功能,而在C#中,Abstract Class比Interface發(fā)揮了更大功能。
Java遵循camal命名規(guī)則,C#遵循Pascal命名規(guī)則。但是如今越來越多的Java人開始使用C#,同時(shí)也把camal命名規(guī)則帶到了C#,這可能會(huì)讓C#代碼越來越難讀。為什么當(dāng)初C#為什么不遵循camal呢?我看不出camal命名規(guī)則有什么不好的。
帶著Java投奔C#的人,和帶C#投奔Java的人,不要帶著成見去批評(píng)。
使用C#的人最好能總結(jié)出自己的一套使用子集,比如拋棄out和ref關(guān)鍵字,永遠(yuǎn)不使用structs.不使用事件event所有event的相關(guān)功能用delegate實(shí)現(xiàn)。你要是不喜歡delegate那就統(tǒng)統(tǒng)拋棄,用interface,像java一樣。盡量少用interface,多用Abstract Class.然后讓整個(gè)team的人遵循相同標(biāo)準(zhǔn)。c#太大,如果每個(gè)人用自己的一套習(xí)慣,會(huì)給將來帶來無窮的麻煩。
C#是為生產(chǎn)效率而設(shè)計(jì),Java一半是為Geek設(shè)計(jì)。
C#和Java在各自領(lǐng)域發(fā)揮作用,在不遠(yuǎn)的將來,誰都不會(huì)取代誰。
要真正理解計(jì)算機(jī)編程,還是從C學(xué)起比較好。
本文出自“Xhinker”博客,請(qǐng)務(wù)必保留此出處http://xhinker.blog.51cto.com/640011/380601
【編輯推薦】
- C# 4何以成為微軟鋒利的刀——動(dòng)態(tài)編程語言
- 5個(gè)你不知道的Java性能監(jiān)控小技巧
- 有憑有據(jù) C語言真的比Java快?
- 衰亡? 15歲的Java才到青春期
- 淺談Java最終勝出的8大技術(shù)優(yōu)勢(shì)