还有一位同样出众的黑客,他也用与众不同的方式掌握了PDP-1计算机。他的口才比格林布莱特好,他能够更加有条理地讲清楚计算机是如何改变了他的生活以及可能怎样改变所有人的生活。这名学生就是比尔.高斯珀。他比格林布莱特早一年进入MIT,但迷上PDP-1计算机的时间却比格林布莱特晚。高斯珀身材消瘦,五官特征和鸟类相近,戴一副既厚且大的眼镜,褐色的头发又脏又乱。虽然其貌不扬,但是只要跟他有过短暂的接触,你一定会相信这个人的聪明才智绝对可以将事物之间的微妙关系(包括他自己的五官面貌)处理得井井有条。他是一个数学奇才。可以说,研究数学(而不是系统)的愿望使他对计算机产生了兴趣。格林布莱特和其他才华横溢的以研究各种系统为目标的学生们现在已经建立了一个全新的Pro je c t MAC项目,这些人就好像长机,而高斯珀则在很长的时间内扮演他们的僚机,两者相辅相成,翱翔长空。
高斯珀是新泽西州彭索金镇人,他的家与费城仅一河之隔。在来MIT就读前,他对计算机的接触也仅限于从玻璃窗后面观看巨型机的操作而已,这一经历与格林布莱特一样。他还清楚地记得在费城的富兰克林学院看到一台Univac(通用电子计算机)
在与它相连的行式打印机上打印出本杰明。富兰克林的相片。高斯珀根本不明白原理是什么,但是觉得特别有趣。
就在他进入MIT的第二个学期,他有生以来第一次亲自动手操作了计算机。他选修一门由约翰.麦卡锡大叔亲自讲授的课程——这门课仅对大一学生中上学期的平均成绩较高的学生开设。这门课程由FORTRAN语言开始,接着讲到IBM机器语言,最后也涉及一些PDP-1计算机的有关知识。不过这位教授留给他们的作业却很难,例如用7090计算机跟踪穿过光学系统的光线轨迹,或在PDP-1计算机上用新的浮点解释器编几段代码等。
来自编程的挑战大大激发了高斯珀的兴趣。经过在IBM计算机上的批处理折磨以后,PDP-1计算机对他来说就像兴奋剂令他欲罢不能,令他不知疲倦。多年以后,高斯珀在谈到那时的心情时,兴奋之情仍溢于言表:“你会一把将键盘抱在怀里,就好像那是一个有血有肉的人,然后让这台计算机在几毫秒内对你的动作做出反应……”
不过,在这门课程结束以后,高斯珀还是对继续在PDP-1计算机上探索采取小心谨慎的态度。那时他已是数学系的学生了,数学系的人一直告诫他只有远离计算机才能变得聪明——显然,数学系的人想把他变成一名牧师。高斯珀发现数学系有一条非正式的口号——“世界上根本没有‘计算机科学’——那是巫术!”好吧,高斯珀就想做一名巫师!他报名参加了明斯基讲授的有关人工智能的课程。这门课又要求用PDP-1计算机了,而这一次,高斯珀对钻研计算机本身产生了浓厚的兴趣。在那个学期中,他曾写了一个在屏幕上绘制函数的程序,这是他做的第一个真正的项目。
其中一个子例程中有一段代码写得非常巧妙,他大着胆子拿给阿伦.考托克看。那时考托克已经非常有名了,高斯珀认为他如有神助,这种判断不仅来自他在PDP-1上的辉煌成绩和TMRC那些人的反应,而且还因为考托克在DEC公司有一项重要的工作,就是设计比PDP-1更加先进的新型计算机。考托克仔细检查了高斯珀的代码,认为他编写得非常不错,完全可以拿给其他人看。高斯珀高兴极了。“考托克也认为我编的程序很不错!”于是他就信心百倍地开始编写更多的程序。
在这个过程中,他的一个重大课题就是尝试着“解决”一款名叫P e g S o l i t AI r e(HI-Q)游戏中的难题。这款游戏的棋盘是一个加号的形状,上面有33个小孔。除了中间那个孔以外,每个小孔里都有一枚棋子(peg)。当一枚棋子跳过另一枚棋子时,可以将经过的那枚棋子(后者)“吃掉”。最终的目标是在棋盘的正中间只留下一枚棋子。当高斯珀和其他两位同学向明斯基提出请求,由他们用PDP-1计算机来解决这个问题时,明斯基虽然并不认为他们能够完成这个课题,但还是鼓励他们不妨尝试一下。最后,高斯珀和他的朋友们完成了任务——“我们把其他的棋子都吃光了。”他后来说。其实这几个人还编了一个程序,让PDP-1计算机在一个半小时内解决了这个游戏中的难题。
高斯珀非常欣赏计算机解决Peg Solitarie游戏(HI-Q)7难题的方法,因为这种方法不是靠直觉来决定行动方案的。计算机程序使用的各种技巧看上去似乎不太合适,但却能够在该场合下利用深奥的数学原理来解决问题,这一点让他对计算机程序充满了深深的敬佩。这种和直觉背道而驰的解决方法源自于对无数数学关系之间神秘联系的理解,而这些数学关系正是程序编写的基础所在。找出那些数学关系就是高斯珀要做的,也可以说他要在计算机上以另一种方式进行数学研究。随着对PDP-1的接触越来越多以及参与TMRC的工作日益增多,他成了一名大家不可或缺的首席“数学黑客”——他虽然对系统程序没有太大的兴趣,但是他能够给大家提出一些思路极其清晰的(非直觉的!)算法,这些算法很可能会帮助系统黑客去除某个子例程中的几条多余指令,或者令大家顿开茅塞,走出思维的误区。
……
高斯珀和格林布莱特分别代表了TMRC的成员以及钻研PDP-1计算机的黑客中两种不同的研究类型:格林布莱特专注于具备实用价值的系统建设,高斯珀则侧重于数学方面的探索。这两类人都对对方的长处心悦诚服,他们会一起参与项目,密切协作,在各自擅长的领域内力争做到最好。不仅如此,这两类黑客共同对科技广场大楼第9层所孕育的、虽处于萌芽期但已经蓄势待发、准备怒放的黑客文化之花做出了重要贡献。在各种因素的共同作用下,就是在这间技术温室中,他们的文化慢慢变得枝繁叶茂,将黑客道德推向了一个前所未有的极致。
这些黑客的行动辗转于几个不同的地点之间。某些“夜猫子”黑客们仍旧会光顾Kluge Room房间里的那台PDP-1计算机(它现在已经用上了杰克.丹尼斯花了一年时间编写的分时操作系统),特别是到这里来打《太空大战》电子游戏。但是真正的黑客则越来越偏爱Project MAC那里的PDP-1计算机。这台计算机和其他机器一起放在科技广场大楼灯光刺眼、没有什么摆设的第9层大厅内。为了让这里各种各样的计算机能够正常工作,空调也不得不开足马力,发出“嗡嗡”的声音,吵得人只想躲到为数不多的几间小小的办公室里去。最后一个地点就是TMRC,这里有似乎永远也卖不光的自动可乐售卖机和桑德斯制造的换瓶机,隔壁就是堆满了各种东西的ToolRoom。人们在这里一待就是一整夜,争论在外人听来有如天书一般晦涩难懂的各种观点。
这些争论是黑客圈中的家常便饭。有时他们会扯着嗓子相互叫喊,坚持自己的汇编程序的编码方案,或者某个具体类型的接口,或者某种计算机语言中的一个特别功能。黑客们在对这些不同观点的讨论过程中往往会用力捶打黑板甚至将粉笔摔向房间的另一头。这种争吵行为并不代表他们真的固执己见,他们只是想弄清楚什么才是“正确答案”(The Right Thing)。对于黑客,“正确答案”这一术语意味着对于任何问题来说(不管是编程过程中的两难选择、硬件接口不匹配,还是软件架构的问题),总是存在着一种解决方法,这就是“正确答案”了,也就是最天衣无缝的算法。当你的工作深入到某个关键之处的时候,此时人人都能看到两点之间已经可以用一条直线连接起来了,那么进一步找出更好方法的努力便显得画蛇添足。“正确答案,”高斯珀后来解释说,“指的是那种非常具体的、独一无二的、 第一流的正确解决方案……它在同一时刻能够满足所有的约束条件。每一名黑客似乎都相信绝大多数问题都存在这么一种‘正确答案’。”
高斯珀和格林布莱特两人都比较固执,不过通常格林布莱特讨厌面对面、容易产生不快的争论,他会躲到一旁去做点什么,有时是有用的工作,有时则不是。在他看来,事情总要有人去做。假如其他人都不去做,那么他就去做。他会坐在桌旁,用铅笔和纸写点什么,或者坐在PDP-1的终端前,尖声尖气地把自己的代码念出来。格林布莱特的程序是健壮的,换句话说就是这些程序的基础非常坚固,里面的纠错部分可以使程序不会因一个错误导致系统崩溃。每当格林布莱特编完一段程序以后,他总是会对这段程序进行全面调试。高斯珀认为格林布莱特比他见过的任何一个人都更喜欢查错和改错,甚至怀疑格林布莱特有时会故意写几条错误代码以便今后可以修改。
高斯珀喜欢以公开的方式编程。他希望有观众在旁观看自己工作,通常这样的观众是一些初级黑客。他们会拉张椅子,坐在他后面,看着他在控制台上编写一段段完美的程序,这些程序都会带有一些数学兴趣点。高斯珀尽情地展示着他的工作内容,例如让大家看看一个不常见的算法会诱发CR T上出现一连串无法预测的耀眼亮斑。随着程序的运行,高斯珀像导游一样详细讲解,有时还会重点强调即使一个小小的输入错误也可能产生有趣的数字现象。计算机常常可能做出无法预测的反应,这种反应所产生的现象一直让他如痴如狂。他对机器的这种表达方式表现出无限的尊重。有时,看上去绝对是随机发生的事件可能让他的思绪突然转向,去思考一个离题万里的无理数二次方或超越函数的含义。还有的时候,高斯珀程序中某个子例程的巫术可能偶尔演变成一份学者气很浓的备忘录,其中一个备忘录的开头这样写道8:
有理论认为:可能由于连分数不可穷尽的特性,导致连分数无法被充分利用,我就此提出以下讨论,阐述关于连分数与其他数值表示法相比的优势所在。
在Tool Room内出现的各种争论绝非大学里气氛融洽的闲聊。考托克经常参加这些争论,正是在这些争论的过程中,他自己为DEC设计的计算机(即PDP-6型)方案中也有几个关键问题得以解决。这款PDP-6型计算机甚至早在设计阶段就被TMRC的人奉为绝对的“正确答案”。有一次考托克开车送高斯珀回南泽西度假。他一边开车,一边说起他设计的这款新型计算机会有16个独立的寄存器。(寄存器,或称累加器,就是计算机内实际进行计算的元件。16个寄存器会令计算机的用途扩展到前所未闻的程度。)高斯珀想,那将是世界历史上最伟大的计算机!
当DEC不出所料真的制造出了PDP-6计算机并将第一台原型机送到Project MAC的时候,每个人都看得出来,尽管这台计算机具备了商业用户需要的所有基本功能,但是从本质上说,它还是一台黑客的计算机。考托克本人和他的老板戈登。贝尔(Gordon Bell)都饱受TX-0计算机那些功能上的条条框框所困扰,自从有了PDP-6以后,他们就再也无需为这些限制而烦心了。另外,考托克此前曾仔细听取过T M E C内众黑客的意见,特别是听取了率先提出使用16个寄存器的彼得.萨姆森的意见。
PDP-6的指令集可以满足用户的一切要求,计算机的整体架构完全对称。16个寄存器中的任何一个都可通过三种不同的方法访问,也可以组合这些方法访问不同的寄存器,这样一来,只用一条指令就能完成很多任务。这台PDP-6计算机还使用了一种“堆栈”技术,这项技术能够让程序员将子例程、程序和活动随意混合和对应。对黑客来说,PDP-6计算机及其功能强大的指令集能够让他们不必再像以前那样用蹩脚的方式表达自己的意图,因为他们现在已经拥有了一套全新的、内容丰富的词汇表,足以把自己内心的情绪准确地宣泄出来。
这台漂亮的海蓝色PDP-6计算机带有三个巨大的机柜,控制台看上去比PDP-1更加流畅自然,另外还有好几排闪亮的悬臂开关和一堆闪烁不定的指示灯。明斯基组织黑客给这台PDP-6重新编写系统软件。很快,他们就像当年痴迷PDP-1时一样,彻底被这台计算机征服了。但是,PDP-6计算机可以做的事情要比PDP-1多得多。一天,在TMRC隔壁的Tool Room中,黑客们正忙着调试用不同的方法输出小数的程序,也就是让计算机输出阿拉伯数字的程序。有个人想出了个点子,要尝试一下PDP-6上几条全新的、用到堆栈的指令。此前没有任何人在他们自己的程序中用到过这些指令,可是,令所有人感到惊讶的是,这段通常要用一整页代码才能完成的功能,由于使用了一条名为“Push-J”的指令,只用短短的6条指令便实现了。此后,TMRC的人一致同意,那条“Push-J”指令绝对就是PDP-6引入的“正确答案”。
Tool Room内的讨论和激辩常常持续到晚饭以后,此时黑客们基本上都会选择吃中餐。因为中餐价格便宜、种类多样,不过最重要的是,中餐馆会一直营业到深夜。