书城计算机黑客
2816200000011

第11章 太空大战(2)

从黑客们更为自发地使用PDP-1进行编程这一行为,同样可以很明显地看出这种热情,他们在PDP-1上编写严格的系统程序,控制原始的机械臂,再到天马行空地研究。最近的一个实验利用了PDP-1和TX-0之间的连接——一条连接两台机器的导线,信息通过这条导线以每次一位的速度传递。根据萨姆森的说法,黑客们找来了令人尊敬的AI先驱约翰.麦卡锡,让他坐在PDP-1旁边。“麦卡锡教授,看看我们新的国际象棋程序吧!”然后,他们又叫来了另一位教授坐在TX-0旁。“这就是那个国际象棋程序!请输入您的走法!”麦卡锡输入了他的第一步后,他的走法显示在了TX-0的电传打字机上。黑客们告诉另一个教授,他看到的是TX-0开局的第一步棋。“现在该您了!”在走了几步棋后,麦卡锡注意到,计算机在输出走法的时候,一次只输出一个字母,有时还会有所停顿,这很可疑。于是,麦卡锡沿着那条连接的导线找到了他的真人对手。黑客们欢快地来回奔跑着。但是,用不了多久,他们就能开发出让计算机真正参加国际象棋锦标赛的程序。

PDP-1解放了黑客们,让他们可以没有任何限制地编程。萨姆森可以随意地研究诸如玛雅历法(基于以20为基数的数字系统工作)之类的事情,还可以加班,利用PDP-1扩展的音频性能来编写TX-0音乐程序的新版本,创作出由三种声音发声的音乐——

三声部巴赫赋格曲、互动旋律……古旧的Kluge Room房间传出了计算机音乐的声音!DEC的人听说了萨姆森的程序,并要求他在PDP-1上完成这个程序,因此萨姆森最终将其实现为,人们可以通过将音符简单转换为字母和数字的方式来在机器上输入乐谱,而计算机则会做出回应,发出三声部的风琴奏鸣曲。另一小组则编出了吉尔伯特和苏利文的歌剧。

萨姆森自豪地向DEC演示了这个音乐编译器,它可以发布给任何需要的人。其他人会使用他的程序,这让他深感骄傲。负责编写新汇编程序的团队也有同样的感受。

比如,他们很愿意将记载着程序的纸带放入抽屉,这样任何使用这台机器的人都可以获取程序、尝试改进它、压缩其中的若干条指令或添加一些功能。如果DEC请求他们提供这个程序以便给其他的PDP-1拥有者使用,那他们会觉得很荣幸。版税问题从来不在他们的考虑之内。对于萨姆森和其他黑客来说,使用计算机是他们的乐趣,他们甚至愿意为此付费。而在计算机上每工作一小时所获得的1.60美元的“巨款”是额外的奖励。至于版税,软件难道不更像是给这个世界的礼物吗?它本身不就是奖励吗?黑客的观点是让计算机更为实用,让用户更高兴地使用它,让计算机的趣味性吸引人们使用它、研究它并最终破解它的奥秘。如果你编写出了一个优秀的程序,那么你就是在建立一个社区,而不是研究出一个产品。

不管怎样,人们不应该为软件付费——信息应该是完全免费的!

……

TMRC的黑客们并不是唯一一群为迎接新PDP-1的到来而制定计划的人。1961年夏天,一个在那时最为复杂精密的黑客计划正在紧锣密鼓地设计中,这个计划可以说是严格应用黑客道德所创造的伟大结果的最好展示。这次活动发生在位于剑桥海厄姆大街(Higham Street)的一栋住宅楼里,而始作俑者是3个20多岁的程序员,他们有好几年的时间一直在不同的计算中心来回穿梭着工作。其中有两个人住在这栋住宅楼里,所以,为了向附近的哈佛大学所散发出来的自负气息“致敬”,这三个人嘲弄地将这栋住宅楼命名为“Higham Institute”(海厄姆学院)。

史蒂夫.拉塞尔是这所假学院中的一员,不知为何他的绰号叫斯拉格。他说话时总是喜欢一口气把话说完,这一点像极了黑客。他戴着厚厚的眼镜,中等身材,对计算机、无聊电影以及庸俗的科幻小说有着狂热的爱好。在海厄姆大街的住所中,这些居民在闲谈中总会涉及所有这三个兴趣爱好。

