Visual Basic(简称VB)
Visual Basic(简称VB)是Microsoft开发的一种面向对象的编程语言。 使用 Visual Basic即可快速、轻松地创建类型安全的.NET应用。
“Visual” 指的是开发图形用户界面 (GUI)
的方法——不需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象add到屏幕上的一点即可。 “Basic”指的是 BASIC
(Beginners All-Purpose Symbolic Instruction Code)
语言,是一种在计算技术发展历史上应用得最为广泛的语言。
Visual
Basic源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建Active
X控件,用于高效生成类型安全和面向对象的应用程序。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。
1991年4月,微软公司推出了 Visual Basic 1.0Windows版本,这个连接编程语言和用户界面的进步被称为Tripod(有些时候叫做Ruby),最初的设计是由阿兰·库珀(Alan Cooper)完成的。在当时,它是第一个“可视”的编程软件。 而后多年,Visual Basic经过多次发展,其发展历程展示在“Visual Basic发展简史”表中。在2020年3月11日,微软宣布不会再开发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 以及运行时稳定性。 |
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虚拟机的支持。