1971年秋季,在盖茨刚刚升入十一年级的时候,湖滨中学与一所女子学校合并了。两校的合并导致班级排课变得非常麻烦,于是校方让盖茨和埃文斯写一个程序来解决这个问题。盖茨知道,学校的课程安排包含几十个变量(必修课、教师课表、教室大小、快班课程、选修课、错时安排、双课时实验课等),操作起来极其困难,于是他拒绝了。一位老师接受了这个挑战,而盖茨和埃文斯负责代他教计算机课。但次年1月,这位老师还没写出可用的程序,就在乘坐一架小飞机时因空难丧生了。盖茨和埃文斯同意接手这项任务。为了从头写出新的程序,他们会在计算机房泡上很多个小时,还常常睡在那儿过夜。到了5月,他们还在挣扎着编写程序,想尽量赶在下一学年开始前完成。
他们要遵守两条规则:在计算机崩溃时要描述他们进行了什么操作,而且不能再进行同样的操作,除非公司让他们这样做。盖茨回忆说:“他们把我们当成找漏洞的猴子。于是我们就用凶暴的方式把计算机用到极致。”PDP–10有三卷磁带,为了让系统崩溃,这些湖滨男孩会让这三卷磁带同时转动,然后让计算机运行十几个程序,尽量占据其内存。盖茨说:“这是很可笑的事情。”20 作为这项测试工作的回报,他们可以随心所欲地编写自己的程序。他们制作了一个带有可掷骰子的随机数生成器的大富翁游戏,痴迷拿破仑(拿破仑也擅长数学)的盖茨则制作了一个复杂的战争游戏。艾伦解释说:“你手下有军队,可以用他们来打仗。这个程序越写越大,最后全部展开的时候,电传打字机纸带足有50英尺长。”21
盖茨有时候会放松一下,去玩极限滑水(包括从跳台上进行干船坞起跳),然后再回到地下工事里继续写代码。他和艾伦相处得很好,不过,当棋风有条不紊的艾伦战胜轻率鲁莽的盖茨时,盖茨会非常恼火。艾伦说:“有一天我把他打败了,结果他火了,把棋都摔到了地上。这种事发生了几次之后,我们就不在一起下棋了。”42
艾伦警告他:“你知道吗,比尔,你到哈佛以后会发现有人数学比你强得多。”
盖茨说:“我发誓在一段时间内不碰计算机了,我努力让自己保持正常。我决定证明自己即使不带一本教科书回家也能门门得A。在这期间,我读了拿破仑的传记和《麦田里的守望者》等小说。”28
这些男孩会乘坐公共汽车去C-Cubed,晚上和周末都待在终端室里。盖茨自豪地说:“我成了中坚分子,没日没夜地在那里工作。”他们会编程编到肚子咕咕叫,然后到马路对面一家名叫“黎明之城比萨店”的嬉皮风格餐馆吃饭。盖茨深深沉迷在编程中。他的卧室里,衣服和电传打字机纸带扔得到处都是。他父母曾试图规定他的作息时间,但没有任何效果。他父亲回忆说:“特雷太投入了,他会在我们上床睡觉之后偷偷从地下室里溜出去,几乎一整夜都泡在那儿。”22
于是,盖茨和艾伦想再深挖一步。要想把握操作系统的架构,他们就必须掌握汇编码,也就是直接与计算机硬件对话的深层命令,比如“Load B”(载入B)、“Add C”(添加C)、“Store in A”(存入A)等。艾伦回忆说:“史蒂夫·拉塞尔发现我对这个感兴趣之后,把我拉到旁边,递给我一本用亮光塑料纸装订的汇编程序说明书,然后告诉我:‘你得读读这个。’”26 他和盖茨会阅读这些说明书,但有时候仍然弄不明白。这时,拉塞尔便会递给他们另一本说明书,告诉他们:“现在该读这个了。”过了一段时间,两人便掌握了集复杂性和简洁性于一体,让操作系统变得强大且优雅的汇编语言。
信息科学公司的高管不太相信他们,于是这四个男孩便带着打印件和程序代码来到波特兰,以证明他们有多么出色。艾伦回忆说:“我们简述了我们的经验,并提交了简历。”当时刚满16岁的盖茨用铅笔把简历写在一张从笔记本上撕下的横格纸上。最后他们接到了一项编写工资程序的任务,该程序要能生成带有正确扣除额和税额的工资表。29
盖茨意识到,要想吃透操作系统,就必须获得源代码(程序员会在源代码中详细说明须执行的每一步操作)。但源代码就像圣杯一样牢牢掌握在公司高级工程师手中,这些湖滨中学的男孩根本拿不到。有个周末,他们发现这些程序员打印出来的纸张被扔在办公楼后面一个很大的垃圾桶里。于是艾伦握紧双手撑了盖茨一把——艾伦说:“他体重不会超过110磅。”——让盖茨跳进垃圾桶,在咖啡渣和垃圾里翻找一沓沓污迹斑斑、皱巴巴的连续打印纸。艾伦说:“我们把这堆珍贵的纸张拿回终端室,钻研了好几个小时。那时候可没有什么罗塞塔石碑(Rosetta Stone,美国多媒体语言数学软件)来帮助我,10行代码我可能只认识一两行,但我已经被源代码的严密和优雅折服了。”
盖茨十二年级时只申请了三所大学(哈佛、耶鲁和普林斯顿),每所大学他都采取了不同的申请策略。盖茨对自己驾驭精英选拔的能力信心十足,他吹嘘说:“我就是为申请大学而生的。”申请耶鲁时,他把自己包装成一个胸怀远大抱负的政治人才,强调他在国会进行的为期一个月的暑期实习。申请普林斯顿时,他只强调自己想做计算机工程师。而在申请哈佛时,他则说他对数学有浓厚兴趣。他还考虑过麻省理工,但在最后时刻放弃面试去玩弹球游戏了。这三所大学都录取了他,最后他选择了哈佛。43
这时,盖茨和艾伦之间的友谊第一次出现了裂痕。该程序不能用BASIC(盖茨最喜欢的语言),而要用比较复杂的COBOL编写。COBOL由格雷斯·霍珀等人开发,是一种标准化商用计算机语言。里克·韦兰懂COBOL,他为信息科学公司的系统写了一个程序编辑器,艾伦很快就掌握了。这时候,两个年纪较大的男孩认为他们不需要盖茨和肯特·埃文斯了。盖茨回忆道:“保罗和里克认为没那么多工作可做,于是他们说,我们不需要你俩。他们认为工作可以由他俩来做,然后计算机时长就全归他们了。”30
于是从那时开始,盖茨便成了老大。盖茨回归队伍之后便坚持把湖滨编程集团改造成一个合伙制组织,他在父亲的帮助下起草了一份协议。当时还只有16岁的盖茨开始自称总裁,尽管一般合伙制企业并没有总裁。随后,盖茨对他们即将赚得的价值18 000美元的计算机时长进行了分割,给艾伦的份额最少。盖茨回忆说:“我把4/11分给自己,4/11分给肯特,2/11分给里克,1/11给了保罗。他们觉得我用11做分母很好玩。保罗太懒了,从来不做任何事情,所以我是这样决定的:里克的贡献是保罗的两倍,而肯特和我的贡献是里克的两倍以上。”32
由于盖茨和艾伦更崇尚软件而不是硬件,两人没能做出可靠的硬件设备也就不足为奇了。他们为这个分析交通状况的制表机写出了不错的程序,但却根本无法让硬件正常运行,尤其是读取交通数据带的装置。有一天,他们认为该设备已经可以顺利运行了,于是,西雅图政府工程部门的一位官员应邀来到盖茨家中观看销售演示。他们在客厅里做演示,可惜演示之神像是要报复他们一样,读带装置不断出现故障。于是盖茨跑去喊他妈妈帮忙。他恳求道:“告诉他,妈妈!告诉他昨天晚上还是好好的!”40
盖茨坐了六个星期的冷板凳,在这期间,他读了些代数书,并且避免跟艾伦和韦兰打照面。盖茨说:“后来保罗和里克发现,哦该死,这是个头疼的问题。”因为该程序不仅要求开发人员有编写代码的能力,还要有人能搞清楚社保扣除、联邦税和州失业保险等问题。“于是他们对我说:‘嘿,我们遇到麻烦了,你能不能回来帮帮我们?’”这时候,盖茨便利用自己的优势要挟了一把。盖茨是这样描述当时情况的:“当时我说:‘好,但你们都得听我的。而且我会逐渐适应这个角色,除非让我掌权,否则从现在开始你们都别想跟我打交道。如果你们让我负责,那么这件事还有我们做的任何事情都要由我说了算。’”31 后来他与艾伦的关系也一直都保持着这种模式。
那年夏天,盖茨和艾伦迷上了英特尔的新款8008微处理器,与4004型“芯片上的计算机”相比,这款微处理器在性能上有了很大提升。当他们在《电子学杂志》上读到一篇介绍8008微处理器的文章时激动万分,以至于盖茨多年后还记得这篇文章刊登在哪一页上。艾伦问盖茨,如果芯片真能像电脑一样可以编程,为什么不为它写一个编程语言呢,比如一种BASIC语言?艾伦认为,如果他们能够完成这个壮举,“普通人就可以买计算机放在办公室里,甚至放在家中使用了”。但盖茨不屑地说,8008微处理器还无法胜任这种任务。他回答说:“它会慢得跟蜗牛一样,会很悲剧的。BASIC本身就要占据几乎所有内存。微处理器的马力根本不足。”艾伦意识到盖茨说得有道理,于是他们都决定等等再说,根据摩尔定律,微处理器的性能每一到两年就会提高一倍。这时,两人在合作关系中扮演的角色逐渐清晰起来。艾伦解释说:“我是出主意的人,是凭空瞎想的人。比尔则会听我说,质问我,然后锁定我最出色的设想,推动它们成为现实。我们的合作关系有种天然的矛盾,但大多数时候都卓有成效,而且非常顺利。”37
担任他们的指导的C-Cubed主管不是别人,正是在麻省理工学院念书时发明《太空大战》的“鼻涕虫”史蒂夫·拉塞尔,他是一位富有创造力又爱挖苦人的程序员。这时,创新的火炬正在传递给新一代黑客。拉塞尔说:“比尔和保罗觉得让计算机崩溃太有意思了,我不得不一再提醒他们不可以再进行同样的操作,除非我们让他们这样做。”23 他说:“我去看他们在搞些什么的时候,他们会问我问题,少则一个,多则五个,而我习惯于给出很长的回答。”24 最让拉塞尔惊讶的是,盖茨能把不同类型的错误和DEC总部特定的程序员挂上钩。盖茨典型的漏洞报告是这样的:“瞧,法博里的这行代码,他又犯了同样的错误,他改变状态的时候没有检查信号量(semaphore)。我们只要在这儿插入这行代码就能解决问题。”25
这时候,埃文斯虽然已经筋疲力尽,但还是决定参加他已经报名的登山训练,而他其实并不太擅长运动。盖茨回忆说:“他报名参加这个登山训练真的很意外。我认为他是想挑战自己。”埃文斯的父亲知道儿子有多么疲惫,他恳求埃文斯取消这次活动,他说:“我跟他的最后一次对话是劝他不要去,但他决心要完成这件事。”这个登山训练班当时在学习如何用绳索攀登一座比较平缓的山峰,其间埃文斯被绊倒了。他想爬起来,但在雪中向下翻滚了逾200码最后摔在了冰川上,他抱紧双臂想保护自己,而正确的做法应是张开双臂。结果他的头撞上了几块岩石,在前来营救的直升机上不幸身亡。
当DEC公司的软件调试完成后,这两个湖滨中学的男孩就不能再免费使用PDP–10了。盖茨表示:“他们大致就是说:‘好了,你们这些猴子回家吧。’”27 这时,湖滨中学母亲俱乐部出手相助了,她们至少是帮了一部分忙。该俱乐部出钱为这些男孩建了个人账户,但有时间和钱数限制。不甘忍受限制的盖茨和艾伦想设法突破这个系统,于是他们弄到一个管理员密码,侵入了内部会计系统文件,并破解了密钥。这样他们就能使用免费账户了。但还没等他们捅出大篓子,两人就被抓住了:他们的数学老师发现他们有一卷电传打字机纸,上面写着所有账户名和密码。这件事一直传到C-Cubed和DEC顶层高管那里,他们派了一个十分严肃的代表团到学校,在校长办公室里开会讨论这件事。盖茨和艾伦垂头做了深刻检讨,但无济于事。他们被禁止在这个学期剩余的时间和整个暑期使用该系统。
盖茨给刚刚在华盛顿州立大学读完一年级的保罗·艾伦打了电话,让他回西雅图帮忙编写排课程序。盖茨对他说:“我本来是要和肯特一起做的,现在我需要你帮忙。”盖茨当时的状态很糟。艾伦回忆说:“比尔一连几周情绪都很低落。”35 在1972年的暑假,他们把折叠床搬到校园里,和以前一样在计算机房熬了许多个通宵,用一台PDP–10计算机来编程。面对课程安排中那些魔方般的变量,盖茨以他缜密的思维把大问题拆解为一系列小问题,然后各个击破。他成功地为自己安排了一节历史课,课堂里有他喜欢的所有女生,而且除他以外只有一个男生,他还设法让他自己以及所有要好的同班同学周二下午都没有课。他们自己做了一件T恤衫,胸前印着一只啤酒桶和“周二俱乐部”的字样。36
为编写出能在8008微处理器上运行的程序,艾伦设计了一种在大型计算机上模拟微处理器的方法。他后来解释说,模拟8008微处理器的做法“反映出技术圈一种人尽皆知的思想,这种思想要追溯到阿兰·图灵20世纪30年代的理论,即任何计算机都可以通过编程来随意模拟其他计算机”。这场炼金壮举还有一个重要意义,也是盖茨和艾伦为计算机革命做出的核心贡献,按照艾伦后来的说法就是:“软件取代硬件成为王牌。”39
湖滨编程集团还有两个学校计算机房的常客。一个是艾伦十年级的同班同学里克·韦兰(Ric Weiland),他是当地一家路德会教堂的辅祭,父亲在波音公司当工程师。两年前他曾在自家地下室里组装了他的第一台电脑。韦兰看上去和躲在计算机房里的其他宅男有很大区别,他帅气逼人,脸型棱角分明,身材高大、肌肉发达,日后他将艰难面对自己的同性恋身份。在20世纪60年代的高中,同性恋还是一个难以启齿的话题。
1973年春季,在盖茨十二年级的最后一学期,他和艾伦被招聘到博纳维尔电力管理局(Bonneville Power Administration)工作,当时,该机构正在全国范围内寻找精通PDP–10的专家来协助其电网管理系统的编程工作。盖茨和他的父母与湖滨中学校长进行了交谈,校长也认为这份工作比最后一学期的课程更有教育价值。而当时在华盛顿州立大学读书的艾伦也有同感。他说:“我们又有机会在PDP–10上一起工作了,而且有报酬!”于是他们挤进盖茨的野马敞篷车,从西雅图往南开了165英里,来到博纳维尔指挥中心。他们不到两个小时就到了,然后在那里合租了一间便宜的公寓。
他们的工作地点是哥伦比亚河上的一个地下工事,与波特兰隔河相望。盖茨回忆说:“他们有巨大的控制室,比我在电视节目里看到的任何控制室都要好。”他和艾伦会坐在那里编写代码,一写就是12个小时甚至更长时间。艾伦回忆说:“当比尔觉得自己没力气了,就会抓起一罐果珍,往一只手里倒一点果珍粉并把它们舔干净,用纯糖来提神。那个暑假他的两只手掌一直都有股橙子味。”有时候,在疯狂工作两天之后,他们会睡上18个小时甚至更长时间,用盖茨的话说就是“大睡一场”。盖茨说:“我们两个会比赛,看谁能在办公楼里连续待三天甚至四天。有些大惊小怪的人会说‘回家去洗个澡吧’,但我们还是坚守在那里写代码。”41
盖茨回答:“不可能,这不可能!”
1968年秋季,当盖茨即将升入八年级时,他和艾伦组建了湖滨编程集团。这个组织从某种程度上来说是一个由极客组成的黑帮。艾伦说:“说到底,湖滨编程集团是一个男生俱乐部,空气里充满争强好胜和睾丸素的味道。”但它很快就变身为一项赚钱的生意,而且具有很强的竞争力。盖茨宣称:“我是其中的推动者,我是那个说‘让我们走进现实世界,想办法卖点东西给他们’的人。”17 艾伦后来有点嫉妒地说:“虽然我们都在努力表现出自己的才华,但动力最强、最有竞争力的那个人是比尔,而且他做得毫不费力。”18
艾伦说:“等着瞧吧。”44
另一名伙伴是盖茨八年级的同班同学肯特·埃文斯(Kent Evans)。埃文斯出生在一个牧师家庭,他外向而友善,笑容灿烂,只是笑起来嘴有些歪斜,因为他出生时有唇腭裂,后来做了手术矫正。他无所畏惧、勇往直前,不论是面对冷不丁打来电话的成年高管还是攀登峭石嶙峋的悬崖。“湖滨编程集团”这个名字就是他取的,目的是从在电子杂志上做广告的公司那里索要免费材料。埃文斯也对商业很感兴趣,他会和盖茨一起阅读每一期的《财富》杂志。他成了盖茨最好的朋友。盖茨说:“我们准备一起征服世界。我们曾在电话里聊个没完,我至今还记得他的电话号码。”19
湖滨编程集团在1968年秋季接到了第一份工作。当时华盛顿大学的一些工程师在一家废弃的别克车行里成立了一家从事分时业务的小公司,名叫“计算机中心公司”(Computer Center Corporation),昵称C-Cubed。他们向DEC公司购买了一台PDP–10型计算机(这是一台多功能大型计算机,注定要为蓬勃发展的分时行业立下汗马功劳,同时也将成为盖茨最喜欢的计算机),计划向波音公司等客户出售分时服务,客户可以通过电传打字机和电话线来连接主机。C-Cubed有一名合伙人的孩子在湖滨中学上学,她交给盖茨这帮人一项工作,这项工作有点像找一群三年级学生在巧克力工厂试吃。他们的任务是:晚间和周末在这台新的PDP–10上开足马力编程和玩游戏,想用多久就用多久,以发现哪些操作会让这台计算机崩溃。根据C-Cubed与DEC公司的协议,在这台计算机的漏洞全部清除并能稳定运行之前无须支付租金。不过,DEC公司并没有想到做测试的是湖滨编程集团这帮鲁莽的毛头小伙。
盖茨和艾伦开始认识到计算机操作系统(就像计算机的神经系统一样)的重要性。艾伦解释说:“操作系统做的是让中央处理单元进行运算的“后勤”工作:在程序之间进行切换;把存储空间分配给各个文件;让调制解调器、磁盘驱动器和打印机输入和输出数据。”PDP–10的操作系统软件名为TOPS–10,拉塞尔准许盖茨和艾伦阅读说明书,但不允许他们把说明书带回家。于是两人有时候会在公司研读说明书,一直到破晓时分。
湖滨中学的校长给盖茨家打了电话,盖茨被叫到他父母的卧室,从他们那儿得知了这个消息。[1] 悼念仪式由湖滨中学的艺术老师罗伯特·富尔格姆(Robert Fulghum)主持,他和埃文斯的父亲一样,也是一位牧师,后来成为畅销书作家(《那些人生中最重要的道理我在幼儿园里都学过了》一书就是他写的)。盖茨说:“我从来没有考虑过死亡问题。我本来是要在悼念仪式上发言的,但我站不起来。连着两个星期,我都是什么也做不了。”后来,他花了很多时间陪伴肯特的父母。他说:“肯特是他们的心肝宝贝。”34
盖茨一开始也想让自己的份额比埃文斯略多一些。但他说:“肯特根本不会让我得逞。”埃文斯和盖茨一样有生意头脑。他们完成工资程序后,埃文斯在自己那本有详细记录的日记上写下一段话:“周二我们要到波特兰交付程序,另外,用他们的话说,还要‘为今后的工作制定一项协议’。到目前为止,我们做的每件事都是为了学习和获得大量昂贵的时长。从现在开始,我们也想获得一些金钱上的利益。”33 双方进行了紧张的谈判,由于程序缺少文档,信息科学公司一度想收回一些原定支付给他们的计算机时长。但盖茨的父亲写了封信给该公司,帮助他们解决了争议并商定了新的协议。
湖滨编程集团的活动中断了近一年。到了1970年秋季,湖滨中学开始向俄勒冈州波特兰的信息科学公司购买PDP–10计算机分时服务。这项服务价格不菲,一小时高达15美元。盖茨和他的朋友们很快就掌握了侵入系统并免费使用的方法,但这次他们又被抓住了。于是他们改变了策略:他们给信息科学公司写了封信,表示愿意提供服务,以换取免费的使用时间。
盖茨拿到了一项为一家公司分析交通模式的合同(这家公司会统计有多少辆车驶过横贯马路的橡胶管,以分析交通模式)。他和艾伦决定组装一台能处理原始数据的专用计算机。盖茨为这个新创业项目取了个没什么品位的名称,叫Traf-O-Data(交通数据公司)。两人来到附近一家Hamilton Avnet电子用品商店,鼓足勇气掏出360美元现金,购买了一枚8008芯片。艾伦还能生动地回忆起当时的情景:“店员递给我们一个小小的硬纸板箱,我们当场把箱子打开来想一睹为快。打开铝箔包装纸,有个长约一英寸的长方形薄片卡在一个小小的黑色绝缘橡胶板里,这就是8008微处理器。对两个在成长的关键期用大型计算机编程的人来说,这简直是一个见证奇迹的时刻。”盖茨对店员说:“我们花了这么多钱就买到这么小的一个东西。”但他和艾伦都了解这枚芯片的价值,他们知道,这枚小小的芯片中包含一整台计算机的大脑。盖茨回忆说:“这些人觉得,两个孩子进来买一个8008微处理器简直是最奇怪的事情。而我们拆开箔纸的时候则是提心吊胆,生怕把这玩意儿给弄坏了。”38