發展歷史
1991年,微軟公司推出了Visual Basic 1.0版。這在當時引起了很大的轟動。這個連接編程語言和用戶界面的進步被稱為Tripod(有些時候叫做Ruby),最初的設計是由阿蘭·庫珀(Alan Cooper)完成的。許多專家把VB的出現當做是軟件開發史上的壹個具有劃時代意義的事件。其實,以我們現在的目光來看,VB1.0的功能實在是太弱了;(不過最近VB6.0, VB.NET的功能相當大!)。但在當時,它是第壹個“可視”的編程軟件。這使得程序員欣喜之極,都嘗試在VB的平臺上進行軟件創作。微軟也不失時機地在四年內接連推出VB2.0,VB3.0,4.0三個版本。並且從VB3開始,微軟將ACCESS的數據庫驅動集成到了VB中,這使得VB的數據庫編程能力大大提高。從VB4開始,VB也引入了面向對象的程序設計思想。VB功能強大,學習簡單。而且,VB還引入了“控件”的概念,使得大量已經編好的VB程序可以被我們直接拿來使用。VB1.0的DOS版本VB1.0於1991年發布。這個連接編程語言和用戶界面的進步被稱為Tripod(有些時候叫做Ruby),最初的設計是由阿蘭·庫珀(Alan Cooper)完成的
2002年Visual Basic .NET 2002 (v7.0)問世,2003年Visual Basic .NET 2003 (v7.1)問世,2005年11月7日Visual Basic 2005 (v8.0)問世,同時間推出Visual Basic 2005的免費簡化版本Visual Basic 2005 Express Edition給Visual Basic初學者及學生使用。
VB 2005的“顯著”優點是,可以直接編寫出XP風格的按鈕,以及其他的控件。但是其編寫的小程序占用近10MB的內存。
通過幾年的發展,它已成為壹種專業化的開發語言和環境。用戶可用Visual Basic快速創建Windows程序,現在還可以編寫企業水平的客戶端/服務器程序及強大的數據庫應用程序。
VB會吸引更多的贊譽和批評,也會繼續為廣大的用戶和程序員使用。它非常適合用來開發擁有友好界面的程序(比如針對終端的數據),但是不適合開發其它程序(比如聯合計算程序)。
語言特性
壹個典型的VB進程VB的中心思想就是要便於程序員使用,無論是新手或者專家。VB使用了可以簡單建立應用程序的GUI系統,但是又可以開發相當復雜的程序。VB的程序是壹種基於窗體的可視化組件安排的聯合,並且增加代碼來指定組建的屬性和方法。因為默認的屬性和方法已經有壹部分定義在了組件內,所以程序員不用寫多少代碼就可以完成壹個簡單的程序。過去的版本裏面VB程序的性能問題壹直被放在了桌面上,但是隨著計算機速度的飛速增加,關於性能的爭論已經越來越少。
窗體控件的增加和改變可以用拖放技術實現。壹個排列滿控件的工具箱用來顯示可用控件(比如文本框或者按鈕]]。每個控件都有自己的屬性和事件。默認的屬性值會在控件創建的時候提供,但是程序員也可以進行更改。很多的屬性值可以在運行時候隨著用戶的動作和修改進行改動,這樣就形成了壹個動態的程序。舉個例子來說:窗體的大小改變事件中加入了可以改變控件位置的代碼,在運行時候每當用戶更改窗口大小,控件也會隨之改變位置。在文本框中的文字改變事件中加入相應的代碼,程序就能夠在文字輸入的時候自動翻譯或者阻止某些字符的輸入。
VB的程序可以包含壹個或多個窗體,或者是壹個主窗體和多個子窗體,類似於操作系統的樣子。有很少功能的對話框窗口(比如沒有最大化和最小化按鈕的窗體)可以用來提供彈出功能。
VB的組件既可以擁有用戶界面,也可以沒有。這樣壹來服務器端程序就可以處理增加的模塊。
VB使用參數計算的方法來進行垃圾收集,這個方法中包含有大量的對象,提供基本的面向對象支持。因為越來越多組建的出現,程序員可以選用自己需要的擴展庫。和有些語言不壹樣,VB對大小寫不敏感,但是能自動轉換關鍵詞到標準的大小寫狀態,以及強制使得符號表入口的實體的變量名稱遵循書寫規則。默認情況下字符串的比較是對大小寫敏感的,但是可以關閉這個功能。
VB使得大量的外界控件有了自己的生存空間。大量的第三方控件針對VB提供。VB也提供了建立、使用和重用這些控件的方法,但是由於語言問題,從壹個應用程序創建另外壹個並不簡單。
術語
在討論Visual Basic時,經常可以聽到以下這些術語,因此對這些術語的基本理解十分有幫助。
控件——簡單的說,控件就是構成或者說建造Visual Basic應用程序的圖形化工具,包括窗體、按鈕、復選框、列表框、數據控件、表格控件和圖片控件等等...。
事件——由用戶或操作系統引發的動作。事件的示例有擊鍵、單擊鼠標(Click)、雙擊鼠標(DblClick)、壹段時間的限制,或從端口接收數據。
方法——嵌入在對象定義中的程序代碼,它定義對象怎樣處理信息並響應某事件。例如,數據庫對象有打開紀錄集並從壹個記錄移動到另壹個記錄的方法程序的基本元素,它含有定義其特征的屬性,定義其任務和識別它可以響應的事件的方法。控件和窗體是Visual Basic中所有對象的示例。
對象——壹個控件、窗體等都可被看作壹個對象。
過程——為完成某些特定的任務而編寫的代碼段,過程通常用於響應特定的事件,也可以當作應用程序的用戶自定義函數來使用。
屬性——屬性是組成用戶界面的各對象的性質的具體描述。例如上述“對象”中所提到的尺寸、位置、顏色、寬度、高度等等都稱為控件的 屬性。屬性決定對象的外觀,有時也決定對象的行為。對象的屬性絕大部分是VB中已經事先定義好的,但也有的屬性是需要在應用 過程中才去定義的。屬性即可為對象提供數據,也能從對象取回信息。
VB的局限性
繼承。VB5和VB6都是面向對象的編程語言,但是不包含繼承特性。VB中提供了特殊的類的功能,但是還是不能滿足程序員的需求。VB.net 包含了所有面向對象的特性。
多線程支持 (VB.Net 2002以及之後的版本,都支持多線程技術。)
異常處理。VB.net中使用了Try-Catch-Finally來處理異常。而VB中只有"On Error Goto line"語句。
對指針的支持非常有限。
VB只能支持8到32位的整形,很多語言都有無限制的支持。
VB不允許在任何數組內存在不變的變量。
VB不支持以上特性,程序員需要自己建構方法來實現相似的功能。
爭議
反對觀點:
VB是壹種充滿了爭議的語言:很多程序員對VB程序的質量有強烈的感受。很多人認為VB不配他們使用,認為它是壹種給兒童和菜鳥程序員的語言。它自從設計開始就是壹種簡單的語言。壹些C++和Java中的特性在VB中並沒有出現。在感受開發的方便和快速的同時,壹些類似於編譯時進行類型和聲明檢查的功能在默認情況下是關閉的。這樣壹些程序員壹邊感嘆VB的易用性,壹般沮喪地地看著壹些類似於“未定義類型”錯誤的發生。
壹些批評家認為VB的簡單特性使得其在未來具有傷害性。很多人自學了VB,但是並沒有學到好的編程習慣。當VB進入課堂的時候,學生們不會學到很多基礎的程序技術和結構,因為很多技術已經包含在那些對用戶可見的組件裏面了。不用學習標準的編程習慣,因為VB具有可視化的特性,所以導致了壹些莫名其妙的代碼的產生。而且很多錯誤和警告的檢查默認情況下都是關閉的,程序員很難找到隱藏的錯誤。有經驗的程序員在用VB編程的時候都會把這些選項打開。
很多批評家批評微軟簡單地拷貝了BASIC的思想到VB中。著名的計算機科學家Edsger Dijkstra說過壹句名言:“如果壹個學生最早學過BASIC,那麽幾乎不可能讓他學會優秀的編程:因為這些人已經放棄了涅磐的希望。”(Dijkstra對待Fortran、PL/1、COBOL和APL同樣也毫不留情。)
另外壹個笑話是:“真正的程序員不用BASIC。12歲以下的孩子才用。”
並不是非常簡便,它開發的程序只能運行在Microsoft Windows中。
個頭太大了。Visual Studio要用好幾張盤才能裝下。VB程序在運行時候還需要壹個1.4M大小的運行庫。
IDE中有錯誤。
VB不能很好的綜合Windows的基礎API,很多時候要使用低級運算的“小伎倆”來進行編程。而C語言的低級內存運算比VB的要簡單得多。