直播中
導(dǎo) 讀:每個組織遷移到.NET將選擇采用哪種.NET語言。微軟提供了四種語言:C#, VB.NET, 可管理的C++和 JScript。本文簡要的討論了我們關(guān)于這些語言和哪種語言將被使用的看法。
--------------------------------------------------------------------------------
翻譯整理:51dotnet.com(高飛家族)
原文出處:http://www.dotnetdan.com/articles/misc/LanguageChoice.htm
每個組織遷移到.NET將選擇采用哪種.NET語言。微軟提供了四種語言:C#, VB.NET, 可管理的C++和 JScript。本文簡要的討論了我們關(guān)于這些語言和哪種語言將被使用的看法。
簡而言之,我們相信C#將占據(jù)主要的市場份額;JScript是沒有競爭力的;C++將被忽視,VB.NET顯現(xiàn)出對市場的準(zhǔn)備不足。
失敗者
JScript
我們希望JScript在很少用戶的基礎(chǔ)上結(jié)束它的使命?,F(xiàn)在很少有關(guān)于這方面的資料而且在.NET論壇中也不大有關(guān)于JScript的內(nèi)容。它已經(jīng)不是主流了。不要在把錢投到這項技術(shù)上,放棄它才是最明智的。
可管理的C++
C++,即使它新的可管理的形式也將漸漸的被忽視。當(dāng)越來越多的開發(fā)者趨向于語法清晰的語言,例如JScript, Java, VB.NET和C#, 使用C++ 的圈子越來越小。另一個C++ 面臨的問題是他不能作為一種教學(xué)語言。無疑,盡管如此,有經(jīng)驗的C++開發(fā)者將繼續(xù)使用它的能力,模板,多重代碼的繼承性和決定性的最終確定。其余的人都能輕松的應(yīng)付。
勝利者們
在這里確切的說應(yīng)該是勝利者。因為我們相信C# 是唯一的真正的勝利者。VB.NET處在尚無人支持的境地。
C#具有相當(dāng)?shù)膬?yōu)勢
大多數(shù)專業(yè)的軟件開發(fā)者,即使獨立開發(fā)微軟平臺,如今也將采用一些Java語言中的形式。
Java相對于C++和VB6較有利。他去處了許多C++ 中的語法特性而沒有絲毫降低它的功能(因此C++的開發(fā)者轉(zhuǎn)向使用Java是非常容易的)。它在支持面向?qū)ο蟮墓ぞ叻矫嬉獌?yōu)于VB6。
Java以其清晰的面向?qū)ο蟮恼Z法結(jié)構(gòu)和巨大的類庫在大多數(shù)主流的具有生產(chǎn)性的語言中占據(jù)了最高地位。正是由于這個原因,許多擅長面向?qū)ο蠹夹g(shù)的C++ 和 VB 開發(fā)者開始向Java轉(zhuǎn)移。
C# 為那些原本不支持微軟的人轉(zhuǎn)向使用微軟的開發(fā)工具提供了依據(jù)。實際上它和Java是一致的,只不過在它們的不同之處,C# 更顯示出了它無可厚非的優(yōu)越性。此外,它是一種ECMA標(biāo)準(zhǔn)的語言,因此它提供了跨越多平臺的潛在能力。
嚴(yán)肅的講,開發(fā)者想要微軟的最有生產(chǎn)能力和主流的.NET語言,C# 是最明智的選擇。
VB.NET孤立無助
還剩下VB.NET。我們?nèi)耘f對微軟為什么僅僅使VB.NET成為一個更復(fù)雜的C# 而提出疑問。也許這兩門語言的歷史背景是知道這個轉(zhuǎn)變的關(guān)鍵,但是我們要討論的是技術(shù)方面的問題而不是市場的問題。
無疑,VB.NET已經(jīng)成長到一個新的階段。它現(xiàn)在已經(jīng)成為了面向?qū)ο缶銟凡恐锌焖俪砷L的一員。但是現(xiàn)在誰關(guān)心它呢?也許是一群對其不滿的人和非面向?qū)ο蟮某绦騿T,但他們將立刻得到它。隨著C#的產(chǎn)生,VB.NET看上去更象是個過時的產(chǎn)品,而不是改進(jìn)。
DecHand代碼生成器能在VB.NET或C#中生成代碼。如果你選擇VB.NET選項,你會得到一個文件,它和C#實現(xiàn)同樣功能,但卻要比C#生成的文件大33% 左右。讀某人用VB.NET編寫的的代碼時,冗長的語句會帶來很多麻煩。當(dāng)我們把這和前面所提到的原因結(jié)合起來時,我們只能希望有經(jīng)驗的面向?qū)ο蟮拈_發(fā)者應(yīng)該喜歡C# 勝過VB.NET。
那么什么樣的市場會丟掉VB.NET呢? 目前的市場卻使軟件公司僅使用VB來作為開發(fā)工具,并造就了一大批VB愛好者.不幸的是,說實在話VB.NET并不是為這些人所開發(fā)的。
從VB6移植
只用VB編寫程序的工作間可能正期望從VB6更新到VB.NET,而且能象現(xiàn)有的VB升級一樣容易。不幸的是,他們可能會遭到嚴(yán)酷的打擊。盡管已經(jīng)有一種工具可以自動完成操作過程,但升級到VB.NET仍然會累人的多。
正如我們上面提到的,VB.NET是一種面向?qū)ο蟮恼Z言,而VB6不是。問題在于,如果你不按照面向?qū)ο蟮姆绞剿伎?,而許多機構(gòu)也正是這樣做的,你就無法體會到VB.NET轉(zhuǎn)換經(jīng)歷的樂趣。因為這不僅僅是一個結(jié)構(gòu),而是一種范例的轉(zhuǎn)變,而這種轉(zhuǎn)變是很昂貴的。很多組織可能會覺得如果他們想改變思維方式,他們不如改變語言。如果VB.NET被很快淘汰掉,也沒什么可驚訝的。
過去曾經(jīng)輝煌而如今孤寂的愛好者
最終的市場分割造就了愛好者。對他們而言,VB6是一種可選擇的語言。它提供了簡單而功能強大的工具來構(gòu)建簡單的應(yīng)用程序包括GUIs。
VB.NET不是這么簡單的。正像我們前面說過的那樣,它是一種功能強大的面向?qū)ο蟮恼Z言。但對于一般的愛好者來說,他們不想也不需要了解‘-isms’和面向?qū)ο箢I(lǐng)域中的抽象事務(wù)。他們只想把一項任務(wù)盡快完成,而忽略我們某些專業(yè)人士所要求的精細(xì)之處。
為此,過不了不久這些VB愛好者可能不會再繼續(xù)使用VB6,或者他們對其不再報有太大的希望了。
VB.NET的未來
上述注解僅僅是公開發(fā)布的.NET BETA版信息的一小部分。當(dāng)我們看到最終的.NET的產(chǎn)品距離現(xiàn)在還有相當(dāng)一段長時間,微軟會采用它們當(dāng)中的一些去生產(chǎn)隱藏著VB.NET復(fù)雜性的Visual Studio.NET特性的產(chǎn)品。我們只能翹首以待。我們對此不能做什么,只能相信他們能作到,為了發(fā)展,讓我們給微軟以傳統(tǒng)的愛護(hù),這樣他們就會更加努力的去做。
關(guān)于運行時間的執(zhí)行
如果你看到這里與你所想的相差甚遠(yuǎn),你可能會問“性能怎樣?”,當(dāng)你在決定用哪一種語言來更快的完成一項產(chǎn)品時,這是每一個人所自然而然所要問的。
毫無疑問.NET完全排除了那些標(biāo)準(zhǔn)。
為了去理解為什么.NET 語言運行會一樣快(或慢),我們需要去看一下編譯程序,或正好是兩個階段的編譯程序。
第一階段發(fā)生在你用Visual Studio按Ctrl-Shift-B鍵時。在這一點上,執(zhí)行一個編譯,你的語言編譯器正在創(chuàng)建中間語言(IL)。第二階段發(fā)生在你運行了應(yīng)用程序時。第二階段有時被看作是JIT編譯(我們會覺得奇怪,但是我們不能解釋)。它為特別使用CPU而使用了IL和產(chǎn)生本土代碼。
微軟對第一階段編譯的IL而產(chǎn)生的代碼并不樂觀。相反,他們開始擴展他們所有的能力去優(yōu)選第二階段IL---本土代碼編譯。他們這樣做是為了使語言的不可知的原因。所有的.NET語言在運行時間的執(zhí)行上是一樣的。
關(guān)于調(diào)試和編譯者的支持
Visual Studio.NET提供了同樣復(fù)雜的調(diào)試和編譯者使用所有語言的工具。當(dāng)在Managed C++譯碼時你不會看到更細(xì)節(jié)的東西,例如,與其他的語言相比。你可以達(dá)到你所希望達(dá)到的深度。同樣,自動完成的方法也適用于其他語言。
總結(jié)
如果你想找到更安全的辦法,那就使用C#。我們肯定現(xiàn)在VB.NET的功能如此強大,而且C#更是如此,選擇它你不會后悔的,因為我們已經(jīng)向你清晰地描述了它的生產(chǎn)性能。