VB.NET真的像傳說一樣比較低端嗎,用它做開發相比其他語言有什麼缺點?
主要針對系統開發
Visual Basic.net還是C#
——如何選擇.net語言
在.net中,如何選擇VB或C#?這似乎已經爭論了很久。很多人盲目選擇,也產生了許多流言和錯誤。本文將從以下方面指導你選擇正確的開發語言。
功能上的考慮
許多人認為C#的功能比VB.net強大,或者C#更加適合.net等。其實這不是一兩句話能比較清楚的。C#的確有VB無法完成的功能,但VB也有C#無法完成的功能。總的來說,對於.net開發,VB和C#沒有任何差別,都100%兼容於CLS。下面列出的是他們語言功能上的不同,這些僅僅是語言實現上的問題,不會影響到生成的代碼。打*號的內容與CLS不兼容。
C#有而VB沒有的功能:
1、 運算符重載。*
2、 不安全代碼(指針和固定內存區)。*
3、 無符號整數。*
4、 移位運算。
VB有而C#沒有的功能
1、 即時編譯。
2、 靜態事件綁定。
3、 條件異常捕獲。
4、 COM兼容類。*
5、 寬鬆的類型檢查和變數聲明。
6、 Visual Basic Runtime庫。
7、 可選參數、帶參數屬性、模塊等語言特徵。*
8、 動態數組。*
可見,實際上功能更強大的是VB而不是C#。不過它們不一樣的地方多半是無關緊要的特徵。總體上來說,不應從功能上選擇VB或者C#,因為他們沒有什麼具體的差別。
性能上的考慮
性能是程序員最關心的問題。VB和C#都生成一樣的IL,因此理論上說不會有性能的差異。但許多人為什麼說C#的性能高於VB.net呢?這是因為VB.net支持即時編譯,就是一邊書寫代碼一邊編譯。這樣可立刻發現語法錯誤,使調試變得更加容易。但是這樣一來VB就需要隨時瀏覽整個代碼文件,並把臨時數據儲存。這造成VB.net生成的代碼中常常具有冗餘部分。但也不能就此下結論說VB比C#慢,當用戶選擇打開優化並且以Release方式編譯工程,就能得到與C#一樣簡短快速的代碼。
學習上的難度
這部分不僅僅初學者需要考慮,那些從現有開發工具轉移到.net的開發人員也需要考慮。首先,VB和C#都是非常簡單的,對於初學者來說,VB提供伸縮性更強的空間,因此比C#更加易於接受。但這只是相對而言,C#對於初學者來說也不會有太多的困難。
對於使用Visual Basic6或其他版本的程序員來說。VB.net的語法顯然要比C#更加接近VB6,網上流傳的VB與VB.net差別被過分誇大,使部分程序員退縮。其實VB.net增加的只是面向對象的思想,許多VB程序員不具備完善的面向對象編程開發經驗,因此覺得VB.net難以接受,這是很容易克服的。想想看,即使你要使用C#不也得學習面向對象嗎?至於有C/C++/Java經驗的人,C#是小菜一碟。剛才說過C#和VB實際上都很簡單,所以不見得VB程序員學習C#就要比C/C++程序員來的困難,反之亦然,有C/C++經驗的人也可以果斷的選擇VB。
移植現有代碼
這一部分是程序員最頭疼的部分。但對語言選擇有決定性的意義。
從VB6移植代碼的程序員,最佳選擇就是VB.net,因為其他.net語言沒有一種是與VB相似的。而且即使VB6的工程移植到VB.net非常困難,也有一個移植嚮導可以幫助你完成大部分工作。如果手工把他移植到C#,需要白白花費大量的時間。而且剛開始使用C#的VB程序員通常都會為C#缺少他們熟悉的函數而頭疼。VB.net不會出現這種情況。
從ASP移植到ASP.net,首選語言仍然是VB.net,因為多數程序員使用的ASP語言是VBScript,只有VB.net最大程度地接近這種語言。
C#對於移植代碼似乎沒有作用,了解C#的人都明白,把現有C/C++代碼放到C#中運行幾乎是100%不能通過的。所以,如果需要移植C/C++代碼,最好使用Visual C++.net。他做到了最好的新舊結合。C#僅僅用於編寫新的.net應用程序。
如果需要從Java移植代碼,C#可以選擇。同時還有J#及其他一些MS提供的轉換工具。
文檔和資源方面的考慮
在MSDN文檔中,C#和VB是同等看待的。所有文檔和例子都是有VB和C#兩份的。因此,在尋求資源方面都不用擔心。互聯網上的資源,C#要多於VB,特別是國內,有傾向於C#的潮流。但是ASP.net的資源VB較多。國內缺乏VB.net資源是影響VB.net推廣的重要原因。但是在國外有很多非常成熟的VB技術,如掌上設備的開發技術。
大牛們講了很多對比特性,舉我的例子來做下補充。
作為建築幕牆從業人員的我,用http://VB.NET寫了一個還算受大家歡迎的程序:
幕牆精靈。
整個程序總共約3.3萬行,雖略顯簡單,也沒用上http://VB.NET的高深的技術,但卻大大的提高了我們的工作效率。
使用Visual Studio2012開發,從2008跟到此版本,感覺有很多便利的特性,特別是自動更正錯誤的功能非常好用。
程序地址:http://www.rinro.com/wp-content/uploads/2016/06/curtain-wall-fairy-V1.0.zip
在此,感謝微軟!
聲明:沒使用過其他語言寫程序,所以不知道其他語言是不是真的很好。
把一樓換個格式
作者:孟小憂
鏈接:VB.NET真的像傳說一樣比較低端嗎,用它做開發相比其他語言有什麼缺點? - 孟小憂的回答來源:知乎著作權歸作者所有,轉載請聯繫作者獲得授權。Visual
http://Basic.net還是C#
——如何選擇.net語言
在.net中,如何選擇VB或C#?這似乎已經爭論了很久。很多人盲目選擇,也產生了許多流言和錯誤。本文將從以下方面指導你選擇正確的開發語言。
功能上的考慮 許多人認為C#的功能比http://VB.net強大,或者C#更加適合.net等。其實這不是一兩句話能比較清楚的。C#的確有VB無法完成的功能,但VB也有C#無法完成的功能。總的來說,對於.net開發,VB和C#沒有任何差別,都100%兼容於CLS。下面列出的是他們語言功能上的不同,這些僅僅是語言實現上的問題,不會影響到生成的代碼。打*號的內容與CLS不兼容。C#有而VB沒有的功能:
1、運算符重載。*
2、不安全代碼(指針和固定內存區)。*
3、無符號整數。*
4、移位運算。
VB有而C#沒有的功能
1、即時編譯。
2、靜態事件綁定。
3、條件異常捕獲。
4、COM兼容類。*
5、寬鬆的類型檢查和變數聲明。
6、Visual
Basic Runtime庫。7、可選參數、帶參數屬性、模塊等語言特徵。*
8、動態數組。* 可見,實際上功能更強大的是VB而不是C#。不過它們不一樣的地方多半是無關緊要的特徵。總體上來說,不應從功能上選擇VB或者C#,因為他們沒有什麼具體的差別。 性能上的考慮 性能是程序員最關心的問題。VB和C#都生成一樣的IL,因此理論上說不會有性能的差異。但許多人為什麼說C#的性能高於http://VB.net呢?這是因為http://VB.net支持即時編譯,就是一邊書寫代碼一邊編譯。這樣可立刻發現語法錯誤,使調試變得更加容易。但是這樣一來VB就需要隨時瀏覽整個代碼文件,並把臨時數據儲存。這造成http://VB.net生成的代碼中常常具有冗餘部分。但也不能就此下結論說VB比C#慢,當用戶選擇打開優化並且以Release方式編譯工程,就能得到與C#一樣簡短快速的代碼。 學習上的難度
這部分不僅僅初學者需要考慮,那些從現有開發工具轉移到.net的開發人員也需要考慮。首先,VB和C#都是非常簡單的,對於初學者來說,VB提供伸縮性更強的空間,因此比C#更加易於接受。但這只是相對而言,C#對於初學者來說也不會有太多的困難。
對於使用Visual Basic6或其他版本的程序員來說。http://VB.net的語法顯然要比C#更加接近VB6,網上流傳的VB與http://VB.net差別被過分誇大,使部分程序員退縮。其實http://VB.net增加的只是面向對象的思想,許多VB程序員不具備完善的面向對象編程開發經驗,因此覺得http://VB.net難以接受,這是很容易克服的。想想看,即使你要使用C#不也得學習面向對象嗎?至於有C/C++/Java經驗的人,C#是小菜一碟。剛才說過C#和VB實際上都很簡單,所以不見得VB程序員學習C#就要比C/C++程序員來的困難,反之亦然,有C/C++經驗的人也可以果斷的選擇VB。移植現有代碼
這一部分是程序員最頭疼的部分。但對語言選擇有決定性的意義。
從VB6移植代碼的程序員,最佳選擇就是http://VB.net,因為其他.net語言沒有一種是與VB相似的。而且即使VB6的工程移植到http://VB.net非常困難,也有一個移植嚮導可以幫助你完成大部分工作。如果手工把他移植到C#,需要白白花費大量的時間。而且剛開始使用C#的VB程序員通常都會為C#缺少他們熟悉的函數而頭疼。http://VB.net不會出現這種情況。
從ASP移植到http://ASP.net,首選語言仍然是http://VB.net,因為多數程序員使用的ASP語言是VBScript,只有http://VB.net最大程度地接近這種語言。C#對於移植代碼似乎沒有作用,了解C#的人都明白,把現有C/C++代碼放到C#中運行幾乎是100%不能通過的。所以,如果需要移植C/C++代碼,最好使用Visual C++.net。他做到了最好的新舊結合。C#僅僅用於編寫新的.net應用程序。如果需要從Java移植代碼,C#可以選擇。同時還有J#及其他一些MS提供的轉換工具。
文檔和資源方面的考慮
在MSDN文檔中,C#和VB是同等看待的。所有文檔和例子都是有VB和C#兩份的。因此,在尋求資源方面都不用擔心。互聯網上的資源,C#要多於VB,特別是國內,有傾向於C#的潮流。但是http://ASP.net的資源VB較多。國內缺乏http://VB.net資源是影響http://VB.net推廣的重要原因。但是在國外有很多非常成熟的VB技術,如掌上設備的開發技術。在功能上,兩個沒有太大區別,也都有彼此替換的功能,比較C#與http://VB.NET 應該重在比較語法就好了。
在語法上VB要起始要遠強於C#;
C#最驕傲的無非就是,代碼簡潔
可以多行代碼寫在一行裡面
但是這個是VB6時代都有的功能,而很C#人卻都不知道而已,例如:
Dim a, b As String : a = 1 : b = "abc"
最最另C#驕傲的是這個 :
string query = @"SELECT first, last
FROM table
WHERE id = 1";
這個其實最新VB是可以直接寫的:
Dim cmdText as String = "
SELECT
Field1, Field2, Field3
FROM table
WHERE Field1 = 1"
較老點的VB9增加的可以這樣寫:
Dim sourceText As String =
&
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections
Imports Microsoft.Win32
Imports System.Linq
Imports System.Text
Imports Roslyn.Compilers
Imports System.ComponentModel
Imports System.Runtime.CompilerServices
Imports Roslyn.Compilers.VisualBasic
Namespace HelloWorld
Module Program
Sub Main(args As String())
Console.WriteLine("Hello, World!")
End Sub
End Module
End Namespace
&
當然可以更厲害的是可以這樣寫:
Dim contact2 =
&
&
&<%= From p In phoneNumbers2
Select &
&
這些寫法足夠讓C#哭暈在廁所了,因為C#至今沒有上這個xml literal的功能。
至於其他C#無非就是嫌VB關鍵詞太長了。。。等等諸如此類,但其實再長的關鍵詞也不用VB全部用手敲寫出來,因為VB的VS對VB的自動完成程度要比C#高的多;
以上比較只是簡單說明一下問題:VB有很多好功能,但C#沒有,且用C#的根本不知道VB有。。。
當然另外一個重點就是題主提到的:
VB低端,幼稚?
這個偏見起始還是來源於VB6的之前的版本,因為當年C++,JAVA是高端的,VB,delphi 是低端的。為啥,因為VB太簡單好用了,以至於別人會說VB如同玩具一般;但到了VB7以後依舊如此,儘管VB與c#是那麼的一樣,但仍然是受到了嘲笑!起始我想問:有C#可以開發的但VB不能開發的應用嗎?如果開發一個同樣的應用VB比C#的開發效率更高更快這是優點還是缺點呢?當然C#會認為這個是缺點,為啥?因為VB太簡單了,以至於一個2年的VBer就可以很快的開發出來幾萬代碼的應用。
可以舉個例子來說一下,對於削鉛筆,C#er水果刀把鉛筆削的又圓又好看用了5分鐘,大家都誇C#技術好,厲害!但是VB用鉛筆刀來削鉛筆,用了不到1分鐘削完了,那別人會說VB真幼稚,乾的活3歲小孩都能做! 這就是現狀,別人覺得VB低端,不是因為有些功能他做不了,而是實現一些功能的太容易了,就如同JAVA陣營嘲笑C#只會拖控制項一樣。但是問題是拖控制項有錯嗎?如果你想高大尚你可以直接用代碼添加呀,甚至你可以不用VS,直接用記事本寫唄,然後再用VS編譯好了。
所以嘮嘮叨叨本質就是這些東西,根本不存在VB低端的問題。
事實上我們應該反思一下,我們要給客戶削鉛筆,是要用水果刀來削,還是用鉛筆刀來削?
(當然,用水果刀削的比鉛筆刀快的絕世高手除外)
不過可以告訴樓主的是,http://VB.NET 現在的編程語言排名已經十分靠前了,且有繼續攀升趨勢,這可以說明越來越多的人意識到http://VB.NET是個好東西。
http://VB.NET不低端而且很好用。VB和http://VB.NET不是同一個語言。很多人用過VB沒用過http://VB.NET,以前對VB的偏見導致認為http://VB.NET低端。
語言沒有高低之分,只有適用領域不同。我公司是海外的一家軟體公司,就使用http://vb.net,由於有.net framework的支撐,跟C#沒啥區別。
但缺點是找不來人,就如王垠所說,程序語言如宗教,剛畢業的學生都希望用一些流行的語言。其實語言背後的思想其實都一樣,用什麼語言也只是syntax的不同而已。http://VB.NET不是比較低端,而是被很多人(特別是在國內)認為比較低端。這可能跟它源於BASIC這一點有關,而BASIC確實比較低端。
關於缺點,其實http://VB.NET和C#這兩者本身是沒有多少優劣差異的,因為它們的區別基本上只是語法。但是,國內用http://VB.NET的人少,這可以算是一個劣勢,因為開發項目如果找不到足夠的人就麻煩了。
推薦閱讀:
※微軟現在提不提供不帶可視化界面,只有編譯鏈接程序和開發庫的,而且免費開發工具?
※Sublime text開發工具快捷鍵整理?
※你覺得最好的 php IDE 是哪個?
※iPhone 和 iPad 上有哪些足夠好用的代碼閱讀工具?
TAG:開發工具 | VisualBasic | 開發人員 | ASPNET開發 |