因简单小巧,易学易懂而盛行
初学者的全方位符式指令代码
VB前传,从教学到游戏,再到系统,似乎每步都是精心设计——更详细的历史
IBM首款PC游戏 竟是比尔盖茨花费一晚时间打造——我们总能在无聊的时光里找到有趣的事情
Visual Basic之父回忆往事——从回忆里展现VB的历程
VB以及VBA的发展历史——历史版本里的新特性
20世纪60年代中期,美国达特茅斯学院约翰·凯梅尼(J. Kemeny)和托马斯·卡茨(Thomas E. Kurtz)认为,像FORTRAN(世界上最早出现的计算机高级程序设计语言)那样的语言都是为专业人员设计,没有办法普及。于是,他们在简化FORTRAN的基础上,在1964年研制出一种“初学者通用符号指令代码”(Beginner's All-purpose Symbolic Instruction Code),简称BASIC。
BASIC语言在上世纪70年代至80年代非常流行。1973年,美国DEC公司的小型机PDP装上了BASIC语言。大多数语言的解释型版本要比同样的编译型的要慢,然而因为害怕人们难以理解“编译”这一概念,他们研制了BASIC的解释程序,用它代替BASIC的编译程序。至此,BASIC语言可通过编译或解释两种途径将程序翻译成机器指令,BASIC语言正在成为微型计算机的主流通用标准语言。
这时期的比尔盖茨和艾伦从将PDP-10接触到basic语言,微软提供BASIC给大多数早期的个人电脑,基于6502 Microsoft BASIC编写的basic语言被搬上了Altair 8800(75),IBMPC(77),apple(77),TRS-80(77)commodore(79),Atari 8-bit。值得一提的是,这些电脑都是基于6502芯片的,因此很多基于6502架构的早期家用电脑都有内置BASIC。
微软的复活节彩蛋,这一彩蛋出现在1979年的8位机,Commodore PET With BASIC V2上,比尔·盖茨本人插入了这个彩蛋
第二代流行的BASIC还有Microsoft公司于1986年推出的Quick BASIC(快速BASIC)和Borland公司于1987年推出的TurboBASIC(增强BASIC),尤其是Quick BASIC提供了集编辑、调试、编译、运行于一体的集成环境,具有下拉菜单、多窗口及在线帮助功能,并和以前IBM-PC机上的各种BASIC版本保持兼容。1985年末,1986年初微软公司还编写了一个基于窗口的Amiga BASIC,支持一个在当时非常先进的多任务图形界面的计算机Amiga computers的1.1版本
最初的basic语言功能很弱、语句很少,只有14条语句,后来发展到17条语句,12个函数和3个命令,这就是所谓的“基本的BASIC”。这个时期的BASIC语言主要在小型机上使用,以编译方式执行。
随着计算机科学技术的迅速发展,特别是微型计算机的广泛使用,计算机厂商不断地在原有的BASIC基础上进行功能扩充,出现了多种BASIC版本,例如TRS-80 BASIC、Apple BASIC、GWBASIC、IBM BASIC(即BASICA)、True BASIC、Amiga BASIC。此时BASIC已经由初期小型、简单的学习语言发展成为功能丰富的使用语言。它的许多功能已经能与其他优秀的计算机高级语言相媲美,而且有的功能(如绘图)甚至超过其他语言。
这些语言引入了许多对原始的家用电脑中BASIC的扩展,比如提供了更加好的字符串操作功能以及对图形的支持,另外还有对文件系统的访问以及一些额外的数据类型。其中更加重要的则是添加了结构化编程的功能,包括一些原始版本中不存在的流程控制语句和支持本地变量的子程序。新的图形功能同样为个人电脑中的视频游戏打下的基础,类似DONKEY.BAS的一些BASIC程序展示了个人电脑所具有的功能。
但是在二十世纪八十年代的后半段,新的电脑则是比起以往的电脑拥有更加强大的资源控制能力。于此同时,计算机渐渐的从一个业余爱好者感兴趣的东西过渡到一个人们日常使用的工具(主要用的是别人写的代码),所以编写程序对用户重要性渐渐的减弱。当然BASIC的重要性也渐渐的减弱的起来,仅管依然还有许多的BASIC语言版本。编译型BASIC语言和CBASIC仍然使用在许多的IBM 4960系统上。
随着微软公司Visual Basic的发布BASIC的语言的好运似乎又一次回归了过来。很难确切的说Visual Basic到底是不是BASIC语言,因为它较之间的版本有很大的改变——以基于对象以及事件驱动为的设计目标的语言。它唯一显著的与BASIC语言相关的地方就是相似的语法,但是语法本身也不能完全定义这种语言,因为大多数Visual Basic的开发都是使用“拖动-放置”的方法,开发者不需要为一些常用的对象比如按钮和滚动条去写所有的代码。这个可以看成是BASIC语言的一种进化,一些早期的Dartmouth BASIC的特有的功能被保留了下来,比如行号和INPUT关键字等(Visual Basic仍旧是使用INPUT语句来从文件读取数据;行号也同样允许用在所有的VB版本中,甚至是VB.NET,仅管它不能用在一些特定的地方,比如在SUB语句前面)。
1978年的Microsoft BASIC源代码6502中,保罗艾伦为MACRO-10汇编器,6502模拟器,tokenizer,detokenizer以及查找,插入和删除BASIC行编写了宏包。
而比尔盖茨实现了FOR和GOSUB的所有BASIC语句,函数,运算符,表达式评估,堆栈管理,内存管理器,数组和字符串库。
当时苹果合伙创始人沃兹也注意到了BASIC语言运行起来非常的慢,用他的话来说,可能要比汇编语言慢100倍或者1000倍。现在我们网上,经常会比较各种语言的优劣,其中一个最搞笑的测评是benchmark,就是把C语言,Java,PHP,Python等语言,跑个分出来。这其实是对一个错误的问题给出的正确答案,不同的语言都有自己不同的生存空间,没人用C语言写网站前端,也没人用Python写驱动程序。当然了,人家沃兹不会这么看问题,他认为,BASIC的慢根本不是什么致命的缺点,但是BASIC的简单却是最好的优点。
在意识到BASIC的优点之后,woz就坐下来开始写了一些软件,来做Atari街机上能玩的游戏,他用BASIC做的游戏也是打砖块的游戏,他说他当然会用汇编写,但是,他只是想用BASIC,来试试BASIC的力量。他查了一下手册,边写边学,写了一些代码,可以很轻松的改变游戏上砖块的颜色,甚至他还给电脑上加了一个声音,当碰到砖块以后,会发出一个声音。这只是一个下午的工作,改变砖块的颜色和球的速度以及球弹出的角度,可以在一秒钟内完成调整。
当时的计算机用的语言有数学家们用的是FORTRAN语言,一些计算机科学家用的是Lisp或者Algol语言,这些语言有非常强大的功能,比如Lisp或者Algol语言支持动态,递归,各种范式都能玩的转,深受广大科学家的喜爱,但是,没有受过专业训练的人根本就搞不定!
在使用BASIC做完这个游戏以后,他就把乔布斯喊过来看看他的研究成果,沃兹首先展示了如何方便的改变这些砖块的颜色。随后,他和乔布斯大概用了1个半小时时间,做了一些游戏方面的探索,他在他写的文章里说,感觉做了用汇编10年才能做的东西。他们认为,BASIC可以给任何年龄段的人使用,不用像FORTRAN一样,只能是科学家,工程师,经过一段时间的学习以后才能使用。乔布斯看过以后,觉得这是个很好的推广个人电脑的机会,因为,让普通人能学会编程,是一个非常好的宣传。所以,沃兹就着手给Apple电脑做一个BASIC的编译环境。
当时的woz还提到了一个很有用的信息,他刚上中学的时候,他告诉他爸爸,如果有一个4k的内存就好了,他爸爸告诉他,当时一个4k的内存,大概要一个房子那么贵。为什么他想要4k的内存呢?woz说要4k的内存,才能运行高级的编程语言。在1975年的时候,已经有3个公司有4k的DRAM了。这时候,虽然还是比较贵,但是,已经可以不用像他中学时候需要一个房子那么贵了。所以,他让Apple I和Apple II的最小内在都是4k,但是,4k对更高级的编程语言来说,还是太少了,但是,勉强运行个BASIC还是不错的。
第三代VISUAL BASIC
“Visual Basic之父回忆往事”中的关键点
难题:没有所谓的理想shell
shell设计问题的解决方案: 构建一个shell工具集。在这个工具集中,每个用户都能够构建他们所需的shell,以满足他们独特的应用程序。我不用告诉用户理想的shell是什么,他们可以设计自己的、个性化的理想shell。
一旦确定了设计愿景,设计的细节就相对容易了。用户将通过一个工具面板,创建“表单”并使用工具实例。工具集既包括标准控件,如列表框和按钮,还包括特殊的、扩展功能的shell,如自动显示目录内容的列表框。
这个新版本的Tripod,其突出的一个特性是,界面完全可以通过拖放操作。用户可以将两个控件(我称之为gizmo)连接在一起,方法是右键单击并从一个gizmo拖动到另一个gizmo。通过一个可视化的箭头将一个gizmo事件和另一个gizmo方法逻辑地连接起来。后来,微软放弃了箭头,但保留了事件/方法模型。
Tripod 更名为 Ruby
使用Ruby,我终于发现了动态链接DLL的两种实际用途:首先,它是可安装的,并且可以动态扩展。其次,gizmos的面板可以动态添加。
C语言是最常被提到的候选语言,但最终,微软将其完全替换为QuickBasic。这种语言与前端的新结合是静态的、永久性的。
在设计过程的早期,我萌生了gizmo动态化的想法。我设想了这样一个产品:第三方供应商可以编写自己的gizmo dll,用户可以将它们添加到特定领域的产品中,而无需重新编译。我们定义了一个Ruby接口,可以查询环境中的可执行文件。如果文件响应正确,Ruby就知道它是另一个协作的gizmo,并请求在工具面板中显示。这个接口最终被称为VBX。据我所知,这是第一次在操作系统之外实际使用Windows的动态链接功能。
最初的意图是将它作为一个更强大和更复杂的新shell与Windows 3.0一起发布,就像现在的Windows 95一样。
微软决定推迟发布Ruby,并通过添加QuickBasic将其从面向所有Windows用户的shell构造集转换为面向专业程序员的可视化编程语言。
VB 历史版本新特性
1991.5.20 Visual Basic 1.0 for Windows
1992.9.1 Visual Basic for MS-Dos 用户界面控件和事件驱动
1992.11.2 Visual Basic 2.0 for Windows加入300多项新特性
1993.5.14 Visual Basic 3.0 for Windows
提供数据库连接功能Microsoft Access Database Engine for Windows 1.1,提供OLE(对象链接与嵌入自动识别)2.0的功能,许多新的工具和VBX控件以及增强的自定义VBX控件功能
1993.6.29 Visual Basic被整合于Excel 5.0和Project 4.0中,通过VBA开发属于Microsoft Office平台的各种解决方案
1995.12.12 基于Microsoft Windows NT和Windows 95版本的Visual Basic 4.0,提供16位和32位程序开发功能
1995.12.7Visual Basic Scripting(VBScript)
一种属于Visual Basic的Internet的描述语言。VBScript是用于设计Web内容的高性能描述语言,允许开发人员在Web页面链接和自动化各种对象参数,例如OLE对象。
1997年2月3日 Visual Basic 5.0专业版——一个全球快速应用开发平台上最流行的开发工具。
新特性包括:Native语言编译、高速资料库浏览和改良的整合开发环境,Visual Basic 5.0可以创建ActiveX控件
1997.3.10 Visual Basic 5.0控件开发版
通过这个版本,用户能快速方便地开发ActiveX控件,用于各种Internet、Intranet和主纵架构的应用软件。
在Microsoft发布的Excel 97中,开始支持条件格式和数据有效性,新加入了一些菜单和工具栏。在VBA方面,引入了全新的VBA编辑器、用户窗体(Userform)、类模块等。
1998.6.15 Visual Basic 6.0
一种流行的快速应用软件开发工具。Visual Basic 6.0作为Microsoft的Visual Studio 6.0工具套件之一,它提供了图形化、ODBC或OLE DB实现整合资料浏览工具平台,以及提供了与Oracle和SQL Server的资料库联结工具。Visual Basic 6.0的Web开发特性可以使得开发人员以更方便、组件式的方法,开发各种HTML和动态HTML的应用程序。这些新特性,同时结合性能最佳化、简化应用程序的部署和错误调试以及支持Microsoft服务器技术等特性,使得Visual Basic 6.0成为建立可扩展的企业应用开发平台的理想选择。
1998年4月28日Microsoft向第三方的软件供应商通过许可证的模式发表了VBA 6.0和VBA开发工具组件6.0。VBA 6.0成为Office2000的核心组件。
1998年9月2日Microsoft发表了一套全面开发可扩展企业应用的工具套装软件:Visual Studio 6.0。Visual Studio 6.0 包含 Visual Basic 6.0,Microsoft Visual C++ 6.0,Microsoft Visual FoxPro 6.0,Microsoft Visual InterDev Web 6.0 和 Microsoft Visual J++ 6.0。