本頁使用了標題或全文手工轉換

Visual Basic

維基百科,自由的百科全書
跳至導覽 跳至搜尋
Visual Basic
Visual Basic 6.0 logo.png
編程範型物件導向事件驅動
實作者微軟
面市時間1991年,​29年前​(1991
穩定版本
6.0
( 1998年,​22年前​(1998
型態系統靜態強型別
作業系統Microsoft Windows and MS-DOS
網站http://msdn.microsoft.com/zh-cn/vstudio/hh388573
主要實作產品
Microsoft Visual Studio
啟發語言
BASIC
影響語言
Visual Basic .NET, Gambas, REALbasicBasic4ppc英語Basic4ppc
Visual Basic 6 IDE

Visual BasicVB)是由微軟公司開發的包含環境事件驅動程式語言。它源自於BASIC程式語言。VB擁有圖形化使用者介面GUI)和快速應用程式開發RAD)系統,可以輕易的使用DAORDOADO連接資料庫,或者輕鬆的建立ActiveX控制項。程式設計師可以輕鬆地使用VB提供的組件快速建立一個應用程式


2020年3月11日宣布微軟不會再開發VB或增加功能。(Going forward, we do not plan to evolve Visual Basic as a language)

發展史[編輯]

.NET Framework引入之前[編輯]

VB 1[編輯]

VB1.0的DOS版本

1991年4月,Visual Basic 1.0 for Windows版本發布。1992年9月,Visual Basic 1.0 for DOS版本發布。這個連接程式語言和使用者介面的進步被稱為Tripod(有些時候叫做Ruby),最初的設計是由阿蘭·庫珀(英語:Alan Cooper)完成的。這在當時引起了很大的轟動。許多專家把VB的出現當做是軟體開發史上的一個具有劃時代意義的事件。以現在的眼光來看,VB1.0版的功能其實非常的弱,但它在推出當時可是第一個「可視」的編程軟體。這使得程式設計師欣喜之極,都嘗試在VB的平台上進行軟體創作。

VB 2[編輯]

1992年11月,VB2.0發布。它對於上一個版本的介面和速度都有所改善。

VB 3[編輯]

1993年夏天,VB3.0發布,分為標準版和專業版。其中包含一個資料引擎,可以直接讀取Access資料庫。這使得VB的資料庫編程能力大大提高。

VB 4[編輯]

1995年8月,VB4.0發布了32位元版本和16位元的版本。其中包含了對類別的支援。從VB4開始,逐步引入了物件導向的程式設計思想。VB功能強大,學習簡單。而且,VB還引入了「控制項」的概念,使得大量已經編好的VB程式可以被我們直接拿來使用。

Visual Basic 1.0~4.0都必須將原始碼編譯成VB虛擬碼後解釋執行。

VB 5[編輯]

1997年2月,VB5.0發布。程式設計師可以用32位元的版本匯入由4.0版本建立的16位元程式,並且能順利編譯。同時還包含了對用戶自建控制項的支援。自從Visual Basic 5.0以後,VB支援編譯成本機代碼,但必須在VB執行庫的支援下工作。

VB 6[編輯]

1998年夏天,VB6.0發布。VB6是VB.NET至今仍無法完全取代的版本。

.NET Framework引入之後[編輯]

VB.NET (VB7)[編輯]

2001年,Visual Basic .NET.NET Framework發布。由於其使用了新的核心和特性,所以很多VB的程式設計師都要覆寫程式。

2002年Visual Basic .NET 2002(v7.0)問世,此後Visual Basic包含在Visual Studio套裝中。

2003年Visual Basic .NET 2003(v7.1)推出。

VB 8[編輯]

2004年,微軟開放了Visual Studio.NET 2005的測試版本(代號Whidbey)。包含了.NET Framework2.0的測試版本。2005年11月7日Visual Basic 2005(v8.0)發布,同時為初學者與學生提供Visual Basic 2005的免費簡化版本Express Edition。原定免費使用期限一年,之後微軟宣布Express版本永久免費。微軟在其軟體名稱中去掉了.NET部分。Visual Basic 2005的「顯著」優點是,可以直接編寫出Windows XP風格的控制項;但是其編寫的小程式就需要近10MB的記憶體。

