第五章 计算机中的精灵 BASIC语言探源

如果有人扼杀了比尔·盖茨,微机产业的发展进程将会倒退两年。

——早期计算机零售商迪克·海泽

虽然业余计算机爱好者兼企业家开发的微处理器和原始的微机确实将计算能力赋予了普通人,但是只有依靠BASIC编程语言,他们才能利用这种计算能力。达特默思学院的两位教授为了寻求一种更好的办法,使他们的学生能够使用计算机,便利用全国科学基金会提供的经费,于1964年推出了BASIC语言。由约翰·凯门奈伊和托马斯·库尔茨开发而成的这种语言是一种能够迅速见效的产品。与用FORTRAN语言进行编程时的缓慢、烦琐和复杂的过程相比(FORTRAN是当时比较常用的计算机语言),BASIC给人以快捷而方便的快感。

在接下来的两年中,全国数学教师委员会就究竟支持FORTRAR还是BASIC作为标准教学语言的问题展开了争论。FORTRAN广泛用于科学计算,因此比较适合执行大型计算任务,而BASIC的特点是学习起来非常容易。鲍勃·奥尔布雷克特是BASIC语言的积极支持者,作为儿童计算机教学的先驱者,他一向不喜欢FORTRAN语言。在使教学者认识到计算机能够帮助学生学习的过程中,个人计算机和BASIC语言是两个最重要的产品。

鲍勃·奥尔布雷克特开发软件并不是为了实现个人野心。他一向致力于让孩子们对计算机产生兴趣,当Altair计算机问世时,他自问道:“如果能够开发出一种小型BASIC语言,使之能够放入2K内存中,并且适合孩子们使用,这不是很好吗?”这种软件可以放入Altair计算机有限的4K内存中,并且可以立即使用。

奥尔布雷克特请他的朋友、计算机学教授丹尼斯·艾利森从事小型BASIC的开发。《人民计算机公司》和《多布博士》杂志刊登了软件开发进展情况的报道。艾利森在报道中称:“小型BASIC项目的开发,表明我们试图为计算机业余爱好者提供一种更便于使用的语言以及用于对程序进行加密的方法。”在早期的一份《人民计算机公司》的新闻通讯中,艾利森与“其他一些人”讲述了他们要达到的目标:

假定你今年7岁,并不关心浮点运算、对数、正弦、矩阵求逆和核反应堆等计算。你的家用计算机运算能力比较小,内存也不多。也许这是一台Mark-8或Altair8800计算机,内存不到4K字节,并且配有一台TV打字机用于数据输入和输出。

你想使用这台计算机做家庭作业,进行数学演算,并且用它玩数字、星星、陷阱、赫克尔(HURKLE)、斯纳克(SNARK)和巴格尔斯(BAGELS)等游戏。

那么你应该考虑使用小型BASIC软件。

《多布博士》杂志和《人民计算机公司》的读者考虑的不仅仅是小型BASIC语言,他们想得更远。他们将艾利森开发的程序当做一个起点,并对它进行修改,创建出功能更强的语言。这些早期的小型BASIC语言使得许多程序员能够开始使用微机。其中最成功的两个版本是汤姆·皮特曼和王利成(Li-chen Wang)开发的。而皮特曼像英特尔公司的工程师一样,对微处理器有着清楚的了解,因为他曾经为4004微处理器编写过程序。皮特曼和王利成之所以取得了成功,原因是他们实现了小型BASIC语言的既定目标,为用户提供了一种比较简单的语言。小型BASIC语言的开发者并不想用它作为发财致富的工具。当时另一种功能更强的BASIC语言也在开发之中。1974年秋,比尔·盖茨离开华盛顿进入哈佛大学。盖茨的父母一直想让他读法律,而此时他们终于认为他找对了前进的目标。

