公元2000年,IEEE计算机协会的一份期刊《Computing in Science & Engineering》上,两位客座编辑Francis Sullivan和Jack Dongarra遴选出了20世纪科学与工程的实践与发展上最具影响力的十大算法
快速傅立叶变换算法由James Cooley和John Tukey于1965年共同提出,因此FFT又称为Cooley–Tukey算法。FFT是离散傅立叶算法(被认为是数字信号处理的基石)的一种快速算法,其时间复杂度仅为O(Nlog(N));比时间效率更为重要的是,快速傅立叶算法非常容易用硬件实现,因此它在电子技术领域得到极其广泛的应用。John Tukey曾经在普林斯顿大学担任教授,期间他曾指导过的博士生之一便是托马斯·库茨(Thomas E. Kurtz)。
Thomas E. Kurtz从普林斯顿大学毕业之后,进入常春藤盟校之一的达特茅斯学院教授统计和数值分析课程。后来他与同在达特茅斯学院任教的约翰·凯默尼(John G. Kemeny )共同发明了著名的BASIC语言,时间是在1964年。二人(如下图所示)也因BASIC语言之父的名声而享誉学术界。Thomas E. Kurtz是ACM的会士。John G. Kemeny 则在1970到1981年间担任达特茅斯学院的第13任校长。John G. Kemeny 还曾经担任“三里岛事件”调查委员会的主席。
BASIC是一种高级程序设计语言,英文全称是 ”
在486、586直到奔腾计算机的时代,BASIC语言曾经非常流行。一个我们非常熟知的事实是清华大学谭浩强教授编著的《BASIC语言》发行量超过1250万册,创科技书籍发行量的世界纪录。他还曾在中央电视台系统地向全国观众讲授包括BASIC在内的7种计算机语言,观众超过500万人,引领无数人进入计算机世界大门。笔者所系统地学习的第一门计算机语言也正是BASIC,彼时大约应该是小学五年级左右。就一个初学者而言,BASIC确实是非常好的入门选择,它的语法规则非常简单,而且又不涉及像C语言中的指针概念,即使对于小学生而言,也可以藉此体会计算机编程的乐趣。
在20世纪80年代中期,美国国家标准化协会(ANSl)根据结构化程序设计的思想,提出了一个新的BASIC标准草案。在此前后,出现了一些结构化的BASIC语言,主要有True BASIC、Quick BASIC、Turbo BASIC等。其中,True BASIC是由两位发明者约翰·凯默尼和托马斯·库茨于1985年推出的严格遵循ANSI标准的BASIC。
1987年微软公司推出了Quick BASIC,它提供了一个开发程序的集成环境,用户在编程序、修改、编译、调试、运行时均可通过菜单进行操作、十分方便。后来伴随着MS-DOS 5.0的推出,微软公司也同时推出了QBASIC,并作为MS-DOS 5.0的一个组成部分免费提供给用户。QBASIC与Quick BASIC完全兼容,是Quick BASIC的简化版本,除不能编译及减少了初学者暂时用不着的一些调试工具外,它具有Quick BASIC的大部分功能。QBASIC采用先进的解释方式,速度更快,是一种会话式的语言,编写的程序可以立即运行并得到结果。
这一时期,微软公司BASIC产品的主要竞争对手是Borland公式的Turbo BASIC。作为一个完整的编译器和开发环境,Turbo BASIC同样提供了方便用户编辑和调试程序的环境,而且还能编译出MS-DOS底下的原生程序码。
随着Windows 3.0的推出,越来越多的开发商对这个图形界面的操作系统产生了兴趣,大量的Windows应用程序开始涌现。但是,Windows程序的开发相对于传统的DOS有很大的不同,开发者必须将很多精力放在开发GUI上,这让很多希望学习Windows开发的人员怯步。1991年,微软公司展示了一个叫Thunder的产品,所有的开发者都惊呆了,它竟然可以用鼠标“画”出所需的用户界面,然后用简单的BASIC语言编写业务逻辑,就生成一个完整的应用程序。这种全新的“Visual”的开发就像雷电(Thunder)一样,给Windows开发人员开辟了新的天地。这个产品最终被定名为Visual Basic。
1991年4月,由微软公司开发的Visual BASIC 1.0 版本正式发布,这在当时引起了很大的轰动,许多专家把Visual BASIC的出现当作是软件开发史上的一个具有划时代意义的事件。Visual BASIC,顾名思义,就是“可视的BASIC”,它源自于BASIC编程语言。不同点在于它是图形界面的BASIC,它是用于Windows系统开发的应用软件,采用事件驱动,并使用Quick BASIC的语法和可视化的IDE。
从1992到1995的四年时间里,微软也不失时机地接连推出了 2.0、3.0、4.0 三个版本。并且从 VB 3.0 开始,微软将Access的数据库驱动集成到了 Visual BASIC 中,这使得其数据库编程能力大大提高。从 Visual BASIC 4.0 开始,Visual BASIC 也引入了面向对象的程序设计思想。此时,Visual BASIC已经取得巨大成功,并逐渐成长为一种结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言
1994年,微软公司为了表彰七位杰出人士为Windows的成功而做出的巨大贡献,决定授予他们视窗先锋(Windows Pioneers)奖。被称为Visual Basic之父的阿兰·库珀(Alan Cooper)即位列其中(下图即为阿兰·库珀)。
七位视窗先锋(及他们的主要贡献)分别是:
- 阿兰·库珀(Alan Cooper):以 Visual Basic 之父而闻名于世;
- 莱尔·格里芬(Lyle Griffin):开发了Micrografx Designer,这是视窗系统上最早的图形化应用程序;
- 乔·古思里奇(Joe Guthridge): 领导了 Samna Amí 的开发,这是首个Windows文字处理程序,后来被命名为 Lotus Word Pro;
- 泰德·约翰逊(Ted Johnson):领导了 PageMaker 桌面出版软件的开发,还是 Visio 公司的联合创始人;
- 艾·凯尼格(Ian Koenig):领导了 Reuters Terminal 财务信息软件的开发;
- 雷·奥兹(Ray Ozzie): Lotus Notes的作者,并于2005-2010之间任微软公司首席软件建构师;
- 查尔斯·佩措尔德(Charles Petzold):Windows编程系列图书的作者, 同时以其他多本针对Microsoft产品的经典编程书籍而著称。
值得一提的是,笔者有幸还是视窗先锋奖得主查尔斯·佩措尔德经典著作《编码——隐匿在计算机软硬件背后的语言》一书中文版的译者(下图即佩措尔德和他的经典著作)。
1998年6月15日,微软公司推出Visual BASIC 6.0。Visual BASIC 6.0作为Microsoft Visual Studio 6.0工具套件之一,在数据访问方面有了很大的改进,新的ADO组件让对大量数据快速访问成为可能,提供了与Oracle和sql Server的数据库链接工具。Visual BASIC 6.0的Web开发特性可以使得开发人员以更方便、组件式的方法,开发各种HTML和动态HTML的应用程序。这些新特性,使得Visual Basic 6.0成为建立可扩展的企业级应用开发平台的理想选择。可以说,Visual Basic 6.0 在当时已经是非常成熟稳定的开发系统,也是历史上最为经典、最受欢迎的Visual Basic 版本之一。
我个人跟Visual BASIC的第二个缘分也跟Visual Basic 6.0有关。记得在学校做TA的时候,我所指导的一门课程就是”User-Centered Design and Testing“。作为介绍软件开发中的界面设计与测试方法的课程,这门课选择了绘制GUI非常方便的Visual Basic 6.0作为课程作业实现的配套工具。大约也就是在那个时候,我同步参与了《Visual Basic 6.0程序设计》一书的翻译工作(后由电子工业出版社出版)。该书英文原版的名称是《Programming with Microsoft Visual Basic 6.0》,作者是Diane Zak。
2002年开始,微软将.NET Framework与 Visual Basic 结合而成为 Visual Basic .NET,重新打造 Visual Basic,新增许多特性及语法,又将 Visual Basic 推向一个新的高度。此后,Visual Basic 一直作为Visual Studio中的重要成员而不断完善和演进。毫无疑问,Visual Studio是目前最流行的Windows平台应用程序的集成开发环境,其最新版本为 Visual Studio 2017 版本,基于.NET Framework 4.5.2。
但是,似乎很多人对于Visual Basic的感观并不理想,觉得这是与实际应用离得非常遥远的一门计算机语言。觉得一般用C、C++、C#、Java和Python的情况要远远多于Visual Basic。甚至有人会怀疑Visual Basic还活着呢吗?事实上,在计算机编程语言排行榜TIOBE上Visual Basic(或者写成Visual Basic. Net)一直在十名左右的位置上。下图是2002到2013年各年度计算机语言的热度情况。可见,Visual Basic一直占有一席之地。
下表是本文撰写时,世界排名前十的计算机语言。
如果你觉得Visual Basic已经被淘汰了,那明显与事实不符。如果你觉得身边好像也没什么人在真正用Visual Basic做开发,那或许是中国软件行业中(或者仅仅是你身边)用Visual Basic比较少。但事实证明如果在从全世界范围内来看,Visual Basic的使用仍然非常广泛。即使就个人来说,在开发一些Windows系统上的小型桌面应用的话,Visual Basic绝对是最便捷、最好用的工具之一。即使是一些非计算机专业出身的人,像一些数学系、物理系的学生,如果要开发一些实用的GUI程序来帮助提升自己的工作效率,那么Visual Basic简直是不二之选。
我觉得我个人跟Visual Basic还是挺有缘分的。我所学习的第一个计算机语言就是BASIC。之前当学生时候做TA,Tutorial的课也是用Visual Basic,还参与过一本Visual Basic外版书籍的翻译,尽管我的名字并未出现在封面上(而是出现在前言中的参与者列表里)。过去也用Visual Basic开发过不少小的桌面应用程序,都觉得很好用。今年以来,我准备陆续发一个讲授Visual Basic程序开发的快捷系列教程(已经发布的内容如下),希望可以帮助更多人走进编程的世界。
Visual Basic快捷教程
参考文献
[1]: Francis Sullivan,Jack Dongarra,Guest Editors’ Introduction: The Top 10 Algorithms,Computing in Science & Engineering 2000 vol. 2 Issue No. 01 - January/February
[2]: Barry A. Cipra,The Best of the 20th Century: Editors Name Top 10 Algorithms,SIAM News,Volume 33,Number 4,(原文获取链接)
[3]: Nicholas J. Higham,The Top 10 Algorithms in Applied Mathematics,(原文获取链接)