本页使用了标题或全文手工转换

Visual Basic

维基百科,自由的百科全书
跳转至: 导航搜索
Visual Basic
编程范型 面向对象事件驱动
发行时间 1991年(23年前) (1991)
實作者 微软
最新发行时间 6.0 / 1998年(16年前) (1998)
型態系統 静态强类型
主要實作產品 Microsoft Visual Studio
啟發語言 BASIC
影響語言 Visual Basic .NET, Gambas, REALbasicBasic4ppc
作業系統 Microsoft Windows and MS-DOS
網站 http://msdn.microsoft.com/zh-cn/vstudio/hh388573
Picture
Visual Basic 6 IDE

Visual BasicVB)是由微软公司开发的包含协助开发环境事件驱动编程语言。它源自于BASIC编程语言。VB拥有图形用户界面GUI)和快速應用程式開發RAD)系统,可以轻易的使用DAORDOADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序

发展史[编辑]

.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 7[编辑]

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.NET 8[编辑]

2004年,微软开放了Visual Studio.NET 2005的测试版本(代号Whidbey)。包含了.NET Framework2.0的测试版本。2005年11月7日 Visual Basic 2005 (v8.0) 发布,同时为初学者与学生提供 Visual Basic 2005 的免費簡化版本 Express Edition。原定免费使用期限一年,之后微软宣布 Express 版本永久免费。Visual Basic 2005的“显著”优点是,可以直接编写出 Windows XP 风格的控件;但是其编写的小程序就需要近 10MB 的内存。

VB.NET 9[编辑]

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

通过几年的发展,它已成为一种专业化的开发语言和环境。用户可用 Visual Basic 快速创建 Windows 程序,现在还可以编写企业水平的客户/服务器程序及强大的数据库应用程序

VB.NET 10[编辑]

Visual Basic 10.0按计划于2010年3月22日随Visual Studio 2010一起正式发布[1]

新加入的功能:

  • 自动实现属性
  • 集合初始化
  • 不需要在代码断行书写时输入下划线“_”
  • 更好的lambda表达式支持
  • 更好地与PythonRuby动态语言的互通操作

Visual Basic .NET 2002(7.0) 及以后的版本运行在 .NET Framework 环境下。

由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程序的性能问题一直被放在了桌面上,但是随着计算机速度的飞速增加,关于性能的争论已经越来越少。

窗体控件的增加和改变可以用拖放技术实现。一个排列满控件的工具箱用来显示可用控件(比如文本框或者按钮)。每个控件都有自己的属性事件。默认的属性值会在控件创建的时候提供,但是程序员也可以进行更改。很多的属性值可以在运行时候随着用户的动作和修改进行改动,这样就形成了一个动态的程序。举个例子来说:窗体的大小改变事件中加入了可以改变控件位置的代码,在运行时候每当用户更改窗口大小,控件也会随之改变位置。在文本框中的文字改变事件中加入相应的代码,程序就能够在文字输入的时候自动翻译或者阻止某些字符的输入。

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编程的时候都会把这些选项打开。

很多批评家批评微软简单地拷贝了BASIC的思想到VB中。著名的计算机科学家艾茲格·迪科斯徹说过一句名言:“如果一个学生最早学过BASIC,那么几乎不可能让他学会优秀的编程:因为这些人已经放弃了重生的希望。[2]”(Dijkstra对待FortranPL/1COBOLAPL同样也毫不留情。)另外一个笑话是:“真正的程序员不用BASIC。12岁以下的孩子才用。”

  • 并不是非常简便,它开发的程序只能运行在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著手可輕易引發他們的潛能,發揮他們在這方面的才華。

参考文献[编辑]

外部鏈接[编辑]