基本信息编辑
中文名
VB编程语言
外文名
Visual Basic
类别
计算机程序设计语言
发明者
Alan Cooper
影响
世界上使用人数最多的语言
开发公司
微软
系统构成
用户界面和快速应用程序开发系统
基础来源
BASIC编程语言图形
Visual Basic编辑
微软公司开发的驱动编程语言
Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言,为结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。是一种可用于微软自家产品开发的语言。
“Visual” 指的是开发图形用户界面 (GUI) 的方法——不需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象add到屏幕上的一点即可。 “Basic”指的是 BASIC (Beginners All-Purpose Symbolic Instruction Code) 语言,是一种在计算技术发展历史上应用得最为广泛的语言。
Visual Basic源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件,用于高效生成类型安全和面向对象的应用程序。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。
目录
1发展历史历史版本2语言特性
3专业术语4有何争议反对观点
支持观点5衍生语言6语言特点
7语言基础
发展历史
编辑
Visual Basic
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年发布。
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会吸引更多的赞誉和批评,也会继续为广大的用户和程序员使用。它非常适合用来开发拥有友好界面的程序(比如针对终端的数据),但是不适合开发其它程序(比如联合计算程序)。
历史版本
发布日期 |
名称 |
说明 |
.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 以及运行时稳定性。 |
2004年 |
Visual Studio 2005 |
包含了.NET Framework2.0的测试版本。 |
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页面,使用户能开发出多功能的网络应用软件。
专业术语
编辑
在讨论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的要简单得多。
支持观点
但是很多VB的支持者解释说VB的易用性就是它最大的优势,可以让经验丰富的VB程序员或是刚刚懂得皮毛的人都能用自己的方式快速开发程序。而且VB的程序可以非常简单的和数据库连接。比如利用控件可以绑定数据库,这样一来用VB写出的程序就可以掌握数据库的所有信息而不用写一行代码。
很多语言的特性比如GoSub、On Error和用变量名字的最后一个字符判断声明类型(比如字符串型str a,b,c As Integer”声明了c为整形变量,但是a、b都是Variant类型的。 {这儿我说明一下,如果想申明3个Integer,必须写 Dim a as Integer, b As Integer, c as Integer;而直接写Dim a,后面不写类型,则自动变成Variant类型——占用大量资源。} 还有一些特性,比如下划线字符“_”用于一行代码分多行写时候。一些程序员在使用的时候由于不规范使得便引起报错。
衍生语言
编辑
微软开发了一系列有关VB的脚本语言:
Visual Basic for Applications,即VBA,包含在微软的应用程序中(比如Microsoft Office),以及类似WordPerfect Office这样第三方的产品里面。VBA这样嵌入在各种应用程序中看起来有些矛盾,但是它的功能和VB一样强大。
VBScript是默认的ASP语言,还可以用在Windows脚本编写和网页编码中。尽管它的语法类似于VB,但是它却是一种完全不同的语言。VBS不使用VB运行库运行,而是由Windows脚本主机解释执行。这两种语言之中的不同点影响ASP网站的表现。
当微软准备开发一种新的编程工具的时候,第一决定就是利用最抢手的VB6来进行旧改,或者就是重新组建工程开发新工具。微软后来开发了VB的继任者Visual Basic .NET,同时也是.NET平台的一部分。VB.net编程语言是一种真正的面向对象编程语言,和VB并不完全兼容。
关于VB.NET
Visual Studio.net 2005已经在2005年11月7日发布。
Visual Basic.NET(简称VB.NET)是新一代的VB。它不是vb 6.0的简单升级,VB.NET与VB之间有非常大的区别。其新特性主要表现在以下几方面:
1.VB.NET完全集成到Visual Studio集成开发环境中,在这种集成开发环境与VB在若干方面有差异。主要体现在窗体的布局以及菜单等方面都有所不同。
2.VB.NET项目与VB不同。它使用基于文件夹的模型,所有项目均放置在项目文件夹层次结构中。
3.VB.NET中使用ADO.NET来访问数据库,ADO.NET是.NET框架的一部分。在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已经成为完全的面向对象的编程语言。
语言特点
编辑
基本特点
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++ 等语言而言,这样的异常处理破坏了代码的结构。
语言基础
编辑
注释方式
在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等。