把编译型BASIC带给个人电脑用户

微软于1985年推出QuickBASIC 1.00,面向IBM PC及其兼容机上的DOS编程。微软后来整理的美国产品史把5.25英寸软盘版首发日期列为8月18日。这个日期指产品发行;原盘中README.DOC署于7月18日,反映的是发行前的说明文档。

QuickBASIC保留BASIC较熟悉的语句形式,同时提供生成可执行程序的编译工具。程序员可以用它编写数值计算、文本处理和文件操作等应用。Ethan Winer记载,1.0版标价99美元,使这套编译型BASIC能够面向比专业开发者更广的个人电脑用户。

参考:[1] [3] [4]

从BASCOM演进的微软团队

QuickBASIC不是另起炉灶的一门语言。参与微软编译器产品线的格雷格·惠滕曾与蒂姆·帕特森开发IBM BASCOM 1.0的编译器及运行时系统。惠滕在1987年的访谈中说明,团队在BASCOM 2.0中加入子程序、图形支持和较大数组,再从这个产品派生出QuickBASIC 1.0。

这条技术路线一方面延续BASICA用户熟悉的输入输出和硬件行为,另一方面增强较大程序的组织能力。惠滕指出,BASIC的运行时不仅处理算术,还要了解机器启动程序时的屏幕模式等状态,才能正确维持原来交互环境中的行为。编译器背后因此需要一套复杂的运行支持。

参考:[2]

编辑、编译与链接分别进行

最初的1.0版尚未带有内置编辑环境。发行盘列有BASCOM.EXE编译器、LINK.EXE链接器,以及BCOM10.LIB、BRUN10.LIB和BRUN10.EXE等库与运行支持文件。用户先准备源程序,再通过编译和链接建立可执行文件;原始说明甚至允许使用Microsoft Word编写程序,由编译器忽略文档格式信息。

编译并不意味着把每条高级语句都展开成一大段独立机器指令。简单运算可以直接转换,打印文字和打开文件等较复杂操作则调用运行库中的例程。程序采用独立链接还是外部运行支持,会影响可执行文件的大小和运行时所需文件,发布程序时也须把这些依赖考虑在内。

参考:[2] [3] [4]

示例中的命名子程序和动态数组

发行盘将示例与手册第九章的对应语句说明配套。SUB.BAS用于演示SUB、SUB END和SUB EXIT所构成的命名子程序,DEFFN.BAS演示多行函数,REDIM.BAS演示动态数组的重新分配和ERASE操作。

这些示例把程序组织、函数定义与数组管理分别展示给使用者,便于在编译器中试验手册所讲的功能。

参考:[3]

旧程序与操作系统的边界

为了帮助解释型BASIC用户迁移,微软附带REMLINE.BAS,去掉旧程序中没有被引用的行号。对文件访问,1.0版说明补充了OPEN的访问权限和锁定方式,用来控制其他进程能否读取或写入已打开的文件。

这些功能同时受到操作系统条件限制。LOCK、UNLOCK等操作虽然可以通过编译,但只有在MS-DOS 3.00及以上环境中才能正常执行;3.00还须运行SHARE程序。源码被编译器接受,与生成的程序在目标机器上能够正确工作,仍是两个需要分别检验的问题。

参考:[3]

1986年加入编辑环境

QuickBASIC 2.0在1986年加入内置编辑环境、多行块式IF语句和增强型图形适配器支持。惠滕解释,这一版以C语言编写编辑外壳,让编译器和运行支持留在内存中,并增加直接向内存生成目标代码的能力。编辑、编译和试运行因而更紧密地连接起来。

1987年的3.0版进一步加入SELECT CASE、DO LOOP和简单调试功能;同年4.0版引入线程化p-code,使编辑环境能即时检查输入行并迅速运行程序。后来为人熟悉的QuickBASIC集成开发方式,是在1985年编译器产品的基础上逐版形成的。

参考:[1] [2]