虽然盖茨相当聪明,但是他发现与他同住一起的一位数学系学生比自己还要机灵,当这位同学跟盖茨说,他不打算读数学而想改修法律时,盖茨感到非常吃惊。盖茨想:“如果这个同学不学数学,我肯定也不学。”经过选择,盖茨投入了心理学课程的学习,而选修研究生的物理和数学课程,晚上则长时间玩扑克。

后来,1975年1月号的《大众电子学》杂志刊登了介绍Altair计算机的封面报道。盖茨的朋友保罗·艾伦手里拿着这篇文章,穿过哈佛广场,来到盖茨面前,说:“你瞧,微机终于问世了!我跟你说过,它一定会问世的!我们一定要抓住这个机会!”盖茨不得不承认他朋友的话是对的,看来他们一直要找的东西终于被找到了。

盖茨马上打电话给MITS公司,声称他与合伙人有一种BASIC语言可以用于Altair计算机。当MITS公司的老板埃德·罗伯茨问盖茨何时能来阿尔伯克基展示他的BASIC语言时,盖茨看了看他的朋友,深深地叹了口气,说:“好吧,再过两三个星期。”盖茨放下电话,转身对保罗·艾伦说:“我想我们该去买一份说明书。”于是他们径直来到一家电子设备商店,买了一份亚当·奥斯本写的关于8080处理器的说明书。

在接下来的几个星期里,盖茨与艾伦夜以继日地从事BASIC语言的开发。当他们编写程序时,他们设法确定适用的BASIC语言的起码特性,这与奥尔布雷克特和艾利森面临的问题相同,差别在于小型BASIC可以用于各种不同的计算机。盖茨和艾伦不受这方面的限制,他们可以将BASIC语言搞成自己想要的任何形式。BASIC语言或其他任何软件都不存在固定的产业标准,因为当时它还没有形成一个BASIC软件产业。通过自己确定BASIC语言的要求,盖茨和艾伦制定了一个大约持续6年的未来软件开发模式。他们没有对市场展开调研,而只是在开始时规定了将什么特性放入他们的软件。

两个人全身心投入了这项软件的开发,编程工作每天都要进行到夜深人静的时候。盖茨甚至牺牲和放弃了夜间打扑克的娱乐活动。有时他们工作着就打起了瞌睡。有一次艾伦看到盖茨打瞌睡脑袋碰到键盘,突然醒过来,朝屏幕看一眼,又立即开始键入操作。艾伦想,他的这位朋友肯定是睡着时进行编程的,醒过来之后又继续干下去。

他们两人就在终端旁边睡觉,经常一边吃饭,一边讨论BASIC的问题。一天,在盖茨就读的哈佛大学宿舍区的餐厅里,他们讨论起某些数学例程的问题,这些子程序可以用来处理BASIC需要的非整型数运算。这些浮点运算例程编写起来并不难,但是他们都不太感兴趣。盖茨说他不想编写这些程序,艾伦说他也不想干。这时,从桌子的另一端传来一个着急的声音:“我编写过一些浮点运算例程。”两人都把头转向这奇怪的声音传过来的方向,这就是在校园餐厅用午餐时马蒂·达维多夫加入他们编程小组的故事。

在BASIC语言的开发过程中,盖茨、艾伦或达维多夫都没有见过Altair计算机。他们在一台大型计算机上编写BASIC语言,然后用艾伦编写的在大型机上模拟Altair计算机的程序对BASIC进行测试。到了一定的时候,盖茨打电话问埃德·罗伯茨,Altair如何处理键盘键入的字符,罗伯茨得知他们真的在认真开发这个项目,感到非常惊奇,于是他又打电话给负责电路板技术的专家比尔·耶茨,耶茨对盖茨说,他是第一个提出这种重要问题的人。他对盖茨说:“也许你们真的能够搞出点名堂。”

