@H_502_1@公元2000年,IEEE计算机协会的一份期刊《Computing in Science & Engineering》上,两位客座编辑Francis Sullivan和Jack Dongarra遴选出了20世纪科学与工程的实践与发展上最具影响力的十大算法
[1]
。随后,Barry Cipra又在SIAM News上发表文章对这十大算法进行了综述
[2]
。2016年,SIAM的主席Nick Higham对原来的十大算法列表进行了些许调整,并给出了自己的名单
[3]
。两份名单在十大算法中的七项上基本达成了一致,而著名的快速傅立叶变换算法(FFT,Fast Fourie Transform)则两次均入选十大算法之列。
@H_502_1@快速傅立叶变换算法由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 还曾经担任“三里岛事件”调查委员会的主席。
@H_502_1@BASIC是一种高级程序设计语言,英文全称是 ”
Beginner′sAll-PurposeSymbolicInstruc@H_403_252@tionCode
“,取其首字母后简称为”BASIC”,就名称的含意来看,是”适用于初学者的通用符号指令码”,是一种在计算机发展史上应用最为广泛的程序设计语言。与C或C++语言不同(它们都属于编译型),BASIC是一种解释型的计算机语言。
@H_502_1@在486、586直到奔腾计算机的时代,BASIC语言曾经非常流行。一个我们非常熟知的事实是清华大学谭浩强教授编著的《BASIC语言》发行量超过1250万册,创科技书籍发行量的世界纪录。他还曾在中央电视台系统地向全国观众讲授包括BASIC在内的7种计算机语言,观众超过500万人,引领无数人进入计算机世界大门。笔者所系统地学习的第一门计算机语言也正是BASIC,彼时大约应该是小学五年级左右。就一个初学者而言,BASIC确实是非常好的入门选择,它的语法规则非常简单,而且又不涉及像C语言中的指针概念,即使对于小学生而言,也可以藉此体会计算机编程的乐趣。
@H_502_1@在20世纪80年代中期,美国国家标准化协会(ANSl)根据结构化程序设计的思想,提出了一个新的BASIC标准草案。在此前后,出现了一些结构化的BASIC语言,主要有True BASIC、Quick BASIC、Turbo BASIC等。其中,True BASIC是由两位发明者约翰·凯默尼和托马斯·库茨于1985年推出的严格遵循ANSI标准的BASIC。
@H_502_1@1987年微软公司推出了Quick BASIC,它提供了一个开发程序的集成环境,用户在编程序、修改、编译、调试、运行时均可通过菜单进行操作、十分方便。后来伴随着MS-DOS 5.0的推出,微软公司也同时推出了QBASIC,并作为MS-DOS 5.0的一个组成部分免费提供给用户。QBASIC与Quick BASIC完全兼容,是Quick BASIC的简化版本,除不能编译及减少了初学者暂时用不着的一些调试工具外,它具有Quick BASIC的大部分功能。QBASIC采用先进的解释方式,速度更快,是一种会话式的语言,编写的程序可以立即运行并得到结果。
@H_502_1@这一时期,微软公司BASIC产品的主要竞争对手是Borland公式的Turbo BASIC。作为一个完整的编译器和开发环境,Turbo BASIC同样提供了方便用户编辑和调试程序的环境,而且还能编译出MS-DOS底下的原生程序码。
@H_502_1@随着Windows 3.0的推出,越来越多的开发商对这个图形界面的操作系统产生了兴趣,大量的Windows应用程序开始涌现。但是,Windows程序的开发相对于传统的DOS有很大的不同,开发者必须将很多精力放在开发GUI上,这让很多希望学习Windows开发的人员怯步。1991年,微软公司展示了一个叫Thunder的产品,所有的开发者都惊呆了,它竟然可以用鼠标“画”出所需的用户界面,然后用简单的BASIC语言编写业务逻辑,就生成一个完整的应用程序。这种全新的“Visual”的开发就像雷电(Thunder)一样,给Windows开发人员开辟了新的天地。这个产品最终被定名为Visual Basic。
@H_502_1@1991年4月,由微软公司开发的Visual BASIC 1.0 版本正式发布,这在当时引起了很大的轰动,许多专家把Visual BASIC的出现当作是软件开发史上的一个具有划时代意义的事件。Visual BASIC,顾名思义,就是“可视的BASIC”,它源自于BASIC编程语言。不同点在于它是图形界面的BASIC,它是用于Windows系统开发的应用软件,采用事件驱动,并使用Quick BASIC的语法和可视化的IDE。
@H_502_1@从1992到1995的四年时间里,微软也不失时机地接连推出了 2.0、3.0、4.0 三个版本。并且从 VB 3.0 开始,微软将Access的数据库驱动集成到了 Visual BASIC 中,这使得其数据库编程能力大大提高。从 Visual BASIC 4.0 开始,Visual BASIC 也引入了面向对象的程序设计思想。此时,Visual BASIC已经取得巨大成功,并逐渐成长为一种结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言
@H_502_1@1994年,微软公司为了表彰七位杰出人士为Windows的成功而做出的巨大贡献,决定授予他们视窗先锋(Windows Pioneers)奖。被称为Visual Basic之父的阿兰·库珀(Alan Cooper)即位列其中(下图即为阿兰·库珀)。
七位视窗先锋(及他们的主要贡献)分别是:
@H_502_1@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 版本之一。
@H_502_1@我个人跟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。 @H_502_1@但是,似乎很多人对于Visual Basic的感观并不理想,觉得这是与实际应用离得非常遥远的一门计算机语言。觉得一般用C、C++、C#、Java和Python的情况要远远多于Visual Basic。甚至有人会怀疑Visual Basic还活着呢吗?事实上,在计算机编程语言排行榜TIOBE上Visual Basic(或者写成Visual Basic. Net)一直在十名左右的位置上。下图是2002到2013年各年度计算机语言的热度情况。可见,Visual Basic一直占有一席之地。
下表是本文撰写时,世界排名前十的计算机语言。
@H_502_1@如果你觉得Visual Basic已经被淘汰了,那明显与事实不符。如果你觉得身边好像也没什么人在真正用Visual Basic做开发,那或许是中国软件行业中(或者仅仅是你身边)用Visual Basic比较少。但事实证明如果在从全世界范围内来看,Visual Basic的使用仍然非常广泛。即使就个人来说,在开发一些Windows系统上的小型桌面应用的话,Visual Basic绝对是最便捷、最好用的工具之一。即使是一些非计算机专业出身的人,像一些数学系、物理系的学生,如果要开发一些实用的GUI程序来帮助提升自己的工作效率,那么Visual Basic简直是不二之选。
@H_502_1@我觉得我个人跟Visual Basic还是挺有缘分的。我所学习的第一个计算机语言就是BASIC。之前当学生时候做TA,Tutorial的课也是用Visual Basic,还参与过一本Visual Basic外版书籍的翻译,尽管我的名字并未出现在封面上(而是出现在前言中的参与者列表里)。过去也用Visual Basic开发过不少小的桌面应用程序,都觉得很好用。今年以来,我准备陆续发一个讲授Visual Basic程序开发的快捷系列教程(已经发布的内容如下),希望可以帮助更多人走进编程的世界。
[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,(原文获取链接)
Thomas E. Kurtz从普林斯顿大学毕业之后,进入常春藤盟校之一的达特茅斯学院教授统计和数值分析课程。后来他与同在达特茅斯学院任教的约翰·凯默尼(John G. Kemeny )共同发明了著名的BASIC语言,时间是在1964年。二人(如下图所示)也因BASIC语言之父的名声而享誉学术界。Thomas E. Kurtz是ACM的会士。John G. Kemeny 则在1970到1981年间担任达特茅斯学院的第13任校长。John G. Kemeny 还曾经担任“三里岛事件”调查委员会的主席。
七位视窗先锋(及他们的主要贡献)分别是:
- 阿兰·库珀(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产品的经典编程书籍而著称。
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。 @H_502_1@但是,似乎很多人对于Visual Basic的感观并不理想,觉得这是与实际应用离得非常遥远的一门计算机语言。觉得一般用C、C++、C#、Java和Python的情况要远远多于Visual Basic。甚至有人会怀疑Visual Basic还活着呢吗?事实上,在计算机编程语言排行榜TIOBE上Visual Basic(或者写成Visual Basic. Net)一直在十名左右的位置上。下图是2002到2013年各年度计算机语言的热度情况。可见,Visual Basic一直占有一席之地。
下表是本文撰写时,世界排名前十的计算机语言。
Visual Basic快捷教程
参考文献
@H_502_1@[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,(原文获取链接)