首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 面授課程 模擬考試 實(shí)用文檔 繽紛校園 英語學(xué)習(xí)
2010考研 | 自學(xué)考試 | 成人高考 | 專 升 本 | 法律碩士 | MBA/MPA | 中 科 院
四六級 | 商務(wù)英語 | 公共英語 | 職稱日語 | 職稱英語 | 博思 | 口譯筆譯 | GRE GMAT | 日語 | 托福
雅思 | 專四專八 | 新概念 | 自考英語 | 零起點(diǎn)英、、韓語 | 在職申碩英語
在職攻碩英語 | 成人英語三級
等級考試 | 水平考試 | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 報(bào)檢員 | 外銷員 | 司法考試 | 導(dǎo)游考試 | 教師資格 | 國際商務(wù)師 | 跟單員
單證員 | 物流師 | 價(jià)格鑒證師 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 人力資源管理師 | 管理咨詢師
期貨從業(yè)資格 | 社會工作者
會計(jì)職稱 | 注會CPA | 經(jīng)濟(jì)師 | 統(tǒng)計(jì)師 | 注冊稅務(wù)師 | 評估師 | 精算師 | 高會 | ACCA | 審計(jì)師
法律顧問 | 會計(jì)證
建造師一級、二級) | 造價(jià)師 | 監(jiān)理師 | 安全師 | 咨詢師 | 結(jié)構(gòu)師 | 建筑師 | 安全評價(jià)師
估價(jià)師房地產(chǎn)估價(jià)、土地估價(jià)) | 設(shè)備監(jiān)理師 | 巖土工程師 | 質(zhì)量資格 | 房地產(chǎn)經(jīng)紀(jì)人 | 造價(jià)員
投資項(xiàng)目管理 | 土地代理人 | 環(huán)保師 | 環(huán)境影響評價(jià) | 物業(yè)管理師 | 城市規(guī)劃師 | 公路監(jiān)理師
公路造價(jià)工程師 | 招標(biāo)師
執(zhí)業(yè)護(hù)士 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 衛(wèi)生資格
 admin 
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 心得技巧 > 正文

程序員的痛苦:先學(xué)VB.NET還是C#?

   在過去的一年中,互聯(lián)網(wǎng)上的各大討論區(qū)或者電子郵件的討論列表都對微軟的VB.NET以及C#的各種優(yōu)越性做了探討。這些討論圍繞的主要問題就是,我應(yīng)該先學(xué)哪一個(gè),VB.NET還是C#?

  我寫這篇文章的目的就是想幫您解決這個(gè)問題。我并不是想動搖你傾向哪一種語言而是想解決一些大家在基本問題上的疑惑,以便大家能夠作出自己的決定,選擇一種自己覺得用起來最舒適的語言。我將盡量避免討論一些語法上的模棱兩可的話,就像“C#的括弧太多了,”“VB.NET句子太冗長,”或者“我討厭C#(或者VB.NET)因?yàn)樗埽ɑ蛘卟荒埽﹨^(qū)分大小寫!敝惖脑。評論語法的好壞是你個(gè)人品味的問題。相反,我將著重討論一些我見到的關(guān)于這兩種語言的技術(shù)方面的討論。

  在C#方面

  作為微軟公司最新的一種語言,并且由于它又是Java語言的小翻版,C#引起了廣大的關(guān)注。

  人們看上去喜歡一種語言僅僅取決于它是最新的,程序開發(fā)者們總是喜歡用最新的工具工作。其它的一些選擇使用C#的理由更為具體一些。

  領(lǐng)導(dǎo)潮流的東西總是無懈可擊的

  “如果我正準(zhǔn)備學(xué)一門新的語言,我還是應(yīng)該學(xué)C#!边@也許也是你經(jīng)常聽到的言論。那些推理總是這樣進(jìn)行的:“VB6轉(zhuǎn)變到VB.NET變化已經(jīng)非常大了,以至于它基本上就是一門是新的語言。如果我無論如何打算學(xué)習(xí)新語言,我想還是學(xué)C#吧,因?yàn)樗翘貏e為.NET類的庫設(shè)計(jì)的!