VB 9[編輯]

2008年2月1日Visual Basic 2008(v9.0)發布。

通過幾年的發展,它已成為一種專業化的開發語言和環境。用戶可用Visual Basic快速建立Windows程式,現在還可以編寫企業水平的客戶/伺服器程式及強大的資料庫應用程式

VB 10[編輯]

Visual Basic 10.0按計劃於2010年3月22日隨Visual Studio 2010一起正式發布[1]

新加入的功能:

  • 自動實現屬性
  • 集合初始化
  • 不需要在代碼斷行書寫時輸入底線「_」
  • 更好的lambda表達式支援
  • 更好地與PythonRuby動態語言的互通操作

Visual Basic .NET 2002(7.0)及以後的版本執行在.NET Framework環境下。

2012年Visual Basic 2012(VB 11.0)[編輯]

2013年Visual Basic 2013(VB 12.0)[編輯]

2015年Visual Basic 2015(VB 14.0)[編輯]

Visual Basic 2015(VB 14.0)於2015年7月20日發布。

由VB衍生的語言[編輯]

微軟開發了一系列有關VB的手稿語言:

  • VBScriptASP的預設語言,還可以用在Windows指令碼編寫(Shell Script)和網頁編碼(HTML)中。儘管它的語法類別似於VB,但是它卻是一種完全不同的語言。VBS不使用VB執行庫執行,而是由Windows指令碼宿主(wscript.exe - Microsoft Windows Based Script Host)解釋執行。這兩種語言之中的不同點影響ASP網站的表現。

當微軟準備開發一種新的編程工具的時候,第一決定就是利用最搶手的VB6來進行修改,或者就是重新組建工程開發新工具。微軟後來開發了VB的繼任者Visual Basic .NET,同時也是.NET平台的一部分。VB.NET程式語言是一種真正的物件導向程式語言(VB4-VB6祇能稱為基於物件而不是物件導向,最明顯的特徵就是VB4-VB6都不支援類別的繼承),和傳統Visual Basic並不完全相容。

語言特性[編輯]

VB6的IDE畫面

VB的中心思想就是要便於程式設計師使用,無論是新手或者專家。VB使用了可以簡單建立應用程式的GUI系統,但是又可以開發相當複雜的程式。VB的程式是一種基於表單的視覺化組件安排的聯合,並且增加代碼來指定組建的屬性和方法。因為預設的屬性和方法已經有一部分定義在了組件內,所以程式設計師不用寫多少代碼就可以完成一個簡單的程式。過去的版本裡面VB程式的效能問題一直被放在檯面上討論,但是隨著電腦速度的飛速增加,關於效能的爭論已經越來越少。

表單控制項的增加和改變可以用拖放技術實現。一個排列滿控制項的工具箱用來顯示可用控制項(比如文字方塊或者按鈕)。每個控制項都有自己的屬性英語Attribute (computing)事件。預設的屬性值會在控制項建立的時候提供,但是程式設計師也可以進行更改。很多的屬性值可以在執行時候隨著用戶的動作和修改進行改動,這樣就形成了一個動態的程式。舉個例子來說:表單的大小改變事件中加入了可以改變控制項位置的代碼,在執行時候每當用戶更改視窗大小,控制項也會隨之改變位置。在文字方塊中的文字改變事件中加入相應的代碼,程式就能夠在文字輸入的時候自動翻譯或者阻止某些字元的輸入。

VB的程式可以包含一個或多個表單,或者是一個主表單和多個子表單,類別似於作業系統的樣子。有很少功能的對話方塊視窗(比如沒有最大化最小化按鈕的表單)可以用來提供彈出功能。

VB的組件既可以擁有使用者介面,也可以沒有。這樣一來伺服器端程式就可以處理增加的模組

VB使用參照計數的方法來進行垃圾收集,這個方法中包含有大量的物件,提供基本的物件導向支援。因為越來越多組建的出現,程式設計師可以選用自己需要的擴充庫。和有些語言不一樣,VB對大小寫不敏感,但是能自動轉換關鍵詞到標準的大小寫狀態,以及強制使得符號表入口的實體的變數名稱遵循書寫規則。預設情況下字串的比較是對大小寫敏感的,但是可以關閉這個功能。

