跳转到内容

GW-BASIC

维基百科,自由的百科全书
(重定向自GWBASIC
GW-BASIC
实作者Microsoft
发行时间1983年,​41年前​(1983
操作系统DOS
许可证专有
MIT许可证 (v1.0)[1]
启发语言
IBM Cassette BASIC, IBM Disk BASIC, IBM BASICA
影响语言
QBasic, QuickBASIC, MSX BASIC

GW-BASIC是高级程式设计语言BASIC的一个方言版本。这个版本的BASIC最早是微软为康柏开发的,时间应该是在1984年,这一年11月,微软首次为IBM之外的计算机厂商提供OEM版本的DOS,GW-BASIC是作为MS-DOS的一个组成部分问世的。

GW-BASIC在MS-DOS发行版本中,于1991年6月由微软的QBasic所取代。应社群要求公开GW-BASIC源代码,因此2020年5月22日微软开源1983年2月10日的8088组合语言版本(体验)页面存档备份,存于互联网档案馆)。[1]

名称

[编辑]

关于GW的含义,目前有三种说法,一种认为是以微软早期程序员Greg Whitten的名字命名的,一种认为是用微软创始人的名字Gates,William命名的,还有一种说法是开发人员给它取的一个戏称gee-whiz(两个英语的象声词,类似于中文里吆喝牲口的声音)。

特征

[编辑]

GW-BASIC和微软提供给IBM PCBASICA完全相容,所不同的是,后者依赖于ROM中的BASIC直译器,而前者并不需要,所以,GW-BASIC能在众多IBM PC相容机器上运行,这就使它的使用范围随着PC相容机器的推广而扩大。第一个流传范围较广的GW-BASIC版本号为2.0,而最后推出的GW-BASIC版本号为3.23,时间大概是1988年。从那时起,如果没有特殊说明,我们一般所说的GW-BASIC就是指的这个版本。

GW-BASIC运行速度较慢,这在很大程度上是因为它是一种互动式的开发工具——这种开发模式是BASIC的诞生地Dartmouth大学最早提出的。和很多早期的BASIC方言一样,GW-BASIC缺乏很多进行结构化编程所需的语法成分,但是它足够灵活,此外还拥有很多绘图语句和一些简单的发声语句,这就足以使一个程序员用它开发一个简单的游戏软件、商用软件或者诸如此类的东西。它能够在绝大多数PC上运行,这就给那些想要成为程序员的人提供了一个学习如何程式设计的廉价的途径。

GW-BASIC拥有一个简单的集成开发环境(IDE),所有的程式码都必须有一个行号,没有行号的语句被认为是需要立即执行的命令。用户界面中,除萤幕底部的功能快捷键描述和顶部的版权声明外,其他部分都用来显示和编写语句。源文件标准的保存格式是GW-BASIC特有的二进制压缩格式,不过它也提供了一个选项,使得开发者可以用ASCII纯文字格式保存原始文件。GW-BASIC的IDE提供了如下常用命令:RUN(执行目前的程式),LOAD(从磁盘载入源代码),SAVE(把程式储存到磁盘),LIST(显示已打开的程式码内容),SYSTEM(回到操作系统)。它们都可以出现在程式码上,不过除SYSTEM外,上述用法还相当少见。

前面提到,GW-BASIC对结构化程序设计方法的支持非常差,所以对GW-BASIC程式设计者来讲,能够用它写出具备良好结构的程式有很高的难度。在GW-BASIC里,IF/THEN/ELSE条件语句必须在一行内写完,尽管WHILE/WEND已允许包含多行代码;自行定义的函数只能用类似于DEF FNf(x) = <关于x的数学函数> 这样形式的一行语句来编写(例如,DEF FNLOG(base,number)=LOG(number)/LOG(base));变数通常是通过变数名末端的一个表示类型的符号来确定其类型的:A$表示是一个字串,A%表示是一个整数,等等;通过使用DEFINT,DEFSTR等关键字,可以为一组使用相同字首的变数定义预设类型;其他变数其类型预设是单精度浮点数。

尽管GW-BASIC本身不支持结构化的编程,但编程者自己可以利用GOSUB和RETURN语句来实现相当于C语言中的函数调用,同时用DIM语句定义的数组和一个下标变量(可能需要定义更多,以应对INTEGER、STRING等多种不同数据类型)来表示函数参数栈,再用另一个数组和下标变量,用于在调用子函数前保存本函数的本地变量。通过这种方法,即可实现函数调用。

很多GW-BASIC程式设计者都是没有经过训练的,他们往往不明白编写结构简单的程式所能带来的好处,因此就导致滥用GOTO语句的现象,他们往往不愿意使用能完成同样功能的结构化的语句。参见面条式代码

GW-BASIC支援摇杆光笔输入设备英语Light pen,但不支持鼠标。它能够读写磁盘档案、LPT埠和COM埠,也能处理埠事件触发,不过不能处理磁带设备。它还能通过使用PLAY语句或SOUND语句来驱动IBM PC及其相容机器的标准内建喇叭发出声音。

参考资料

[编辑]
  1. ^ 1.0 1.1 Turner, Rich. Microsoft Open-Sources GW-BASIC. Windows Command Line (Microsoft). [May 22, 2020]. (原始内容存档于2021-06-27). 

外部链接

[编辑]