Visual Basic

Visual Basic（VB）是由微软公司开发的包含环境的事件驱动编程语言。它源自于BASIC编程语言。VB拥有图形用户界面（GUI）和快速应用程式开发（RAD）系统，可以轻易的使用DAO、RDO、ADO连接数据库，或者轻松的创建ActiveX控件。程序员可以轻松地使用VB提供的组件快速建立一个应用程序。

1991年4月，Visual Basic 1.0 for Windows版本发布。1992年9月，Visual Basic 1.0 for DOS版本发布。这个连接编程语言和用户界面的进步被称为Tripod（有些时候叫做Ruby），最初的设计是由阿兰·库珀（）完成的。这在当时引起了很大的轰动。许多专家把VB的出现当做是软件开发史上的一个具有划时代意义的事件。以现在的眼光来看，VB1.0版的功能其实非常的弱，但它在推出当时可是第一个“可视”的编程软件。这使得程序员欣喜之极，都尝试在VB的平台上进行软件创作。

1992年11月，VB2.0发布。它对于上一个版本的界面和速度都有所改善。
1993年夏天，VB3.0发布，分为标准版和专业版。其中包含一个数据引擎，可以直接读取Access数据库。这使得VB的数据库编程能力大大提高。
1995年8月，VB4.0发布了32位版本和16位的版本。其中包含了对类的支持。从VB4开始，逐步引入了面向对象的程序设计思想。VB功能强大，学习简单。而且，VB还引入了“控件”的概念，使得大量已经编好的VB程序可以被我们直接拿来使用。

Visual Basic 1.0~4.0都必须将源代码编译成VB伪代码后解释执行。
1997年2月，VB5.0发布。程序员可以用32位的版本导入由4.0版本创建的16位程序，并且能顺利编译。同时还包含了对用户自建控件的支持。自从Visual Basic 5.0以后，VB支持编译成本机代码，但必须在VB运行库的支持下工作。
1998年夏天，VB6.0发布。VB6是VB.NET至今仍无法完全取代的版本。 

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）推出。
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的内存。
2008年2月1日Visual Basic 2008（v9.0）发布。

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

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

新加入的功能：

Visual Basic .NET 2002（7.0）及以后的版本运行在.NET Framework环境下。
Visual Basic 2015（VB 14.0）于2015年7月20日发布。

微软开发了一系列有关VB的脚本语言：



当微软准备开发一种新的编程工具的时候，第一决定就是利用最抢手的VB6来进行修改，或者就是重新组建工程开发新工具。微软后来开发了VB的继任者Visual Basic .NET，同时也是.NET平台的一部分。VB.NET编程语言是一种真正的面向对象编程语言（VB4-VB6只能称为基于对象而不是面向对象，最明显的特征就是VB4-VB6都不支持类的继承），和传统Visual Basic并不完全兼容。

VB的中心思想就是要便于程序员使用，无论是新手或者专家。VB使用了可以简单建立应用程序的GUI系统，但是又可以开发相当复杂的程序。VB的程序是一种基于窗体的可视化组件安排的联合，并且增加代码来指定组建的属性和方法。因为默认的属性和方法已经有一部分定义在了组件内，所以程序员不用写多少代码就可以完成一个简单的程序。过去的版本里面VB程序的性能问题一直被放在台面上讨论，但是随着计算机速度的飞速增加，关于性能的争论已经越来越少。

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

VB的程序可以包含一个或多个窗体，或者是一个主窗体和多个子窗体，类似于操作系统的样子。有很少功能的对话框窗口（比如没有最大化和最小化按钮的窗体）可以用来提供弹出功能。

VB的组件既可以拥有用户界面，也可以没有。这样一来服务器端程序就可以处理增加的模块。

VB使用引用计数的方法来进行垃圾收集，这个方法中包含有大量的对象，提供基本的面向对象支持。因为越来越多组建的出现，程序员可以选用自己需要的扩展库。和有些语言不一样，VB对大小写不敏感，但是能自动转换关键词到标准的大小写状态，以及强制使得符号表入口的实体的变量名称遵循书写规则。默认情况下字符串的比较是对大小写敏感的，但是可以关闭这个功能。

VB使得大量的外界控件有了自己的生存空间。大量的第三方控件针对VB提供。VB也提供了建立、使用和重用这些控件的方法，但是由于语言问题，从一个应用程序创建另外一个并不简单。

在讨论Visual Basic（不包含.NET）时，经常可以听到以下这些术语，因此掌握这些术语的基本理解对初学者十分有帮助。


Visual Basic .NET（VB 7.0）以后的版本基本支持了上述特性。

很多程序编写者也会留恋VB6。VB6仍保留了一些script语言的特性，例如：不用事先宣告变量类型。当第一次对未宣告类型的变数进行赋值时，VB6便会把这个值的类型作为该变数的类型。这种script语言的特性，对程序的可维护有很多不良的影响，尤其对初阶程序员来说，更会被培养成不良的编写程序习惯，所以VB.NET之后的版本已不保留这种特性。

Basic是作为初学者的编程语言而被制作，当时是以直译语言（参见VB伪代码）的形式出现。同样拥有不用事先宣告变量类型的特性。这种特性对于帮助初学者快速入门，其实是有正面的作用，可以使初学者更快完成简单的代码编写，而不用顾虑到程序要用哪些变量，要选哪些类型。对于有一定程序编写经验的人来看，要经常为for i=1 to 9中的变量i宣告类型也颇烦人，所以这种特性在某些场合上，是相当讨人欢心的。

VB.NET的具体变革如下：

这样大的变革一度被认为是微软为了延长VB的生命力而做出的，结果把VB改得几乎面目全非，成了一个类似于C#的新语言。VB6的程序几乎无法运行在VB.NET中，尽管微软针对该问题提供了“升级向导”，也无法执行彻底的转换。这样，程序员不得不付出相当大的精力，手工转换代码。

2005年，微软宣布将不会再对非.NET版本的VB进行支持。VB社群立即作出反应表示关心这个消息，一些老用户还递交了希望能够继续对VB进行技术支持的请愿书。微软目前还不愿意改变他们的决定。

VB是一种充满了争议的语言：很多程序员对VB程序的品质有强烈的反感。很多人认为VB不配他们使用，认为它是一种给儿童和菜鸟程序员的语言。它自从设计开始就是一种简单的语言。一些C++和Java中的特性在VB中并没有出现。在感受开发的方便和快速的同时，一些类似于编译时进行类型和声明检查的功能在默认情况下是关闭的。这样一些程序员一边感叹VB的易用性，一边沮丧地看着一些类似于“未定义类型”错误的发生。

一些批评家认为VB的简单特性使得其在未来具有伤害性。很多人自学了VB，但是并没有学到好的编程习惯。当VB进入课堂的时候，学生们不会学到很多基础的程序技术和结构，因为很多技术已经包含在那些对用户可见的组件里面了。不用学习标准的编程习惯，因为VB具有可视化的特性，所以导致了一些莫名其妙的代码的产生。而且很多错误和警告的检查默认情况下都是关闭的，程序员很难找到隐藏的错误。有经验的程序员在用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著手可轻易引发他们的潜能，发挥他们在这方面的才华。