拉塞尔长久以来都是约翰.麦卡锡大叔的“苦力”(这是TMRC的专用语言)。麦卡锡一直在试图设计和实现可以用于完成人工智能工作的更高级语言。他认为LISP是合适的语言。这种语言是以其方法“List Processing”(列表处理)来命名的;它有着简单但功能强大的命令,可以用很少的代码实现许多功能;LISP还可以执行强大的递归操作(引用自己内部的东西),因此,用这种语言编写的程序可以真正从程序运行时发生的状况中“学习”。那时,LISP的问题是它会占用计算机上相当大的空间,运行异常缓慢,并且会随着程序运行生成大量的额外代码,以至于需要其自身的“垃圾回收”程序定期清理计算机的内存。

拉塞尔正在帮助约翰大叔为IBM 704编写LISP解释器。用他的话说,这是“一个可怕的工程工作”,大部分是因为704枯燥无味的批处理。

与704相比,PDP-1对斯拉格.拉塞尔来说就像是一方乐土。它不但比TX-0更容易接近,而且没有批处理!尽管它的功能还不足以使用LISP语言,但是它具有其他神奇的功能,其中的一些也是“海厄姆学院”讨论的主题。让拉塞尔和他的朋友们备感兴趣的是使用CRT屏幕在PDP-1上制造出某种类型的唯美“炫丽显示”。在经过了许多午夜座谈后,这个由三人组成的“海厄姆学院”坚持认为能够最为有效地演示计算机神奇之处的,非视觉打斗游戏莫属。

曾有人在TX-0上做过若干次类似的尝试。其中一个就是《迷宫里的老鼠》——使用者先用光笔构造出一座迷宫,屏幕上代表老鼠的光点会试探性地在迷宫里找路,搜寻另一组代表楔形奶酪的光点。这个游戏还有一个“VIP版本”,在这个版本中,老鼠会去寻找装着马蒂尼的酒杯。找到酒杯后,它会继续寻找下一个,直到它跑不动了,醉得无法继续为止。但是,如果你按动开关让老鼠第二次进入迷宫,它会“记住”通往酒杯的路径,就像惯常的酒鬼会毫不迟疑地奔向酒会一样。这就是黑客目前能够在TX-0上进行的展示。

PDP-1配备了屏幕,比TX-0更便于编程,而且已经有了一些很好的显示效果。其中最让人欣赏的工作出自MIT人工智能双子大师之中的一位马文.明斯基之手(另一位大师当然就是麦卡锡)。明斯基比麦卡锡更为外向,也更习惯黑客的活动模式。他对于计算领域的未来有着非常宏大的想法——他确实相信,有一天机器将能够思考,他公开宣称人类的大脑是“人肉机器”,暗示着非肉质的机器有一天也可以实现大脑的功能,这通常会引起很大的轰动。明斯基身材矮小,酷似精灵,在他厚厚的眼镜后面有着一双充满灵气的眼睛,秃顶的他总是穿着高领毛衣,他会以他惯常不形于色的风格说出上面的话,同时做好准备迎接最尖锐的挑战,并会稍微流露出这只是一种打发时间的方式——机器当然不能思考,呵呵。明斯基具有真才实学,PDP-1的黑客常常会去上他的一门课“AI 6.544入门”,不仅因为他是位优秀的理论家,更因为他理解自己所讲授的知识。到了20世纪60年代初期,明斯基开始组织建立世界上第一个AI实验室。他知道,要完成他希望实现的事情,他需要一些编程天才作为他的小兵,因此,他以任何可能的方式鼓励黑客技术。

明斯基为PDP-1的显示功能所做的一个贡献是在PDP-1上运行的一个显示程序,它叫做“Circle Algorithm”(圆圈算法)。实际上,这个程序是由于一个小错误而发现的——在试图从将直线弯成曲线或螺旋线的小程序中压缩一条指令时,明斯基无意间把“Y”字符错当成了“Yprime”,于是程序没有如预期那样将直线弯曲成未封口的螺旋线,而是画了一个圆圈:这真是个了不起的发现,后来人们发现这有着深刻的数学意义。明斯基进行了更进一步的研究,将圆圈算法作为出发点,画出更为精致的图形,三个粒子相互影响在屏幕上形成美妙的漩涡图案,从而自动生成带有不同叶子数量的玫瑰。“粒子对彼此施加的力非常古怪。”鲍勃。瓦格纳后来回忆道,“你正在模拟的是违背自然规律的事物!”明斯基将这个显示程序称为“Tri-Pos:三位显示”程序,而黑客们则给它起了更为亲切的名称Minskytron。

