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