VB使得大量的外界控制項有了自己的生存空間。大量的第三方控制項針對VB提供。VB也提供了建立、使用和重用這些控制項的方法,但是由於語言問題,從一個應用程式建立另外一個並不簡單。

術語[編輯]

在討論Visual Basic(不包含.NET)時,經常可以聽到以下這些術語,因此掌握這些術語的基本理解對初學者十分有幫助。

  • 控制項:簡單的說,控制項就是構成或者說建造Visual Basic應用程式的圖形化工具,包括表單、按鈕、核取方塊、列表框、資料控制項、表格控制項和圖片控制項等等。
  • 事件:由用戶或作業系統引發的動作,例如擊鍵、單擊滑鼠(Click)、雙擊滑鼠(DblClick)、一段時間的限制,或從埠接收資料。
  • 方法:嵌入在物件定義中的程式碼,它定義物件怎樣處理資訊並回應某事件。例如,資料庫物件有打開紀錄集並從一個記錄移動到另一個記錄的方法程式的基本元素,它含有定義其特徵的屬性,定義其任務和辨識它可以回應的事件的方法。控制項和表單是Visual Basic中所有物件的範例。
  • 物件:一個控制項、表單等都可被看作一個物件。
  • 過程:為完成某些特定的任務而編寫的代碼段,過程通常用於回應特定的事件,也可以當作應用程式的用戶自訂函式來使用。
  • 屬性:屬性是組成使用者介面的各物件的性質的具體描述。例如上述「物件」中所提到的尺寸、位置、顏色、寬度、高度等等都稱為控制項的屬性。屬性決定物件的外觀,有時也決定物件的行為。物件的屬性絕大部分是VB中已經事先定義好的,但也有的屬性是需要在應用過程中才去定義的。屬性即可為物件提供資料,也能從物件取回資訊。

VB.NET的變革[編輯]

VB(6.0及以前)不擁有的特性[編輯]

  • 繼承:Visual Basic 5以後,VB雖然提供了簡化的類別支援,但仍然不能滿足程式員的需求。
  • 多執行緒支援:雖然可以使用Windows API完成,不過穩定性與除錯都很難保證。
  • 異常處理:只支援"On Error Goto line"語句。
  • 指標的支援非常有限。
  • VB只能支援8到32位元的整數,很多語言都有無限制的支援。
  • VB不允許在任何數組記憶體在不變的變數。
  • VB不支援其它程式語言共享程式碼。

Visual Basic .NET(VB 7.0)以後的版本基本支援了上述特性。

VB 6與VB.NET比較[編輯]

很多程式編寫者也會留戀VB6。VB6仍保留了一些script語言的特性,例如:不用事先宣告變數類型。當第一次對未宣告類型的變數進行賦值時,VB6便會把這個值的類型作為該變數的類型。這種script語言的特性,對程式的可維護有很多不良的影響,尤其對初階程式員來說,更會被培養成不良的編寫程式習慣,所以VB.NET之後的版本已不保留這種特性。

Basic是作為初學者的程式語言而被製作,當時是以直譯語言(參見VB虛擬碼)的形式出現。同樣擁有不用事先宣告變數類型的特性。這種特性對於幫助初學者快速入門,其實是有正面的作用,可以使初學者更快完成簡單的代碼編寫,而不用顧慮到程式要用哪些變數,要選哪些類型。對於有一定程式編寫經驗的人來看,要經常為for i=1 to 9中的變數i宣告類型也頗煩人,所以這種特性在某些場合上,是相當討人歡心的。

VB.NET的具體變革如下:

  • 子程式(函式)的定義與呼叫。
  • 陣列的初值設定並且需要註明範圍。
  • 函式在格式上的改變:Date函式、Time函式、部分數學函式部分不能直接使用,String函式不能使用,DatePart、DateAdd、DateDiff函式的第一個參數在定義上有所改變。
  • Set保留字不再使用。
  • Wend保留字以End While取代。
  • 新增運算子:+=、-=、/=、*=、&=。

缺點[編輯]

