第五章 计算机中的精灵 其他BASIC语言
研究计算机科学最初是美国海军提出来的想法。
——软件开发先驱戈登·尤班克斯
早期的个人计算机产业只有一种操作系统占据着一统天下的地位,这就是基尔多尔的CP/M操作系统。相比之下,语言系统的情况则不同,由于创建新的BASIC语言功能比较容易,因而导致两种较高级语言之间展开了竞争。一种是盖茨和艾伦开发的BASIC语言,另一种是海军研究生院计算科学教授加里·基尔多尔的学生开发的。
1976年,一位名叫戈登·尤班克斯的年轻核子工程师在美国海军即将服役期满。入伍前,他曾作为一名系统工程师在IBM公司工作了9个月,海军为他提供了一份奖学金,让他在加州帕西菲克格罗夫的海军研究生院进修计算机学的硕士学位。他想,为什么不去呢?这是个千载难逢的好机会。
对于尤班克斯来说,与大多数最初显得很有吸引力的事情相比,上课是比较枯躁乏味的。他的深度近视眼镜以及他那轻声轻气的说话样子与他喜欢冒险的性格完全不相称。尤班克斯非常喜欢他在海军快速攻击核潜艇上的工作。他的朋友、软件设计员艾伦·库珀对他的评语是:“戈登非常喜欢紧张的冒险性工作。”
戈登的学习也很刻苦。当他来到海军研究生院时,不久就听说有一位名叫加里·基尔多尔的从事编译程序理论教育的教授。人人都说基尔多尔是个最严厉的老师,因此尤班克斯想,自己可以从这位教师那里学到真正的知识。对于尤班克斯来说,他在基尔多尔班上的刻苦学习得到了应有的收获。他对微机产生了浓厚的兴趣,并且在教室后面的实验室中度过了大量的时间,研究基尔多尔从英特尔公司拿到的计算机。当尤班克斯请他的教授为他选择一个毕业论文课题时,基尔多尔建议他扩充和修改基尔多尔已经着手研究的BASIC解释程序。
尤班克斯开发而成的BASIC语言称为BASIC-E,它与微软公司的BASIC之间存在着一个重要的区别。微软的BASIC是个解释语言,它的语句可以直接翻译成机器代码,而尤班克斯的BASIC是个伪编译语言。这意味着用BASIC-E语言编写的程序必须翻译成中间代码,然后再由另一个程序将中间代码翻译成机器代码。俄亥俄州立大学开发的一种BASIC编译程序也采用了与此相同的基本思路。
每种方案都有它的优点,但是BASIC-E具有一个重大的优越性。由于它的程序可以用中间代码版本来销售,而这种代码是人们无法阅读的,因此用户只能使用该程序,而无法修改它,也无法了解它内含的编程思路。这样,软件开发商在用BASIC-E编写和销售程序时就不必担心他们的编程思路被他人窃取。有了伪编译BASIC后,才可以从事真正的软件销售。
就尤班克斯而言,BASIC-E仅仅是他的一个学术研究项目。他将BASIC-E公布后,便返回海军去执行一项新的任务。不过在他前往执行新任务之前,他要进行两个重要会面。首先要与两位年轻的编程员艾伦·库珀和凯思·帕森斯进行会面,两人都想开办一家应用软件公司,用他们的话来说:“每年可赚5万美元。”他们想要得到他的BASIC-E语言,因此尤班克斯为他们提供了一个源代码拷贝,并且再也不想见到他们。
在海军研究生院的另一名退学学生格伦·尤因的鼓动下,尤班克斯访问了IMSAI公司,以便了解一下这家年轻的微机公司对他开发的BASIC语言是否有兴趣。结果发现IMSAI公司对此并无兴趣(至少开始时没有兴趣),不过尤班克斯并不感到失望。过了一段时间,他收到IMSAI公司发来的一封电报称,该公司软件部主任罗布·巴纳比想要见他。此后不久,即1977年初,尤班克斯便与IMSAI公司的市场部主任西摩·鲁宾斯坦洽谈签订了一份合同,为该公司的8080微机开发一种BASIC语言。洽谈中鲁宾斯坦对尤班克斯提出了十分苛刻的条件。最后尤班克斯同意为IMSAI公司开发BASIC语言,并且为IMSAI公司提供该语言的有限分销权,以换取一台IMSAI计算机和一些其他设备。尤班克斯仍然拥有BASIC的所有权。
这笔交易对尤班克斯来说显得有失公平,这是他做的第一笔软件交易,他还很不成熟。正如艾伦·库珀所说:“戈登说,‘他们还给了我一台打印机呐!’”不过尤班克斯希望的不只是挣一台打印机那样的设备,他梦想用他的BASIC语言赚上1万美元,这样他就能在夏威夷买上一幢房子。
1977年4月,在旧金山举办了首届西海岸计算机博览会。尤班克斯与他原来的教授加里·基尔多尔共用一个展台,展出了他的BASIC-E语言,这时基尔多尔已经创办了数字研究公司。艾伦·库珀和凯思·帕森斯也参加了这次博览会,并且与尤班克斯再次相见。他们称,他们对尤班克斯的BASIC语言作了一些修改,并且已经着手开发一些商务应用软件,尤班克斯则问他们对他的IMSAI开发项目有何建议。此后不久,三个人决定展开合作。当尤班克斯修改BASIC语言,罗布·巴纳比对它进行测试时,库珀和帕森斯便开始在结构性系统集团公司的名义下编写总分类账软件,也许这是最早用于微机的真正商务软件。
与微软的BASIC语言一样,尤班克斯的BASIC语言开发也是需要经常加班加点到深夜的紧急开发项目。库珀和帕森斯要开车前往加州瓦列霍市库珀的家里,一直干到凌晨3点钟,一边喝着可口可乐,一边思考大量的程序清单,设法确定哪些程序语句要放入BASIC语言。与盖茨和艾伦曾经做过的工作一样,尤班克斯主要根据自己的判断来确定BASIC语言的内容,有时所作的选择并无十分科学的依据。他们仿佛与世隔绝地待在瓦列霍的屋子里,艾伦·库帕望着代码,突然建议说:“你为什么不加上一个WHILE循环?”这是经常使用的一种编程语句。尤班克斯则回答说:“我认为这很好,”于是就将这个语句放入程序。
许多个不眠之夜没有白熬,尤班克斯终于开发成功CBASIC语言,这使他能够在后来创办他自己的编译器系统公司,库珀和帕森斯的结构性系统集团公司成了他的第一个分销商。但是尤班克斯不知道他的BASIC语言究竟应该卖到什么价钱。库珀和帕森斯建议定价为150美元,基尔多尔建议定价为90美元,这是CP/M最初的售价。尤班克斯将两种价格粗略地平均了一下,最后定为100美元。
他们还必须给这个产品做一个包装,写一份说明书。库帕与尤班克斯写出了说明书,并且印刷了500份。他们很快接到一个需要400份说明书的订单,因此不得不重印一批。他们知道产品的销售工作正在顺利进行着。
戈登·尤班克斯真的在夏威夷购置了一套房子。实际上他低估了他能从CBASIC语言销售中得到的盈利数目,他也同样低估了夏威夷住宅的价格。
这时,一个软件产业刚刚开始形成,不过它的地基上已经垒上了一些砖块。另一个砖块既有别于BASIC,也不同于CP/M。