为Altair开发BASIC程序

盖茨和艾伦准备编写一个能让发烧友用Altair电脑自己动手写程序的软件。具体来说,他们决定为编程语言BASIC写一个能在Altair的英特尔8080微处理器上运行的解释器。这将成为针对微处理器的第一款商业化本地高级编程语言,并将开创个人电脑软件行业。

他们用带有Traf-O-Data抬头的旧信纸给生产Altair的阿尔伯克基初创公司MITS写了封信,称他们制作了一款能在8080微处理器上运行的BASIC解释器。信中写道:“我们希望通过你把这款软件卖给广大电脑发烧友。”55 这番话里其实是有水分的,因为他们还没有写出任何软件。但两人知道,如果MITS表示有兴趣,他们可以马上动手。

这封信发出去之后便石沉大海,于是他们决定给MITS打电话。盖茨建议艾伦打电话,因为他年纪大一些。但艾伦说:“不,应该你来打,你做这种事情更在行。”两人经过商量各让了一步:盖茨负责打电话(他会在电话中掩饰自己尖细的嗓音),但他要以保罗·艾伦的名义打电话,因为他们知道,如果幸运的话,飞到阿尔伯克基的人会是艾伦。艾伦回忆说:“我留着胡子,看起来至少像个成年人,而比尔看上去还像个十年级学生。”56

当嗓音粗哑的埃德·罗伯茨接电话时,盖茨装出一副低沉的语调:“我是波士顿的保罗·艾伦。我们为Altair电脑制作了一款BASIC软件,很快就要完成了,我们想拿给您看看。”罗伯茨回答说,他接到过很多这样的电话。谁最先带着能用的BASIC软件走进他阿尔伯克基的办公室大门,谁就能拿到合同。盖茨转过身来兴高采烈地对艾伦说:“天哪,我们可以动手了!”

由于他们手头没有Altair电脑,艾伦不得不在哈佛的PDP–10上进行模拟,他们制作Traf-O-Data计算机时用的也是这种策略。于是他们购买了一本8080微处理器的说明书,艾伦只用了几个星期就把模拟器和其他开发工具准备好了。

与此同时,盖茨在黄色标准拍纸簿上疯狂地编写BASIC解释器代码。等艾伦的模拟器准备就绪,盖茨已经写好了程序架构和大多数代码。艾伦回忆说:“我还记得他会用很长时间思考问题,其间时而踱步,时而晃动身体,然后在黄色拍纸簿上记下点什么,他的手指上沾满了五颜六色的记号笔墨水。等我的模拟器准备就绪,他就可以使用PDP–10了,于是比尔就转到终端上,一边盯着他的拍纸簿一边晃动身体,然后,他用奇怪的指法快速输入一堆代码,如此循环往复。他会像这样一连干上许多个小时。”57

一天晚上,他们在盖茨住的柯里尔楼里吃饭,当时坐在同一桌的还有其他一些数学牛人。他们在饭桌上抱怨编写浮点运算例行程序(可让程序有能力处理科学计数法中非常小和非常大的数字和小数)实在太枯燥。[2] 这时,在哈佛当极客的优势就显现出来了。一个来自密尔沃基的卷发男孩蒙特·达维多夫(Monte Davidoff)突然说:“我已经写了一些这样的例行程序。”58 盖茨和艾伦开始向他抛出一大堆问题,看他是不是真有处理浮点代码的能力。结果两人满意地发现达维多夫并没有乱说,于是他们把他带到盖茨的寝室,经过协商决定向他支付400美元报酬。他成了这个团队的第三名成员,最终挣到的钱要比400美元多得多。

盖茨不再理会迫在眉睫的考试,甚至不玩扑克了。他和艾伦以及达维多夫连续8周没日没夜地躲在哈佛的艾肯实验室里,在国防部资助的PDP–10上书写着历史。他们偶尔会休息一下,到哈佛比萨屋或者一家名叫AkuAku的仿波利尼西亚风格餐厅吃顿饭。清晨时分,盖茨有时会趴在终端机上打个盹儿。艾伦说:“有时候他正写着代码,突然身体慢慢前倾,直到鼻子碰到键盘为止。小睡一两个小时之后,他会睁开眼睛,眯眼看着屏幕,眼睛眨巴两下,然后从之前中断的地方开始继续——他的专注力真是非常惊人。”

他们会在便笺本上打草稿,有时候还会比赛,看谁能用最简短的代码执行子程序。其中一个人会喊:“我能用9行执行。”另一个人则会说:“喔,我只要用5行!”艾伦指出:“我们知道,每压缩一个字节,就能为用户留下更多空间,让他们去添加自己的应用。”增强版Altair的内存只有4K,而他们的目标是让这个程序小于4K,尽量为用户留出使用空间(如今,一部16GB智能手机的内存相当于前者的400万倍)。晚上他们会把打印出来的程序带在地板上展开,设法让程序更优雅、更凝练、更高效。59

到1975年2月底,经过8周紧张的代码编写工作,他们终于成功地把程序精简到了3.2K。盖茨说:“问题不在于我能不能写出这个程序,而在于我能不能把它压缩到4K以下并让它以超快的速度运行。这是我写过的最酷的程序。”60 盖茨最后检查了一下程序中的错误,然后命令艾肯实验室的PDP–10吐出一卷打孔带,让艾伦带到阿尔伯克基。

