
Visual Basic
vb语言一般指本词条
Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程式设计语言,为结构化的、模组化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程式设计语言。是一种可用于微软自家产品开发的语言。
“Visual” 指的是开发图形用户界面 (GUI) 的方法——不需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象add到萤幕上的一点即可。 “Basic”指的是 BASIC (Beginners All-Purpose Symbolic Instruction Code) 语言,是一种在计算技术发展历史上套用得最为广泛的语言。
Visual Basic源自于BASIC程式语言。VB拥有图形用户界面(GUI)和快速应用程式开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连线资料库,或者轻鬆的创建Active X控制项,用于高效生成类型安全和面向对象的应用程式。程式设计师可以轻鬆的使用VB提供的组件快速建立一个应用程式。
基本介绍
- 中文名:VB程式语言
- 外文名:Visual Basic
- 类别:电脑程式设计语言
- 创始人:Alan Cooper
发展历程
1991年4月,微软公司推出了 Visual Basic 1.0Windows版本,这个连线程式语言和用户界面的进步被称为Tripod(有些时候叫做Ruby),最初的设计是由阿兰·库珀(Alan Cooper)完成的。在当时,它是第一个“可视”的编程软体。
VB 6.0 启动画面

1992年9月,Visual Basic 1.0 DOS版本发布。11月,由于Visual Basic 1.0的功能过于简单,微软推出了新版本Visual Basic 2.0。这个版本最大的改进就是加入了对象型变数,比如Dim b As CommandButton、Dim c As Control,对语言的改进和扩充,Visual Basic 2.0对VBX有了很好的支持,许多第三方控制项涌现出来,极大地丰富了Visual Basic的功能。微软还为Visual Basic 2.0增加了OLE和简单的数据访问功能。
1993年,微软公司推出Visual Basic 3.0,分为标準版和专业版。其中包含一个数据引擎,可以直接读取Access资料库。增加了最新的ODBC2.0的支持,Jet数据引擎的支持和新版本OLE的支持。Visual Basic 3.0增加了许多新的金融函式,增加了相当多的专业级控制项,可以开发具有相当水平Windows应用程式。
1995年8月,微软公司推出Visual Basic 4.0,版本包含了16位和32位两个版本,VBX控制项换成了OCX控制项,Visual Basic 4.0所用的语言换成了Visual Basic For Application。
1997年2月,微软公司推出Visual Basic 5.0,Visual Basic 5.0加入了一个本地代码编译器,Visual Basic 5.0对Visual Basic For Application语言有重大的完善和丰富,Visual Basic 5.0的IDE支持“智慧型感知”,支持开发自己的ActiveX 控制项、进程内的COM DLL组件、进程外的COM EXE组件以及在浏览器中运行的ActiveX文档。程式设计师可以用32位的版本导入由4.0版本创建的16位程式,并且能顺利编译。同时还包含了对用户自建控制项的支持。
1998年,微软公司推出Visual Basic 6.0,Visual Basic 6.0在数据访问方面有了很大的改进,新的ADO组件让对大量数据快速访问成为可能。数据环境和新的报表功能也让数据开发有了全新的体验。 藉助COM/COM+强大的功能,可以开发具有N层结构的分散式应用程式。可以在IIS上开发性能超群的Web应用程式。
2000年,微软公司推出Visual Basic.NET版本Visual Basic.NET有对CLR最完善的支持,同时儘量保留着BASIC易懂的语法风格和易用性。Visual Basic.NET大大减少了Visual Basic语言的关键字,如GoSub、PSet等等。
2002年,微软将.NET Framework与 Visual Basic 结合而成为 Visual Basic .NET (vb .net),重新打造 VB,新增许多特性及语法。2月,Visual Basic .NET 2002 (7.0),由于其使用了新的核心和特性,所以很多 VB 的程式设计师都要改写程式。
2003年,Visual Basic .NET 2003 (v7.1)问世,主要改进了运行状况,提升了 IDE 以及运行时稳定性。
2004年,微软开放了Visual Studio 2005的测试版本(代号Whidbey)。包含了.NET Framework2.0的测试版本。
2005年11月7日,Visual Basic 2005 (v8.0)问世,同时间推出Visual Basic 2005的免费简化版本Visual Basic 2005 Express Edition给Visual Basic初学者及学生使用。是 vb .net 的重大转变,微软决意在其名称中去掉了".NET"部份。VB2005 提供 My 伪命名空间、泛型、操作符重载等新语言特性。
2007年11月,微软公司推出Visual Basic 2008 (9.0),提供支持 IIF 函式、匿名类、LINQ、Lambda 表达式、XML 数据结构等新语言特性。
2008年3月,微软宣布将不会再对非.NET版本的VB进行支持。
2010年4月,微软公司推出Visual Studio 2010 (10.0),提供支持 Dynamic Language Runtime (DLR)、自动实现属性、集合初始化、不需要在代码断行书写时输入下划线“_”等新语言特性。
2012年5月,微软公司推出Visual Studio 2012 (11.0) RC,提供支持更简易的异步编程(Asynchronous Programming)、Iterator、扩充 Global 关键字等新语言特性。
发布日期 | 名称 | 说明 |
---|---|---|
.NET Framework 引入之前 | ||
1991-04 | Visual Basic 1.0 Windows 版本 | |
1992-09 | Visual Basic 1.0 DOS 版本 | |
1992-11 | Visual Basic 2.0 | 对于上一个版本的界面和速度都有所改善。 |
1993-06 | Visual Basic 3.0 | 包含一个数据引擎,可以直接读取 Access 资料库。 |
1995-08 | Visual Basic 4.0 | 发布了32位和16位的版本。其中包含了对类的支持。 |
1997-02 | Visual Basic 5.0 | 包含了对用户自建控制项的支持,且从这个版本开始 VB 可以支持中文。 |
1998-10 | Visual Basic 6.0 | |
.NET Framework 引入之后 | ||
2002-02 | Visual Basic .NET 2002 (7.0) | 由于其使用了新的核心和特性,所以很多 VB 的程式设计师都要改写程式。 |
2003-04 | Visual Basic .NET 2003 (7.1) | 主要改进了运行状况,提升了 IDE 以及运行时稳定性。 |
2005-11 | Visual Basic 2005 (8.0) | 是 vb .net 的重大转变,微软决意在其名称中去掉了".NET"部份。VB2005 提供 My 伪命名空间、泛型、操作符重载等新语言特性。 |
2007-11 | Visual Basic 2008 (9.0) | 提供支持 IIF 函式、匿名类、LINQ、Lambda 表达式、XML 数据结构等新语言特性。 |
2008-03 | 微软宣布结束对于 VB 6.0 的延长支持。 | |
2010-04 | Visual Studio 2010 (10.0) | 提供支持 Dynamic Language Runtime (DLR)、自动实现属性、集合初始化、不需要在代码断行书写时输入下划线“_”等新语言特性。 |
2012-05 | Visual Studio 2012 (11.0) RC | 提供支持更简易的异步编程(Asynchronous Programming)、Iterator、扩充 Global 关键字等新语言特性。 |
2013-11-13-2 | Visual Studio 2013 | |
2014-11-13 | Visual Studio 2015 | Windows、iOS 以及 Android 套用开发 |
语言特色
製作应用程式安装盘等提供了友好的集成开发环境。
可视化的设计平台:在使用传统的程式设计语言编程时,一般需要通过编写程式来设计应用程式的界面(如界面的外观和位置等),在设计过程中看不见界面的实际效果。而在Visual Basic 6.0中,採用面向对象程式设计方法(Object-Oriented Programming),把程式和数据封装起来作为一个对象,每个对象都是可视的。开发人员在界面设计时,可以直接用Visual Basic 6.0的工具箱在萤幕上"画"出视窗、选单、命令按键等不同类型的对象,并为每个对象设定属性。开发人员要做的仅仅是对要完成事件过程的对象进行编写代码,因而程式设计的效率可大大提高。
事件驱动的编程机制:面向过程的程式是由一个主程式和若干个子程式及函式组成的。程式运行时总是先从主程式开始,由主程式调用子程式和函式,开发人员在编程时必须事先确定整个程式的执行顺序。而Visual Basic 6.0事件驱动的编程是针对用户触发某个对象的相关事件进行编码,每个事件都可以驱动一段程式的运行。开发人员只要编写回响用户动作的代码。这样的应用程式代码精简,比较容易编写与维护。
结构化的程式设计语言:Visual Basic 6.0具有丰富的数据类型和众多的内部函式。其採用模组化和结构化程式设计语言,结构清晰,语法简单,容易学习。
强大的资料库功能:Visual Basic 6.0利用数据控制项可以访问Access、FoxPro等多种资料库系统,也可以访问Excel、Lotus等多种电子表格。
ActiveX技术:ActiveX发展了原有的OLE技术,使开发人员摆脱了特定语言的束缚,方便地使用其他应用程式提供的功能,使Visual Basic 6.0能够开发集声音、图像、动画、字处理、电子表格、Web等对象于一体的应用程式。
网路功能:Visual Basic 6.0提供的DHTML(动态HTML)设计工具可以使开发者动态地创建和编辑Web页面,使用户能开发出多功能的网路套用软体。
语言基础
注释方式
在VB中,注释有2种方式。
1.以Rem关键字开头,并且Rem关键字与注释内容之间要加一个空格。注释可以是单独的一行,也可以写在其他语句行的后面。如果在其他语句行后使用Rem关键字,则必须使用冒号(:)与语句隔开。
2.使用一个撇号(')来代替Rem关键字。若使用撇号,则在其他语句行使用时不必加冒号。
特徵衡量
在 Visual Basic 中,可通过属性、方法和事件来说明和衡量一个对象的特徵。
事件(Event)
事件是指发生在某一对象上的事情。事件又可分为滑鼠事件和键盘事件。例如,在命令按钮(Command Button)这一对象上可能发生滑鼠单击(Click)、滑鼠移动(Mouse Move)、滑鼠按下(Mouse Down)等滑鼠事件,也可能发生键盘按下(Key Down)等键盘事件。总之,事件指明了对象“什幺情况下做?”,常用于定义对象发生某种反映的时机和条件。
方法(Method)
方法是用来控制对象的功能及操作的内部程式。例如,人具有说话、行走、学习、睡觉等功能,在visual Basic中,对象所能提供的这些功能和操作,就称作“方法”。以窗体为例,它具有显示(show)或隐藏(hide)的方法。总之,方法指明了对象“能做什幺?”,常用于定义对象的功能和操作。
属性(Property)
属性是指用于描述对象的名称、位置、颜色、字型等特徵的一些指标。可以通过属性改变对象的特性。
有些属性可以在设计时通过属性视窗来设定,不用编写任何代码;而有些属性则必须通过编写代码,在运行程式的同时进行设定。可以在运行时读取和设定取值的属性成为读写属性,只能读取的属性成为唯读属性。总之属性指明了对象“是什幺样的?”,常用于定义对象的外观。
对象与类
对象(Object)
Visual Basic.NET 具有“面向对象”的特性,Visual Basic.NET 套用种程式的基本单元是对象,用 Visual Basic.NET 编程就是用“对象”组装程式。这种“面向对象”的编程方法与传统的全部用代码编製程序的方法有很大区别,就像用积体电路晶片组装电视机和用三极体,二极体组装电视机的区别一样。显然,“面向对象”的编程方法比传统的编程方法更简单,更方便,并且编写出的程式也更加稳定。因此,“对象”可以被看做 Visual Basic.NET 程式设计的核心。
在 Visual Basic.NET程式设计中,对象中还可以包含头,手,腿,脚等部位,其中的每个部位又可以单独作为作为被研究的对象。在 Visual Basic.NET程式设计中,整个应用程式就是一个对象,应用程式中又包含着窗体(Form),命令按钮(Command),选单(Menu)等对象。
类(Class)
在 Visual Basic.NET中,对象是由类创建的,因此对象可以说是类的具体实例,这就好比是蛋糕和做蛋糕的模具之间的关係。
各种不同的对象分属于各种不同的种类。同一类对象可能具有一些不同的特徵(或是说同一类对象不一定具有完全相同的特性);具有某些相同的特性的对象,不一定是同一类对象,这就好比是人和猴子虽然都有身高、性别等特徵,但二者之间还存在着智商、语言等特性差异,这两个对象之间的特性相差很多,根本就不能算是同一类对象。而男人和女人,虽然有着性别、生理等方面的差异,但他们绝大部分特性相同,可以算是同一种类。由此,可以归结为一句话:同一类对象的绝大部分特性相同。
相关控制项
根据套用类型,Visual Basic控制项可以分为如下3类:
内置控制项
内置控制项即Visual Basic工具箱中的控制项,里面包含了常见窗体程式所需要的控制项
Visual Basic中,大部分的程式执行都是在事件中完成的。
在代码中,控制项的每一个事件都需要声明,声明方法类似一个子过程的声明。大部分的控制项在双击控制项进入代码界面的时候都会自动补完该控制项的最常用事件的声明。具体代码示範如下:
ActiveX控制项
ActiveX控制项包含不同版本Visual Basic提供的控制项和仅在专业版、企业版中提供的控制项,并且还包含第三方提供的控制项。ActiveX控制项是对Visual Basic内置控制项的扩充,开发人员可以根据个人需要进行随意扩充,扩充的ActiveX控制项将在工具箱中显示。
可插入对象
在Visual Basic的工具列中,可以放置其他的第三方对象,可以像使用控制项一样轻鬆使用。添加后的对象也在工具箱中显示。有关第三方对象,可以从受信任的来源下载控制项,并通过添加引用来导入。支持这些自定义的Vb的控制项有:ComponentOne Studio,Spread,ActiveReports、MultiRow等。
语言特点
基本特点
VB 的中心思想就是要便于程式设计师使用,无论是新手或者专家。VB使用了可以简单建立应用程式的GUI 系统,但是又可以开发相当複杂的程式。VB 的程式是一种基于窗体的可视化组件安排的联合,并且增加代码来指定组件的属性和方法。因为默认的属性和方法已经有一部分定义在了组件内,所以程式设计师不用写多少代码就可以完成一个简单的程式。过去的版本里面 VB 程式的性能问题一直被放在了桌面上,但是随着计算机速度的飞速增加,关于性能的争论已经越来越少。
窗体控制项的增加和改变可以用拖放技术实现。一个排列满控制项的工具箱用来显示可用控制项(比如文本框或者按钮)。每个控制项都有自己的属性和事件。默认的属性值会在控制项创建的时候提供,但是程式设计师也可以进行更改。很多的属性值可以在运行时候随着用户的动作和修改进行改动,这样就形成了一个动态的程式。举个例子来说:窗体的大小改变事件中加入了可以改变控制项位置的代码,在运行时候每当用户更改视窗大小,控制项也会随之改变位置。在文本框中的文字改变事件中加入相应的代码,程式就能够在文字输入的时候自动翻译或者阻止某些字元的输入。
VB 的程式可以包含一个或多个窗体,或者是一个主窗体和多个子窗体,类似于作业系统的样子。有很少功能的对话框视窗(比如没有最大化和最小化按钮的窗体)可以用来提供弹出功能。
VB 的组件既可以拥有用户界面,也可以没有。这样一来伺服器端程式就可以处理增加的模组。
VB 使用参数计算的方法来进行垃圾收集,这个方法中包含有大量的对象,提供基本的面向对象支持。因为越来越多组件的出现,程式设计师可以选用自己需要的扩展库。和有些语言不一样,VB 对大小写不敏感,但是能自动转换关键字到标準的大小写状态,以及强制使得符号表入口的实体的变数名称遵循书写规则。默认情况下字元串的比较是对大小写敏感的,但是可以关闭这个功能。
VB 使得大量的外界控制项有了自己的生存空间。大量的第三方控制项针对 VB 提供。VB 也提供了建立、使用和重用这些控制项的方法,但是由于语言问题,从一个应用程式创建另外一个并不简单。
语言缺点
Visual Basic 语言具有不支持继承、无原生支持多执行绪、异常处理不完善等三项明显缺点,使其有所局限性(此些缺点皆已在 vb .net 获得改进)。
不支持继承
VB 5.0 和 VB 6.0 都是基于对象的程式语言,但是不包含继承特性。VB 中提供了特殊的类的功能,但是还是不能满足程式设计师的需求。
无原生支持多执行绪
Visual Basic 对于多执行绪无原生支持,只能通过Windows API的调用实现,且极其的不稳定。因为在API创建的执行绪中,并没有自动初始化运行时库,导致部分的函式无法使用。一般的,在VB6等早期的VB开发环境下,使用API创建执行绪的目的是完成容易使程式假死的大量数据或者逻辑的计算。
异常处理不完善
Visual Basic 中内置异常处理,即使未写异常处理代码,一旦用户出错也会弹出一个明确写出出错原因对话框,接着程式终止。
Visual Basic 中可以使用 Err.Raise抛出异常。对系统及用户抛出的异常的处理常用两种模式:一是使用 On Error Resume Next 处理错误;另一种是使用 On Error Goto 将运行引入错误处理代码。但相对 C++ 等语言而言,这样的异常处理破坏了代码的结构。
派生语言
微软开发了一系列由 Visual Basic 所派生的语言:
VBA
Visual Basic for Applications(VBA):包含在微软的应用程式中(如Microsoft Office),以及类似WordPerfect、Office这样第三方的产品里面。VBA 这样嵌入在各种应用程式中看起来有些矛盾,但是它的功能和 VB 一样强大。
VBS
VBScript(VBS):是默认的ASP语言,还可以用在Windows脚本编写和网页编码中。儘管它的语法类似于VB,但是它却是一种完全不同的语言。VBS 不使用 VB运行库运行,而是由Windows脚本主机解释执行。这两种语言之中的不同点影响ASP网站的表现。
vb.net
Visual Basic.net(vb.net):当微软準备开发一种新的编程工具的时候,第一决定就是利用 VB 6.0 来进行旧改,或者就是重新组建工程开发新工具。微软后来开发了 VB 的继任者Visual Basic.net,同时也是.net平台的一部分。vb.net程式语言是一种真正的面向对象程式语言,和 VB 并不完全兼容。
Visual Basic.net(vb.net) 是新一代的 VB 语言,并不只是 VB 6.0 的简单升级,vb.net 与 VB (泛指 VB 6.0 之前的版本) 之间有非常大的区别。其新特性主要表现在以下几方面:
1.vb.net 完全集成到 Visual Studio 集成开发环境中,在这种集成开发环境与 VB 在若干方面有差异。主要体现在窗体的布局以及选单等方面都有所不同。
2.vb.net 项目与 VB 不同。它使用基于资料夹的模型,所有项目均放置在项目资料夹层次结构中。
3.vb.net 中使用ado.net来访问资料库,ado.net是.netFramework的一部分。在 vb.net 中实现数据访问的方法主要有两种:其一是在程式设计阶段,通过创建、配置数据适配器 DataAdapter 和生成数据集 DataSet;其二是在运行中,通过编程方式动态创建配置数据适配器和创建、生成数据集。
4.在 vb.net 中是使用asp.net技术来编写 Web 页面的。在asp.net中使用的也不是脚本语言,而是真正意义的程式语言。凭藉asp.net的 Web 应用程式、XML Web Services 等基于 Web 的功能,使得 vb.net 开发 Web 页面与开发 Windows 应用程式很相似,Web 页面代码也显得有条有理了。
5.vb.net 已经成为完全的面向对象的程式语言,并且新增更多语言特性。
Visual Basic.net有提供转换精灵,协助开发者将 VB 6.0 的程式代码转换为 vb.net 相对应之程式代码。
语言争议
程式设计师中,对于各种语言孰优孰劣的争论并不少见,Visual Basic 更是成为了一种充满了争议的语言。
反方观点
一些批评家认为 Visual Basic 是一种给儿童和菜鸟程式设计师的语言,它自从设计开始就是一种简单的语言。一些C++和Java中的特性在 VB 中并没有出现。在感受开发的方便和快速的同时,一些类似于编译时进行类型和声明检查的功能在默认情况下是关闭的。这样一些程式设计师一边感叹 VB 的易用性,一边沮丧地看着一些类似于“未定义类型”错误的发生。
一些批评家认为 Visual Basic 的简单特性使得其在未来具有伤害性。很多人自学了 VB,但是并没有学到好的编程习惯。当 VB 进入课堂的时候,学生们不会学到很多基础的程式技术和结构,因为很多技术已经包含在那些对用户可见的组件里面了。不用学习标準的编程习惯,因为 VB 具有可视化的特性,所以导致了一些莫名其妙的代码的产生。而且很多错误和警告的检查默认情况下都是关闭的,程式设计师很难找到隐藏的错误。有经验的程式设计师在用 VB 编程的时候都会把这些选项打开。
一些批评家批评微软简单地拷贝了BASIC的思想到 Visual Basic 中。
Visual Basic 开发的程式只能运行在Microsoft Windows中;且运行时还需要 VB 运行库。
Visual Basic 不能很好的综合Windows的基础 API,很多时候要使用低级运算的“小伎俩”来进行编程。而C 语言的低级记忆体运算比 VB 的要简单得多。
VB语言作为计算机语言的入门,是很多学生学习编程的入门级语言,大学生利用VB语言开始了他们学习计算机的世界。
正方观点
任何工具都是针对不同任务发明的,如同刀剑和锄头,刀剑高手未必是锄地高手,刀剑高手除了杀人,不能生产粮食养人,所以任何工具歧视都是错误的。Visual Basic的强大在于能够快速开发企业级软体,使程式设计师有更多的时间和精力考虑用户的需求,生产出满足用户需要的软体,特别适合大型企业级软体的开发,比如MIS、MRP、MRP II、ERP等重量级的软体,而不是花很长时间去製作一个只有几K的DLL。
Visual Basic 的最大的优势在于它的易用性,可以让经验丰富的VB程式设计师或是刚刚懂得皮毛的人都能用自己的方式快速开发程式。而且 VB 的程式可以非常简单的和资料库连线。比如利用控制项可以绑定资料库,这样一来用VB写出的程式就可以掌握资料库的所有信息而不用写一行代码。
Visual Basic 开发的程式虽然仅在 Microsoft Windows 中得到原生支持,但 Linux 等平台中存在着一些项目,使得能够使用 Visual Basic 的代码在这些平台下顺利编译。
任何语言开发的程式都需要一定运行时环境的支持,对于大型软体系统来说,需要支撑是很正常的,正所谓“站在巨人的肩膀上”。传统 Visual Basic 开发的程式需要 VB运行库的支持;Visual Basic .NET 开发的程式(如C#)需要 .Net Framework 的支持;Java 开发的程式需要 Java虚拟机的支持。
转载请注明出处海之美文 » Visual Basic