這樣大的變革一度被認為是微軟為了延長VB的生命力而做出的,結果把VB改得幾乎面目全非,成了一個類別似於C#的新語言。VB6的程式幾乎無法執行在VB.NET中,儘管微軟針對該問題提供了「升級精靈」,也無法執行徹底的轉換。這樣,程式設計師不得不付出相當大的精力,手工轉換代碼。

2005年,微軟宣布將不會再對非.NET版本的VB進行支援。VB社群立即作出反應表示關心這個訊息,一些老用戶還遞交了希望能夠繼續對VB進行技術支援的請願書。微軟目前還不願意改變他們的決定。

關於VB的爭議[編輯]

反對者[編輯]

VB是一種充滿了爭議的語言:很多程式設計師對VB程式的品質有強烈的反感。很多人認為VB不配他們使用,認為它是一種給兒童和菜鳥程式設計師的語言。它自從設計開始就是一種簡單的語言。一些C++Java中的特性在VB中並沒有出現。在感受開發的方便和快速的同時,一些類別似於編譯時進行類別型和聲明檢查的功能在預設情況下是關閉的。這樣一些程式設計師一邊感嘆VB的易用性,一邊沮喪地看著一些類別似於「未定義類別型」錯誤的發生。

一些批評家認為VB的簡單特性使得其在未來具有傷害性。很多人自學了VB,但是並沒有學到好的編程習慣。當VB進入課堂的時候,學生們不會學到很多基礎的程式技術和結構,因為很多技術已經包含在那些對用戶可見的組件裡面了。不用學習標準的編程習慣,因為VB具有視覺化的特性,所以導致了一些莫名其妙的代碼的產生。而且很多錯誤和警告的檢查預設情況下都是關閉的,程式設計師很難找到隱藏的錯誤。有經驗的程式設計師在用VB編程的時候都會把這些選項打開。

  • 並不是非常簡便,它開發的程式只能執行在Microsoft Windows中。
  • 檔案太大了。Visual Studio要用好幾張光碟片才能裝下。VB程式在執行時候只需要一個1.4M大小的執行庫
  • IDE中有錯誤。
  • VB不能很好地綜合Windows的基礎API,很多時候要使用低階運算的「小伎倆」來進行編程。而C語言的低階記憶體運算比VB的要簡單得多。

支持者[編輯]

但是很多VB的支持者解釋說VB的易用性就是它最大的優勢,可以讓經驗豐富的VB程式設計師或是剛剛懂得皮毛的人都能用自己的方式快速開發程式。而且VB的程式可以非常簡單的和資料庫連接。比如利用控制項可以繫結資料庫,這樣一來用VB寫出的程式就可以掌握資料庫的所有資訊而不用寫一行代碼。

很多語言的特性比如GoSub、On Error和用變數名字的最後一個字元判斷宣告類別型(比如字串型str$)都是從BASIC中來的。VB的語法和絕大部分語言都不同,可能會讓新的程式設計師混淆。比如宣告「Dim a, b, c As Integer」宣告了c為整數變數,但是a,b依然是Variant(.NET中為Object)類別型的。(如果想宣告3個Integer,必須寫Dim a As Integer, b As Integer, c as Integer;而直接寫Dim a,後面不寫類別型,則自動變成Variant類別型——占用大量資源。這個問題在VB.NET以後的版本已經解決,Dim a, b, c As Integer的類別型都將為整數)

還有一些特性,比如底線字元「_」支援一行代碼分多行寫。一些程式設計師在使用的時候由於不符規範而引起錯誤。

總結[編輯]

VB會吸引更多的讚譽和批評,也會繼續為廣大的用戶和程式設計師使用。它比較適合用來開發提供友好介面的程式(比如針對伺服器的資料),但是不適合開發需要進行繁重運算的程式(如聯合計算程式)。

VB對初學程式設計者是一個很好的入門軟體,尤其對一些有程式設計才能而自己也不知道的人,由VB著手可輕易引發他們的潛能,發揮他們在這方面的才華。

參考文獻[編輯]

  1. ^ Visual Studio 2010 to launch in March. CNET.com. 2009-10-19 [2009-12-13] (英語). 

外部連結[編輯]