這也是我聽到過的關(guān)于這兩方面的最蒼白的爭論。你也可以同樣理直氣壯的說,如果我無論如何打算學(xué)習(xí)新語言,我想還是學(xué)VB.NET吧,畢竟它也是一門新的語言。另外,讓我們想想為什么VB.NET從其先驅(qū)者那里如此激烈地演變到現(xiàn)在的樣子:它為了適應(yīng).NET類的庫而被重新設(shè)計(jì)了。

  對比管理過的和沒有管理過的代碼

  “C#允許我寫那些運(yùn)行在CLS存儲器控制之外的非管理代碼,我可以直接訪問存儲器,并且使用指針。讓代碼自由地運(yùn)行,包括使用存儲器的管理,可以得到更高的效益!边@個(gè)觀點(diǎn)有3個(gè)問題需要考慮:首先,我們不應(yīng)該在Beta版本的開發(fā)環(huán)境下討論性能問題。舉個(gè)例子:在.NET的Beta1和Beta2版本之間有顯著的管理代碼運(yùn)行速度的改善。第二,我們還不能把非管理代碼比管理代碼能獲取多少利益量化,并且是否值得為了這些好處冒險(xiǎn)。可以去看看Eric Gunnerson在MSDN上的這篇文章。第三,盡管VB.NET不能建立非管理代碼,它能通過System.Runtime.InteropServices 名字空間的使用,來訪問并工作于非管理存儲器。

  C#有內(nèi)置的XML文件編制器

  “C#編譯器包括直接被嵌入成為源代碼的XML文件編制器在內(nèi)。如果我使用C#,我同時(shí)編寫了代碼并編制了文件!笔褂眠^JavaDoc的人都知道,把你的文件編制加到你的源代碼中是多么的有用。源代碼和文件編制可以同時(shí)更新,因此至少在理論上講,你的文檔永遠(yuǎn)都不會過時(shí)。不過,以我的經(jīng)驗(yàn)來看,相對少數(shù)的Java開發(fā)者還是在使用JavaDoc。這樣,問題就變成“你將使用它嗎?”如果你的對這問題的解答是“是”,你有足夠的理由試試C#。

  關(guān)于VB.NET又怎么樣呢?

  在很多真正的開發(fā)者看來,VB像玩具語言似的,從某種角度看,也確實(shí)是這樣的。迄今為止,VB遠(yuǎn)比我們所知道的那兩三個(gè)弱點(diǎn)更多。不過VB.NET確實(shí)是和C#同樣強(qiáng)大的.NET開發(fā)語言。有些人說它更強(qiáng)大。

  VB.NET有內(nèi)置的(插入特點(diǎn))支持;而C#沒有。

  “VB.NET內(nèi)置了很多東西像字符串操作(Mid, InStr, 等等)和類型轉(zhuǎn)換(例如CInt)。C#缺乏這些內(nèi)置的支持,所以,我所需要的東西,在C#中很難找到。

  如果你抓住這些你應(yīng)該Mid 或者 CInt功能不放,而最終認(rèn)為這就是VB.NET強(qiáng)于C#的證據(jù),你最好去看看Microsoft.VisualBasic namespace。你將在那里發(fā)現(xiàn)大部分VB.NET內(nèi)部命令和應(yīng)用功能。這些功能在namespace中被保存之后,任何CLS兼容的語言都能使用他們,就像列表A中所顯示的那樣。這些例子削弱了我們的爭論,不是嗎?

更好捆綁的支持就是不支持

  “VB.NET與COM實(shí)體的捆綁支持更好一些!蔽乙仓皇强吹搅艘稽c(diǎn)點(diǎn)而已,并且我決定再也不在支持方面作任何推理。從我迄今為止所觀察到的,這不是真的。C#和VB.NET必須采用runtime callable的包裝以及等量的源代碼來執(zhí)行一個(gè)早期的實(shí)體。同樣地,執(zhí)行一個(gè)晚期的實(shí)體也需要相同數(shù)量的代碼。

  B.NET使用IDE中的后臺編譯

  如果你不能找到其他的認(rèn)為VB的開發(fā)環(huán)境好的例子,你至少不得不承認(rèn)它的源代碼編輯是很有特點(diǎn)的。你能一邊打字一邊字面上排除你的代碼的錯(cuò)誤。麻煩就是那些很弱智的編譯錯(cuò)誤信息框總是彈出來,并且如果你把你的喇叭聲音開得過大的話,報(bào)錯(cuò)的嘀嘀聲也許會嚇到你。

  Visual Studio.NET避免了這種驚嚇,直到你修改完成,并且處理了一些消極的錯(cuò)誤,提示系統(tǒng)經(jīng)過了微軟的改進(jìn):他會在那些錯(cuò)誤語句的下面打上彎彎曲曲的下劃線。

  VB.NET背景編譯程序/句法檢驗(yàn)器非常復(fù)雜,而且很客氣地指出你的錯(cuò)誤。從某些方面看,它能更準(zhǔn)確地告訴你如何修改你源代碼中的錯(cuò)誤。當(dāng)C#有它自己的語法檢查器,并且可以查出括弧的匹配,計(jì)算圓括弧的多少,顯示丟失的分號,但是它還是不能像VB.NET那樣使用簡單。再繼續(xù)討論這兩種語言的優(yōu)越性確實(shí)會讓我心煩的,不過微軟的話確實(shí)是一個(gè)真理,那就是所有的.NET語言都是平等建立的。那些主張C#優(yōu)于VB.NET的人(反之亦然)和那些攀比工資的開發(fā)者們一樣錯(cuò)了。

  我要強(qiáng)調(diào)的是,那些有遠(yuǎn)見的技術(shù)公司不再會去尋找具有某種開發(fā)語言經(jīng)驗(yàn)的程序員,而是去尋找那些有.NET類庫開發(fā)經(jīng)驗(yàn)的程序員。因此我勸你不要過分的擔(dān)心自己的選擇到底是什么:隨便找一個(gè)你覺得有興趣學(xué)的語言,認(rèn)真地學(xué)好他的框架結(jié)構(gòu)就行了。

  如果你最終認(rèn)為我是錯(cuò)的,并且市場也不要求你一定要選擇一種語言,那你就盡管嘲笑我吧。(完)

轉(zhuǎn)帖于:軟件水平考試_考試吧
文章搜索
程序員的痛苦:先學(xué)VB.NET還是C#?網(wǎng)友評論網(wǎng)友評論
版權(quán)聲明 --------------------------------------------------------------------------------------
    如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。