飞机下降的时候,艾伦突然想起还没写加载器,也就是一系列引导Altair将BASIC解释器载入内存的命令。在飞机准备着陆时,他抓起一个便笺本,用英特尔微处理器使用的机器语言写了21行代码,每行都是一个三位的八进制数。等艾伦离开航站楼时已经浑身冒汗了。这时,身穿棕黄色奥司维涤纶西装的艾伦开始在人群中寻找埃德·罗伯茨。最后,他找到了一个有着双下巴,体重足有300磅的彪形大汉,他身穿牛仔裤,系着蝶形领结,开着一辆皮卡。艾伦回忆说:“我本来以为自己会见到某家前沿创业公司身居要职的高管,就像聚集在128号公路(波士顿附近高科技企业云集的环城公路)沿线的那种公司。”

MITS全球总部也和艾伦预想的不太一样。它位于一家租金低廉的购物中心内,唯一一台内存大小满足BASIC运行要求的Altair电脑还在调试。艾伦说,于是他们决定把测试推迟到第二天早晨进行,然后到“一个名叫‘潘乔家’的墨西哥餐馆吃了顿三美元的自助餐,这个价格也吃不到什么好东西”。罗伯茨开车带他去了当地一家喜来登酒店,前台接待告诉他一间房要50美元。但艾伦身上只有40美元,于是,在一阵尴尬之后,罗伯茨不得不替他付了房钱。艾伦说:“我猜我和他预想的也不一样。”61

第二天早晨,艾伦返回MITS去进行这场重要测试。他花了近10分钟时间才载入他和盖茨写的BASIC解释器代码。罗伯茨和他的同事们含笑对视了一下,他们已在怀疑这场演示恐怕要搞砸了。但电传打字机随后开始咔嗒作响。屏幕显示:“内存大小?”MITS团队中有一个人叫道:“嘿,它打出东西来了!”艾伦惊喜万分。他键入了答案:7168(字节)。Altair答道:“好。”艾伦又输入一行命令:“打印2+2”。这是最简单的一个命令,但它不仅能测试盖茨的代码,而且能够测试达维多夫的浮点运算例行程序。Altair的回应是“4”。

到这时为止,罗伯茨一直在一旁静静地观察。他认为自己可以制造出一台发烧友能用而且也能买得起的电脑了,但这种野心已经让他麾下濒临破产的公司背负了更多债务。此时此刻,创造历史的一幕正在他眼前展开。这是软件程序有史以来第一次在家用电脑上运行。他不由惊叫:“哦,天哪,它打印出‘4’来了!”62

罗伯茨邀请艾伦去他的办公室,他同意在所有Altair电脑上安装BASIC解释器并购买相关授权。艾伦承认:“我笑得合不拢嘴。”他带着一台能操作的Altair电脑回到剑桥,安装在盖茨的寝室里,然后他们一起出去庆祝。盖茨像往常一样点了杯“秀兰·邓波儿”,也就是生姜汽水加马拉斯奇诺樱桃果汁。63

一个月后,罗伯茨邀请艾伦担任MITS软件主管。艾伦在霍尼韦尔的同事们认为他考虑接这份工作简直是疯了。他们对艾伦说:“你在霍尼韦尔的工作很稳定,你可以在这儿工作好多年。”但职业稳定并不是那些渴望领导计算机革命的人的理想。于是艾伦于1975年春动身前往阿尔伯克基,一个他刚刚才知道不在亚利桑那州的城市。

盖茨决定暂时留在哈佛继续读书。他在哈佛经历了一场许多最成功的学生都经历过的“成年礼”(当然,这种事只在事后回忆时才会觉得有意思):被神秘的大学行政理事会召去接受处分。盖茨一案是国防部审计员在审查哈佛艾肯实验室那台由国防部资助的PDP–10计算机使用情况时东窗事发的。审计人员发现,这台计算机的多数时长都是一个名叫W·H·盖茨的大二学生使用的。经过一番煎熬,盖茨写了一份材料为自己辩护,叙述他是如何把PDP–10作为模拟器来开发BASIC程序的。最后,学校没有为使用计算机而追究盖茨的责任,但他还是因为让校外人员保罗·艾伦用他的密码登录PDP–10而“受到警告处分”。他接受了这项轻微的处分,并同意把BASIC解释器的早期版本(而不是他和艾伦当时正在编写的改进版)放在公共领域。64

当时,盖茨在他和艾伦的软件合作项目上投入的精力已经超过了他的哈佛学业。1975年春天,他读完了大学二年级,然后飞往阿尔伯克基,在那儿待了一个暑假,并决定秋季继续待在那儿,而不是回校读大三第一学期。在1976年春季和秋季,他回到哈佛又读了两个学期,就在离毕业还有两个学期的时候,他永远告别了哈佛。2007年6月,当盖茨回到哈佛接受荣誉学位时,他在演讲的开头对坐在听众席的父亲说了这样一段话:“有句话我等了30多年才说出口:爸爸,我一直都跟你说,我会回来把学位拿到手的。”65

《创新者:一群技术狂人和鬼才程序员如何改变世界》