如果你是一个上世纪六七十年代出生的计算机爱好者,你可能对BASIC语言有着深刻的印象。BASIC语言是一种设计给初学者使用的程序设计语言,它简单易学,可以在各种微型计算机上运行,让你可以快速地编写出有趣的小程序。BASIC语言曾经是计算机教育的入门语言,也是许多人接触计算机的第一步。
然而,BASIC语言也有着不少的缺点和争议。它的语法过于简单,缺乏结构化和模块化的特性,导致编写的程序难以维护和扩展。它的功能过于有限,不能满足复杂的计算需求和高效的性能要求。它的标准过于分散,不同的版本和平台之间的兼容性差,导致程序的移植困难。更有甚者,一些计算机科学家认为BASIC语言会对程序员的思维方式和编程风格产生不良的影响,甚至是不可逆的损害。
其中最著名的批评者就是荷兰的计算机科学家艾兹格·迪科斯彻(Edsger Dijkstra)。他曾经说过这么一段话:“那些已经学过BASIC的学生是不可教化的,再去教他们优秀的编程风格注定徒劳无功。他们已经脑残,再生无望,成不了优秀的程序员。” 这句话引起了很大的争议,有人认为他是在傲慢地贬低BASIC语言和使用它的人,有人认为他是在客观地指出BASIC语言的缺陷和危害。
那么,BASIC语言到底是初学者的福音还是程序员的噩梦呢?我们不妨从它的历史、特点和影响来分析一下。
BASIC语言的历史
BASIC语言的诞生源于两位美国的数学家兼计算机科学家约翰·克米尼(John G. Kemeny)和托马斯·卡茨(Thomas E. Kurtz)的想法。他们在1964年在达特茅斯学院(Dartmouth College)创建了BASIC语言,目的是让学生能够在分时操作系统上编写和运行自己的程序,而不需要学习复杂的语言和技术。他们认为,计算机应该是一种普及的工具,而不是一种专业的设备,任何人都应该能够轻松地使用它。
BASIC语言的设计原则是:
1.让初学者容易使用。
2.成为通用编程语言。
3.允许为熟练者添加高级的功能(与此同时对初学者保持简单)。
4.成为交互式语言。
5.提供清楚的和友好的错误信息。
6.对小型的程序反应迅速。
7.不需要对硬件的了解。
8.将用户和操作系统隔离。
BASIC语言一部分基于FORTRAN语言,一部分基于ALGOL语言,并且在此之上增加了一些东西使之适合于分时功能。它最初只有14条语句,后来发展到17条语句,包括:
1.LET:赋值语句。
2.PRINT:输出语句。
3.INPUT:输入语句。
4.IF...THEN:条件语句。
5.FOR...TO...STEP...NEXT:循环语句。
6.GOTO:无条件跳转语句。
7.GOSUB...RETURN:子程序调用语句。
8.END:结束语句。
9.REM:注释语句。
10.DIM:数组声明语句。
11.READ...DATA...RESTORE:数据读取语句。
12.DEF:函数定义语句。
13.STOP:暂停语句。
14.ON...GOTO/GOSUB:多分支跳转语句。
BASIC语言还提供了一些内置的数学函数和字符串函数,例如:
1.ABS:绝对值函数。
2.SQR:平方根函数。
3.SIN、COS、TAN:三角函数。
4.INT:取整函数。
5.RND:随机数函数。
6.LEN:字符串长度函数。
7.MID:字符串截取函数。
8.LEFT、RIGHT:字符串左右取子串函数。
9.CHR$、ASC:字符和ASCII码转换函数。
BASIC语言的特点
BASIC语言的最大特点就是简单易学。它的语法非常直观和自然,不需要记忆复杂的符号和规则。它的语句都是用英文单词或缩写表示,不需要区分大小写。它的变量名可以是任意的字母或数字的组合,不需要声明类型。它的运算符和表达式都是用常见的数学符号表示,不需要括号。它的程序结构都是用缩进和行号表示,不需要花括号。它的错误提示都是用英文描述,不需要查阅手册。
BASIC语言的另一个特点就是交互式。它的程序可以在解释器的环境下逐行输入和执行,不需要编译和链接。它的程序可以随时修改和调试,不需要重新运行。它的程序可以随时输出和输入,不需要文件操作。它的程序可以随时停止和恢复,不需要保存状态。
BASIC语言的影响
BASIC语言的出现,极大地降低了计算机编程的门槛,使得更多的人能够接触和使用计算机。它在计算机教育和普及方面发挥了重要的作用,培养了一大批的计算机爱好者和专业人才。它也促进了计算机科学和技术的发展,催生了许多的创新和应用。
BASIC语言的流行,也带动了许多的衍生和变种。随着计算机硬件和软件的不断进步,BASIC语言也不断地扩展和改进,增加了许多的功能和特性,适应了不同的平台和领域。例如:
1.Microsoft BASIC:微软公司开发的BASIC语言的系列产品,包括Altair BASIC、GW-BASIC、QBasic、QuickBASIC、Visual Basic等,广泛应用于个人计算机和Windows系统。
2.Turbo BASIC:Borland公司开发的BASIC语言的编译器,提供了高效的编译和调试功能,以及结构化和面向对象的特性。
3.True BASIC:BASIC语言的创始人开发的BASIC语言的标准化版本,遵循了ANSI BASIC的规范,提供了模块化和可移植的特性。
4.BBC BASIC:英国广播公司开发的BASIC语言的版本,用于BBC Micro和Acorn Archimedes等计算机,提供了高级的图形和声音功能。
5.BASIC-PLUS:DEC公司开发的BASIC语言的版本,用于PDP-11和VAX等大型计算机,提供了多用户和多任务的特性。
6.Visual Basic .NET:微软公司开发的BASIC语言的现代化版本,用于.NET平台,提供了面向对象和组件的特性,以及对其他.NET语言的互操作性。
7.Gambas:一个开源的BASIC语言的项目,用于Linux系统,提供了类似于Visual Basic的图形用户界面和数据库访问功能。
8.Blitz BASIC:一个专门用于游戏开发的BASIC语言的版本,提供了高级的图形、声音和输入输出功能,以及对3D图形的支持。
9.Liberty BASIC:一个简单和易用的BASIC语言的编译器,提供了结构化和事件驱动的特性,以及对Windows API的访问功能。
BASIC语言的争议
BASIC语言的简单和交互式,虽然有利于初学者的入门和兴趣,但也有可能导致一些不良的编程习惯和思维方式。例如:
1.过度使用GOTO语句,导致程序的结构混乱和难以理解。
2.缺乏函数和模块的概念,导致程序的重复和冗余。
3.缺乏类型和范围的检查,导致程序的错误和不安全。
4.缺乏抽象和封装的能力,导致程序的复杂和低效。
5.缺乏对其他语言和技术的了解和学习,导致程序的局限和落后。
BASIC语言的创始人对这些批评有着不同的看法。他们认为,BASIC语言的目的是让更多的人能够使用计算机,而不是让他们成为专业的程序员。他们认为,BASIC语言的简单和交互式,是它的优点,而不是缺点。他们认为,BASIC语言的用户,可以根据自己的需要和兴趣,选择学习更高级的语言和技术,而不是被迫接受一种固定的编程范式。他们认为,BASIC语言的影响,是积极的,而不是消极的。