6个星期后,盖茨和艾伦认为这个项目的开发已经接近尾声。他们将这个情况电话告诉了罗伯茨,罗伯茨请他们去展示开发的成果。当艾伦和盖茨对BASIC语言进行收尾工作时,艾伦订了一张飞机票。在艾伦准备乘坐第二天早晨6点钟飞赴阿尔伯克基的航班的头天晚上,他们仍在忙于BASIC的工作。大约凌晨1点时,盖茨叫他的朋友去睡几个小时,等他醒来的时候,装有BASIC语言的纸带就准备好了。艾伦接受了盖茨的好意,当他醒来时,盖茨将纸带递给了他,并且说:“谁知道这东西行不行?祝你好运。”艾伦用手打了3下响指,急忙去赶飞机。

艾伦对自己和盖茨的能力充满信心,但是当飞机接近阿尔伯克基上空时,他的心里却犯起了嘀咕,他担心他们的软件中会不会漏掉了什么东西。飞机就要降落的时候,他突然想起,他们没有编写加载程序,以便从纸带上读取BASIC。如果没有这个加载程序,艾伦将无法将BASIC加载到Altair计算机中去。在模拟的Altair计算机上,这不是个问题,因为这种模拟并不那么精确。艾伦找出一张废纸,当飞机降落时,开始用8080机器语言编写加载程序。就在飞机落地的一刻,他已经草就了一个加载程序。现在他不再担心BASIC语言,却又开始担心起这个草草编成的加载程序。

这时艾伦已经没有时间担心这担心那了。罗伯茨已经在约定的时间来到机场迎候他。埃德·罗伯茨不拘礼节,开了一辆小型运货车来接艾伦,这使艾伦非常惊奇。他原想一定有一位身着制服的人开一辆漂亮的汽车来迎接他。同样使他惊奇的是MITS公司总部破旧的外观。罗伯茨将艾伦引进房间,对他说:“我们到了,这就是Altair计算机。”

在他们面前的一张凳子上,放着配有当时世界上最大内存的微机,这台微机拥有7K内存,放在7块1K内存板上,它正在运行一个程序,通过将随机信息写入计算机内存并读取信息,对内存进行测试。内存需要测试,不过这个程序并不是他们拥有的惟一测试程序。程序运行时,Altair计算机上的所有指示灯都在不停地闪烁。这一天他们刚刚使它用7K内存进行工作。

罗伯茨建议将BASIC的测试推迟到次日再进行,然后让艾伦住进了“阿尔伯克基最昂贵的饭店。”第二天,由于艾伦没有携带足够的钱来支付饭店住宿费用,因此不得不由罗伯茨掏钱。

这天上午,当机器开始运转时,艾伦屏住了呼吸,他用了大约5分钟时间装入纸带。他拨动Altair计算机上的开关,输入启动程序的起始地址。当他拨动计算机的“运行”开关时,他心里想:“如果我们在某个地方出了差错,比如在汇编程序或解释程序中出错,或者我们对8080中的某个问题没有搞懂,那么这个程序就无法运行。”他急切地等待着结果。

“它打印出了‘内存大小是多少?’这个消息”罗伯茨说道。“这是什么意思?”

对于艾伦来说,这意味着他们的程序能够运行。若要打印这个消息,至少要有75%的代码是正确的。他输入内存大小——7K,又键入“PRINT2+2”(输出2+2的结果)。机器打印结果为“4”。

罗伯茨相信这个程序确实能够运行,然后又要求艾伦增加一些他认为BASIC必须拥有的附加特性。几个星期后,罗伯茨委任艾伦担任MITS公司软件部主任之职,艾伦欣然接受了。

盖茨认为在哈佛大学读书不如到MITS公司工作有意思,于是他转到朋友艾伦的手下工作。虽然盖茨从未成为MITS公司的专职员工,但是他的大部分时间是为MITS公司工作。后来他和艾伦发现,除了Altair计算机用户外,还存在着更大的软件市场。因此两人与埃德·罗伯茨签订了一份BASIC语言的使用特许权协议,同时着手寻找BASIC语言的其他客户。这时,盖茨和艾伦开始将他们的企业称为微软公司。