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