斯拉格.拉塞尔受到了这个程序的启发。几个月前,在“海厄姆学院”的会议中,他和他的朋友讨论了最后的显示功能的标准。因为他们都是通俗科幻小说的粉丝,特别是多克。史密斯(E.E.“Doc”Smith)的太空歌剧类小说,于是他们认定PDP-1这台价值12万美元的机器就是他们用来制作B级电影的完美机器。在他们设想的游戏中,两个玩家可以在外太空面对面一决胜负。于是,“海厄姆学院”太空战斗研究小组正式成立了,斯拉格.拉塞尔理所当然地成为了这一具有历史意义的游戏的创作者。

但几个月过后,拉塞尔甚至还没开始动手。他会看着Minskytron绘制图案,按动开关查看新模式的进展,程序还会时不时地陷入不活动状态,这时他会按动更多的开关。他对这个程序非常感兴趣,但他认为它过于抽象和精确。“这个演示程序毫无用途。”他最终下了结论——它只有32条左右的指令,并且实际上没有实现任何功能。

斯拉格.拉塞尔知道他的《太空大战》(Spacewar)游戏会实现一些突破5。从浅显的科幻角度来说,它会比之前的任何黑客程序更有吸引力。拉塞尔痴迷于计算机的首要原因就是他能够从运行这些程序的过程中获得一种强大的力量感。你可以告诉计算机去做什么,它会与你进行斗争,但最终它会按照你说的做。当然它也会反映出你的愚蠢,而且通常你让它去做的事情会带来令人不快的结果。但是在经历了折磨和痛苦后,计算机会完全按照你所希望的来运行。那时,你的成就感是世界上任何其他的感觉都无法比拟的。它能让你上瘾。计算机就让斯拉格.拉塞尔上瘾了。他能够看出,计算机对那些在Kluge Room泡到黎明的黑客也有着同样的影响。就是这种感觉让他们沉迷,斯拉格.拉塞尔猜想,这种感觉就是力量。

拉塞尔从多克。史密斯的小说中也获得了一些同样的感受,但是不那么强烈。他任由自己的想象力构建出驾驶着白色火箭飞船在太空中呼啸而过的快感……他想知道坐在PDP-1控制台后面是否能实现这种兴奋的感觉。那就是他梦想的太空大战。他再一次立志要编出这个程序。

但不是现在。

拉塞尔不像其他的一些黑客那么积极主动,有时他需要推动力。他犯了个错误,多嘴地说出了他想要编写这个关于《太空大战》的程序,而PDP-1的黑客们总是渴望能在抽屉里日渐增多的纸带堆中看到其他的黑客程序加入,因此他们催促拉赛尔赶紧开工。在嘀咕了一阵子借口之后,他说他会做的,但是首先,他必须弄清楚如何编写绘制飞船移动所必需的精密正弦和余弦例程。

考托克知道这个问题很容易解决。在那时,考托克与位于几英里之外的梅纳德大厦的DEC工作人员相处得非常融洽。DEC的氛围非常友好,计算机制造商都是如此,并且他们不会把MIT的黑客看做是只想用计算机来找乐子的低素质的人。比如,一天,当设备的某个零件损坏了之后,考托克给梅纳德大厦打电话通知DEC,DEC的工作人员说:“你自己过来拿替换零件吧。”考托克到达的时间远远超过了下午5点,大厦已经关门了。但是夜间值班人员让他进去了,他找到了与他通话的工程师的办公桌,然后彻底翻遍了每一个角落才找到他需要的零件。不拘小节,这正是黑客们喜欢的方式。所以,对考托克来说,在某一天去梅纳德大厦不是什么问题,他确信DEC的人一定有可以在PDP-1上运行的正弦和余弦例程。果然,确实有人拥有这个例程,因为信息是免费的,所以考托克将它带回了MIT的26号楼。

“给你,拉塞尔,”考托克手里拿着纸带说道,“现在你还有什么借口?”

那时,拉塞尔确实没有借口了。所以,他利用非工作时间编写这个幻想中的PDP-1游戏,没有人曾经看到过这种类型的程序。不久之后,他开始利用工作时间编写这个游戏。他从1961年12月初开始动手,圣诞节来临时,他还未完成。当1962年来临时,他依然在工作。那时,拉塞尔已经可以在屏幕上画出一个点供你操作:按动控制面板上的一些小扳钮开关,就可以让屏幕上的点加速和改变方向。