编程语言之BASIC
2024-05-11 11:38:11 阿炯

BASIC(英语:Beginner's All-purpose Symbolic Instruction Code的缩写)又译培基,是一种直译式程序设计语言。名称的字面意思为“初学者的全方位符式指令代码”,设计给初学者使用的编程语言,在完成编写后不须经由编译及链接等手续,经过解释器即可执行,但如果需要单独执行时仍然需要将其建立成可执行文件。

1964年5月1日凌晨4点,两位美国数学家兼计算机科学家约翰·克米尼(John Kemeny)和Thomas E. Kurtz在FORTRAN语言的基础上创造了一种新的语言——BASIC,这是一种适用于初学者的人机交互式语言。


原来被作者写做BASIC,只是后来被微软广泛的叫做Basic了。BASIC(初学者通用符号指令代码)是当今最出名的编程语言,它拥有最多的派生编程语言“方言”,2024年5月就已经60岁了。BASIC的原始版本也被称为“达特茅斯 BASIC”,因为它起源于位于新罕布什尔州的达特茅斯学院。当然,它是后来的几十种BASIC语言的基础。

最初的达特茅斯BASIC于1964年5月推出,并在1979年之前进行了更新和维护。在BASIC和类似的可访问编程语言出现之前,PC仍然是占据整个房间的机器,必须根据近乎具体情况的功能进行编程才能完成大部分操作。人们说BASIC使编程“民-主-化”,这是因为它不仅是最早的主要编程语言之一,而且实际上也是最容易访问的语言之一。它与通用电气计算机使用的“分时系统”一起开发的。在这种情况下,分时是指一台PC可以同时在多个终端之间分配资源,而BASIC的首次测试是在连接到同一台GE-225机器的两个独立终端上同时使用两个BASIC应用程序完成的。

那么,达特茅斯BASIC的影响力到底有多大?时至今日,在过去的六十年中,已经出现了数十种针对特定用例和设备量身定制的BASIC。早期分支包括Atari BASIC,Microsoft BASIC,甚至TI-BASIC以及Commodore BASIC。那是德州仪器,以及包括Microsoft的Visual Basic及其分支。The Register对达特茅斯BASIC 60周年的报道还强调了对Small Visual Basic 3.0,SE BASIC 4.2和定制QB64 QuickBasic的密切更新,后者源自Microsoft的QuickBasic。


BASIC语言本来是为达特茅斯学院的大学生们创造的高级语言,目的是使大学生容易使用计算机。尽管初期的BASIC仅有几十条语句,但由于BASIC在当时比较容易学习,它很快从校园走向社会,成为初学者学习计算机程序设计的首选语言。随着计算机科学技术的迅速发展,特别是微型计算机的广泛使用,计算机厂商不断地在原由的BASIC基础上进行功能扩充,出现了多种BASIC版本,例如TRS-80 BASIC、Apple BASIC、GWBASIC、IBM BASICA(即BASICA)、True BASIC。此时BASIC已经由初期小型、简单的学习语言发展成为功能丰富的使用语言。它的许多功能已经能与其他优秀的计算机高级语言相媲美,而且有的功能(如绘图)甚至在当时超过其他语言。

在单片机上亦可以使用BASIC编程(一般是行号类型的BASIC),不过多数情况下要安装BASIC的ROM。

在大型机和小型机时代其设计BASIC语言的目的是让学生能在Dartmouth的分时操作系统上写程序。其8个设计原则是:
让初学者容易使用。
成为通用编程语言。
允许为熟练者添加高级的功能(与此同时对初学者保持简单)。
成为交互式语言。
提供清楚的和友好的错误信息。
对小型的程序反应迅速。
不需要对硬件的了解。
将用户和操作系统隔离。

其一部分基于FORTRAN II,一部分基于ALGOL 60,并且在此之上增加了一些东西使之适和于分时功能(另外拥有这种功能的分时系统有JOSS和CORC,LISP也在较小程度上的支持这种功能)在它之前,Dartmouth研究开发了DARSIMCO(1956)和DOPE(1962,实现了SAP和DART(1963)一个精简版的FORTRAN II)。最初,BASIC语言致力于简单的数学运算,在它最初的作为批处理语言的实现中就有对矩阵运算的支持,在1965年完整的字符串处理功能被加入其中。BASIC语言最初在支持多个终端的GE-265大型机上实现。在它最初被引入的那段时间中,它是一种编译型语言,并且效率十分高,在GE-265大型机中的一些具有一定的计算上密集的(至少在当时是如此)的程序,比如用辛普森法则进行数值积分的计算效率上击败了FORTRAN II和ALGOL 60。


家用电脑时期最先在像Altair那样8080机器中出现的BASIC语言之一是Tiny BASIC,一个简单的BASIC语言的的实现,最初由Li-Chen Wang博士编写,随后被Dennis Allison应Bob Albrecht(他随后创建了杂志Dr. Dobb's Journal)的要求移植到Altair中。Tiny BASIC的设计和全部的源代码都在1976年于DDJ杂志中被公布出来。

1975年,MITS发布了Altair BASIC,由Bill Gates和Paul Allen作为一个叫做Micro-Soft的公司开发,后来Micro-Soft则发展成今天的企业巨头——微软(Microsoft)。最初的Altair版本由Gates、Allen和Monte Davidoff共同编写。Microsoft BASIC(随后大多被人称作M BASIC或者MBASIC)的一些版本马上被捆绑到最初的基于软盘的CP/M计算机中,这种计算机在小的商业环境中被广为使用。随着在CP/M中的BASIC语言知名度的扩张,新的计算机设计中同样也引入了他们自己的BASIC语言的版本,或者干脆叫Micro-Soft把BASIC版本移植到他们的平台中。一些杂志刊登了用BASIC语言写的游戏、工具和一些其他程序的完整的代码。BASIC具有的一个天生的优势,就是将杂志上公布的代码输入计算机然后运行是一件非常简单的事情。

20世纪70年代中期,微型计算机的发展促成了多种BASIC语言版本,其中包括1975年的Microsoft BASIC。由于这些机器上可用的主内存很小(通常为4 KB),因此还创建了各种Tiny BASIC版本。 BASIC几乎适用于那个时代的任何操作系统,并成为20世纪70年代末家用计算机(例如Amstrad CPC 464)上默认的编程语言,这些机器通常都安装了BASIC解释器。

个人电脑时期

早在1979年微软公司就开始和IBM协商给IBM的PC机提供一个烧在BIOS里面的IBM Cassette BASIC(BASIC C)。微软公司后来出售了一些在MS-DOS和PC-DOS上的BASIC语言版本,包括IBM Disk BASIC(BASIC D)、IBM BASICA(BASIC A)、GW-BASIC(一个不需要IBM机器ROM以及与BASICA兼容的版本)和QuickBASIC。发布了Turbo Pascal的Borland公司在1985年发布了Turbo BASIC 1.0(即后来的PowerBASIC)。1985年末微软公司同样还编写了一个基于窗口的AmigaBASIC,支持一个在当时非常先进的多任务图形界面的计算机Amiga computers的1.1版本。

这些语言引入了许多对原始的家用电脑中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语句前面)。

有趣的是,BASIC语言最开始的时候是作为一种初学者的语言,微软最初依旧是将Visual Basic定位于向爱好者提供的一种语言,但是在VB 3.0(也是被认为第一个相对稳定的版本)发布之后不久就在小型商业程序的使用中迅速的传播开来。尽管有很多高级的程序员始终在嘲笑它,但是VB正是有效的符合了小型商用程序的要求,即重点是简单的开发,而运行的速度则是次要的因素。在那个时候,Windows 3.1已经是足够的快了,很多商业有关的程序只要不是牵涉到大量的数据,几乎是可以在一眨眼之间完成的,即使使用的是一种非常慢的语言。许多公司的老板发现他们通过很少的一些步骤就可以创建出一个小型的但是有用的程序来满足他们特定的需求。最终,在VB3的冗长的生命周期中,对于Visual Basic知识的掌握成为了一种非常有用的职业技能.这种语言,就像它的前辈QBASIC一样,同时也成为了业余游戏开发者喜爱的语言之一。

20世纪90年代伴随着IBM PC兼容机的广泛流行,更强大的编程语言(例如Pascal和C)跟随主机进入市场,BASIC的受欢迎程度有所下降。从那之后,大多数非程序员用户依赖于预先编写的应用程序,而不是自己编写的程序。如今,BASIC在复古/怀旧计算机爱好者圈子中仍然很受欢迎,但很少有人将其用作主要的编程语言。然而它从未真正消亡——相反,它还在继续发展。

现在针对不同平台还存在着许多其他BASIC版本。在GW-BASIC和QuickBasic之后,BASIC的后代们的延续形式以Visual Basic、Visual Basic for Applications (VBA) 和Microsoft Small Basic等继续存在。微软于1991年推出的Visual Basic成为开发Windows应用程序的主流选择,而VBA广泛用于Microsoft Office应用程序中的脚本编写和自动化。此外,2008年发布的Microsoft Small Basic是一种向初学者授教编程概念的教育软件。与此同时,其他现代编程语言,诸如Python和JavaScript也扮演着与BASIC曾经相似的角色。这些语言优先考虑简单、可读和易用性,使其成为入门编程课程和快速应用开发的热门选择。

计算机技术先驱之BASIC编程语言共同发明人托马斯-库尔茨逝世


2024年11月12日,怀着沉痛的心情向计算机先驱托马斯-库尔茨道别。托马斯-尤金-库尔茨(Thomas Eugene Kurtz,1928 年 2 月 22 日 ~ 2024 年 11 月 12 日),美国数学家、计算机科学家,与约翰-凯梅尼(John Kemeny)共同发明了 BASIC 编程语言和达特茅斯分时系统。他在新罕布什尔州黎巴嫩的一家临终关怀中心去世,享年 96 岁。


在 20 世纪 60 年代学术计算机发展的早期,没有简单的非专业编程语言可供本科生使用。 BASIC 就是针对这一群体而开发的。 为了实现他们的愿景,库尔茨和凯梅尼同时开发了达特茅斯分时系统,让校园里使用电传终端的学生都能访问 BASIC。

库尔茨出生于伊利诺伊州橡树园,1950 年毕业于诺克斯学院,1956 年获得普林斯顿大学数学博士学位。 1951 年,库尔茨有幸在一台计算机上获得了难得的经验--这台计算机是由美国国家标准局制造的首台 SWAC 计算机,位于加州大学洛杉矶分校。 SWAC,即西方标准自动计算机,是美国最早的电子计算机之一,由传奇计算机先驱、2013 年 CHM 研究员哈里-赫斯基(Harry Huskey)指导。

库尔茨获得博士学位后开始在达特茅斯大学任教。 几年后,他和同事约翰-凯梅尼(John Kemeny)教授开发了达特茅斯分时系统(DTSS)的原始版本,这是一种通过网络共享计算机访问的方法,也是允许多个学生访问 BASIC 的要求。


约翰-凯梅尼(左)和托马斯-库尔茨(右),约 1964 年。达茅斯学院图书馆提供

DTSS 是最早成功的大规模分时系统,是一项了不起的成就。 通用电气公司向达特茅斯大学捐赠了计算机,并将 DTSS 扩展到其在线服务(如 Genie)的内核中。1964 年 5 月 1 日,DTSS 与 BASIC 一起亮相。 当年秋天,数百名学生在校园的 20 台终端机上学习 BASIC。


通用电气 GE-225 大型计算机,达特茅斯分时系统的主机,约 1967 年。由达特茅斯学院图书馆提供

自诞生以来,BASIC 语言已在多代计算机中蓬勃发展:从 20 世纪 60 年代的大型机和微型计算机,到 20 世纪 70 年代和 80 年代的微型计算机,再到今天信用卡大小的 Raspberry Pi 计算机。1978 年,哈佛大学学生比尔-盖茨(Bill Gates)和保罗-艾伦(Paul Allen)为面向业余爱好者的新型微型计算机 MITS Altair 8800 编写了第一个版本的 BASIC。他们的 BASIC 版本将 Altair 从一个功能有限的闪烁盒子变成了一台有用的计算机,BASIC 的受欢迎程度在个人计算机时代再次飙升。

1966 年至 1975 年,库尔茨担任达特茅斯凯威特计算中心主任,1975 年至 1978 年担任学术计算办公室主任。1979 年,他与斯蒂芬-J-加兰(Stephen J. Garland)共同组织了计算机与信息系统专业硕士课程,该课程的部分资金由 IBM 提供。

1983 年,库尔茨与凯梅尼以及三名达特茅斯大学的前学生一起成立了 True BASIC 公司,旨在开发高质量的教育软件和独立于平台的 BASIC 编译器。1988 年 CIS 项目终止后,库尔茨重返教学岗位,并于 1993 年从达特茅斯大学退休。

库尔茨曾担任 EDUCOM 理事会主席和理事,以及总统顾问委员会所谓的皮尔斯小组成员。他还担任过两项由国家科学基金会(NSF)和美国航空和航天局(ARPA)支持的活动的指导委员会成员,并担任过第一届 CCUC 教学计算会议的主席。 他帮助组建了美国国家标准委员会 X3J2,该委员会制定了 BASIC 的 ANSI 标准,他从 1974 年到 1985 年一直担任该委员会主席。库尔茨是国际标准化组织 SC22/WG8 委员会成员,该委员会负责制定 BASIC 国际标准,库尔茨于 1987 年至 1993 年担任该委员会召集人。1994 年,他被授予 ACM 研究员称号。

自诞生以来,BASIC 语言已在多代计算机中蓬勃发展 -- 从 20 世纪 60 年代的大型机和小型机,到 20 世纪 70 年代和 80 年代的微型计算机,再到如今信用卡大小的 Raspberry Pi 计算机。1978 年,哈佛大学学生比尔 - 盖茨(Bill Gates)和保罗 - 艾伦(Paul Allen)为面向业余爱好者的新型微型计算机 MITS Altair 8800 编写了第一个版本的 BASIC。他们的 BASIC 版本将 Altair 从一个功能有限的闪烁盒子变成了一台有用的计算机,BASIC 的受欢迎程度在个人计算机时代再次飙升。