cat /dev/random meh

第3章 太空大战

1961年夏天,阿伦·考托克和其他TMRC黑客了解到,一家新公司将在不久之后完全免费地为MIT提供一台机器,它比TX-0的交互性提高了好几个层次,它代表着计算领域的下一个阶段。这台机器甚至可能比TX-0更适合黑客使用。

这就是PDP-1。它将永远地改变计算领域。它能进一步拉近黑客依然朦胧的梦想与现实之间的距离。

阿伦·考托克是使用TX-0的真正奇才,享有盛名,因此杰克·丹尼斯雇佣他和桑德斯、萨姆森、瓦格纳以及其他几个人,成立了TX-0的系统编程团队。他们可以获得每小时1.60美元的优厚报酬。对于其中几个黑客来说,这份工作成为了他们不去上课的另一个借口。一些黑客(比如萨姆森)可能永远都不会毕业,并且他们太忙于黑客事业而不会真正对这种损失感到遗憾。考托克则不然,他不但能够完成自己的课程,还能让自己成为“权威”黑客。在TX-0实验室和TMRC,他正在确立自己的传奇地位。那年刚来到MIT的一个黑客还记得考托克给新加入者演示TX-0如何工作时的情景:“我感觉他有点像甲亢患者。”同样希望成为权威黑客的比尔·高斯珀回忆道:“那是因为他说话的语速非常慢,而且胖乎乎的,眼睛还半睁半闭。但这完全是错误的印象。(在TX-0实验室)考托克在人们心目中有着无限的权威。他编写出了国际象棋程序,他懂硬件。”(最后一点绝对不是无足轻重的恭维——“懂硬件”就像是理解了物理性质的精髓一样。)

在PDP-1消息不胫而走的那个夏天,考托克正在为美国西电公司工作,这几乎是一种理想的职业,因为在所有可能的系统中,人们最赞不绝口的就是电话系统。TMRC经常会去参观电话公司的交换台,就像对绘画感兴趣的人会去博物馆参观一样。考托克发现了一个有趣的事实,在经历了数十年的发展而规模庞大的电话公司中,只有少数几个工程师对系统内部的相互关系有着深刻的了解。尽管如此,工程师可以随时提供系统中具体功能的细节,比如纵横制交换和步进式继电器。考托克和其他黑客会不断地向这些专家询问信息,而这些得到夸赞的工程师也会毫不迟疑地回答,他们可能并不知道这些彬彬有礼的大学生们会真的运用这些信息。

考托克十分积极地参与这些参观活动,阅读他能找到的所有技术材料,他还在MIT复杂的电话系统(当时他只了解这个系统的一点皮毛)上试着拨打不同的电话号码,看看会产生什么结果。这些都是基本的研究探索,就像研究TX-0的数字秘密一样。在1960~1961年之前的那个冬天,TMRC的黑客们忙着开发一个精密的“电话网络指纹系统”,记录通过MIT的专用线路系统可以拨到的所有地点。尽管没有连接到普通的电话线上,但这个系统可以接通林肯实验室,从那里可以接通遍及美国的国防项目的承包商。这是一个关于映射和测试的问题。你可以先拿到一个接入代码,给它添加不同的数字,看看谁会接电话,询问接电话的人在什么地点,然后继续在这个号码中添加数字,让它带你到达下一个地方。有时,如果电话公司对你不加怀疑,你甚至可以接通郊区的外线。就像考托克后来承认的那样:“如果电话系统中有一些设计缺陷,比如人们可以接通原本不应该接通的电话,那么我是无法克制自己不去利用这些漏洞的,但这是他们的问题,不是我的。”

尽管如此,他们的动机仍是研究,而不是欺诈,而且他们认为从这些奇怪的电话连接中非法获益是错误的行为。有时,局外人是无法理解这些的。比如,萨姆森在伯顿·霍尔宿舍的室友不是黑客,他们认为利用系统缺陷没什么不正当的,不用附加系统探索这种神圣正当的理由。很多天来,他们一直在给萨姆森施加压力,最终他妥协了,给了他们一个20位的号码并告诉他们这个号码可以接通外国的电话。“你可以用公寓电话拨打这个号码,”他这么告诉他们,“但是我不希望我在现场。”在他们迫不及待地拨打电话时,萨姆森来到了楼下的电话旁,他刚到这里,电话铃响了。“这里是五角大楼,”他拿起电话用最官方的嗓音低沉有力地说道,“请问您的安全级别是什么?”萨姆森听到楼上的电话那头恐惧的喘气声,然后传来了挂断电话的声音。

很明显,网络指纹识别只是黑客们的追求,他们渴望了解系统,不害怕陷入任何麻烦。

尽管电话公司的奥秘令考托克着迷,但是PDP-1的前景却令他更加兴奋。也许他感觉到了,在这之后,所有的事情,甚至电话入侵都会变得不同了。设计并销售这个新型机器的那些人绝不会是普通计算机公司中毫无新意的工作人员。这家公司是一家名为DEC公司(Digital Equipment Corporation)的全新公司,TX-0的一些使用者知道,DEC的首批产品就是特别针对TX-0而设计的专用接口。在计算领域,与那些穿着灰色法兰绒制服的IBM人员所具有的“批处理”心态相比,DEC的一些创始人有着完全不同的观点,这足以让人兴奋不已。而DEC似乎注意到了TX-0社团的这种随心所欲、互动、即兴、凡事都亲自动手尝试的风格,并设计出了促进此类行为的计算机,这更加激动人心。PDP-1(这三个首字母是“Programmed Data Processor”,即编程数据处理器的缩写,人们认为这个名称没有“计算机”那么有威胁感,计算机的含义包括了所有类型的笨重巨型机器。)将被称为第一台小型计算机,其目的不是为了实现大批量数字的处理任务,而是为了科学探究、数学公式……以及黑客探索。它的外形非常紧凑,整个设备不超过三个冰箱的大小,因此它不需要过多的温度调节。要开启它,你甚至不需要整个一组工作人员按照正确的顺序排列若干个电源,启动时基发生器(time- base generator),或进行其他费力的工作。这台计算机的零售价格也相当便宜,只需12万美元——便宜到人们可以不再抱怨每一秒的计算机时间有多么宝贵。这台机器是DEC制造的第二台PDP-1(第一台卖给了附近的一家科技公司Bolt Beranek and Newman,也就是BBN),而MIT获得这台机器没有付出任何费用:DEC将其捐献给了RLE实验室。

因此,很明显,黑客们使用PDP-1的时间会比花费在TX-0上的时间更多。

PDP-1附带了一组简单的系统软件,但黑客认为这些软件完全不够用。TX-0的黑客已经习惯于在任何地方使用最先进的交互式软件,那是一组令人眼花缭乱的系统程序,是黑客们自己编写的,能够绝对满足他们对计算机进行控制这一永不停歇的需求。年仅12岁的彼得·多伊奇已经编写出了一个更出色的汇编程序,鲍勃·桑德斯也设计出了FLIT调试器的更为小巧、快速的版本Micro- FLIT。这些程序的产生都得益于一组扩展指令集。一天,经过桑德斯和杰克·丹尼斯的周密规划和设计后,TX-0被关闭了,一群工程师拆出其内部结构并开始利用硬连线将新指令写入机器中。这个艰巨的任务添加了若干条指令,扩展了汇编语言。在完成了拆卸组装的工作后,他们小心翼翼地启动了TX-0,每个人都开始利用新指令疯狂地更新程序并压缩原有程序。考托克了解到,PDP-1的指令集与TX-0的扩展指令集并没有太大的区别,所以在那个夏天,考托克自然而然地开始利用他所能找到的所有空闲时间为PDP-1编写系统软件。考虑到机器送达后,每个人都会立即投入进来,开始编写程序,因此他着手转换Micro- FLIT调试器,以便大家能够更轻松地在“这台机器”上编写软件。萨姆森马上将考托克的调试器命名为“DDT”,这个名字会一直沿用下去,而程序本身会被那些希望添加功能或压缩指令的黑客们不停地修改。

考托克不是唯一一个做好准备迎接PDP-1到来的人。就像是一群形态各异的准父母,其他黑客也忙于为即将来到自己家庭的新生儿编织着“软件的婴儿袜和毯子”,这样,这个计算王国的注定王位继承人在9月末来到这里的时候将立即享受到大家的欢迎。

黑客们帮忙将PDP-1安放到它的新家,也就是TX-0隔壁的房间Kluge Room。它非常漂亮:坐在只有TX-0一半长的控制台后,你会看到一个排列紧凑的面板,上面布满了开关和指示灯;面板旁边是显示屏,装在一个浅蓝色的六面外壳中;显示屏后面是高大的机柜,有一台冰箱的大小、三台冰箱的厚度,里面是电线、面板、开关和晶体管——当然机柜是禁止入内的。PDP-1连接了一台电传打字机用于在线输入(人们常常抱怨Flexowriter电传打字机的噪声,最后它被改装后的IBM打字机所取代,但IBM的打字机并不那么好用),以及一台高速纸带读取设备,这也是用于输入的设备。总而言之,这是一个绝对美妙的玩具。

杰克·丹尼斯喜欢BBN为PDP-1原型编写的一些软件,特别是汇编程序。但是,考托克在看到这个汇编程序运行的时候会觉得不舒服(它的运行模式似乎不符合他喜欢的天马行空的风格),于是考托克和其他几个黑客告诉丹尼斯,他们希望编写自己的汇编程序。“这可不是个好主意。”丹尼斯说,他希望有一个可以立即启动并运行的汇编程序,并认为这些黑客要写出汇编程序需要花费好几周的时间。

考托克和其他人态度坚定。这是他们赖以工作的程序,它必须非常完美。(当然,没有程序是完美的,但是这并不会阻止黑客对完美的追求。)

“这样吧,”这位憨态可掬的20岁青年考托克对持怀疑态度却有同情心的杰克·丹尼斯说道,“如果我们在周末编写这个程序,并能让它工作,你会为我们所花费的时间支付薪水吗?”

根据当时他们的薪酬水平,这个程序的总报酬低于500美元。“这听起来很公平。”丹尼斯说道。

于是,在1961年9月末的一个周五晚上,考托克、萨姆森、桑德斯、瓦格纳和其他两个黑客开始工作了。他们认为应该从丹尼斯编写了初始版本并由12岁的彼得·多伊奇等人修改过的TX-0汇编程序开始着手。他们不会改变输入或输出,也不会重新设计算法。每个黑客都将负责TX-0程序中的一部分,将其转换成PDP-1代码。他们不眠不休。6名黑客在那个周末连续工作了250个人工小时,编写代码、调试,并就着从TMRC娱乐室拿来的可口可乐把满嘴的中餐外卖送到胃里。这是一次编程的狂欢盛宴。星期一,当杰克·丹尼斯走进实验室时,他惊奇地发现PDP-1中已经加载了这个汇编程序,它正在演示将自己的代码汇编成二进制。

纯粹凭借着他们的技术实力,TX-0,不,PDP-1的黑客们在一个周末编写出了计算机行业需要数周、甚至可能需要好几个月才能顺利完成的程序。对于这种项目,计算机行业不经过申请、研究、沟通和执行决定等漫长乏味的流程是不太可能实现的,在这个过程中很有可能还会经历相当大的妥协。这个项目也许根本就不会完成,而这是黑客道德的胜利。

这些黑客甚至获得了使用这台新机器的更多机会,比他们之前设法使用TX-0的时间还多,几乎所有的黑客都将自己的工作转移到了Kluge Room。只有少数几个顽固派依然在使用TX-0,而对于PDP-1的黑客们来说,这很适合开一些无伤大雅的玩笑。为了帮助记忆,PDP-1的黑客们在这个全新机器指令集的基础上发明了一些缩写,包括一些奇异的指令,比如DAC(寄存累加器)、LIO(加载输入/输出)、DPY(部署)和JMP。PDP-1团队会站成一排,然后整齐地喊出:

LAC,

DAC,

DIPPY DAP,

LIO,

DIO

JUMP!

在喊出最后一个单词“Jump!”(跳!)时,他们会同时跳到右侧。他们缺乏舞蹈技巧,却有着可以弥补这一切的热情:这台机器的美妙以及计算机的魅力令他们兴奋不已。

从黑客们更为自发地使用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”字符错当成了“Y prime”,于是程序没有如预期那样将直线弯曲成未封口的螺旋线,而是画了一个圆圈:这真是个了不起的发现,后来人们发现这有着深刻的数学意义。明斯基进行了更进一步的研究,将圆圈算法作为出发点,画出更为精致的图形,三个粒子相互影响在屏幕上形成美妙的漩涡图案,从而自动生成带有不同叶子数量的玫瑰。“粒子对彼此施加的力非常古怪。”鲍勃·瓦格纳后来回忆道,“你正在模拟的是违背自然规律的事物!”明斯基将这个显示程序称为“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年来临时,他依然在工作。那时,拉塞尔已经可以在屏幕上画出一个点供你操作:按动控制面板上的一些小扳钮开关,就可以让屏幕上的点加速和改变方向。

然后,他开始着手绘制两艘飞船的形状:两者都是经典的卡通火箭飞船,顶部是尖头,尾部装有一套尾翼。为了将这两艘飞船区分开来,他将其中一艘做成胖乎乎的雪茄形状,船体中部鼓起,而另一艘的形状则像一个细管。拉塞尔使用正弦和余弦例程计算出如何将这些形状向不同方向移动。然后他编写了一个子例程,实现用计算机上的开关控制从火箭鼻翼射出“鱼雷”(一个点)。计算机会扫描鱼雷和敌方飞船的位置,如果二者处于同一个区域,则程序会调用一个子例程,将这艘不幸的飞船替换为随机飞溅的点,这表示爆炸。(这个过程叫做“碰撞检测”。)

所有这一切实际上都是迈向更为复杂的“实时”编程的重要概念步骤,也就是把计算机上发生的情况与人工实际操作对应起来。在另一种意义上,拉塞尔正在效仿的是黑客所倡导的在线交互式调试风格——可以自由地查看哪条指令让你的程序停止,并用开关或电传打字机加入不同的指令,而与此同时,程序依然在DDT调试器中运行。《太空大战》游戏本身是计算机程序,它有助于表明所有游戏(也可能是所有其他的事情)是如何像计算机程序一样工作的。如果你走了一点弯路,就可以通过修改参数来修复问题。可以输入新的指令。同样的原则也适用于目标设计、国际象棋策略和MIT课程作业。计算机编程不仅仅是一种技术上的追求,更是解决生活问题的途径。

在之后的编程阶段中,桑德斯开始协助斯拉格·拉塞尔,他们会一起进行6~8个小时的高强度工作,如此往复几次。在1962年2月的某一天,拉塞尔揭开了这个最基本游戏的面纱。游戏里有两艘飞船,每艘配备了31发鱼雷。屏幕上有一些随机的点代表着这个星球战场上的星星。可以扳动PDP-1控制台上的4个开关来操纵飞船,这4个开关分别代表顺时针旋转、逆时针旋转、加速和发射鱼雷。

斯拉格·拉塞尔知道,展示这个游戏的简陋版本,然后将记录程序的纸带扔到放置PDP-1系统程序的箱子里,意味着他欢迎其他人主动提供程序改进方案。《太空大战》不是普通的计算机模拟程序——你可以成为真实的火箭飞船宇航员。这就像是真实生活中的多克·史密斯。但是,拉塞尔开发这个程序所利用的力量(PDP-1给予程序员来创建他自己的小型宇宙的力量)同样也可以被其他黑客使用,他们可以自由地改进斯拉格·拉塞尔的宇宙。他们立即就开始这么做了。

看看黑客们对斯拉格·拉塞尔为鱼雷使用的初始例程作何反应,你就会知道黑客们想对这个游戏做些什么改进了。拉塞尔知道实际生活中的军用武器并不是尽善尽美的,所以他认为应该让鱼雷符合现实情况。他没有让鱼雷在失去动力并爆炸前沿着直线前进,而是在鱼雷的方向和速度中加入了一些随机变量。但是黑客们不但不欣赏这种逼真效果,还公开指责它。他们喜欢可以平稳运行的系统以及可靠的工具,所以如果让他们使用无法正常工作的东西,会让他们发疯的。后来,拉塞尔明白了:“不那么值得信任的武器或工具是不会被珍视的——人们真的希望能够信任他们的工具和武器。在这个游戏中,这是显而易见的事实。”

这当然可以很容易地修复。由计算机程序创造出来的世界比真实世界更具优势的地方就是,对于像有缺陷的鱼雷这样可怕的问题,只要修改几条指令就可以修复了。这也是那么多人很容易痴迷于黑客技术的首要原因!于是,鱼雷问题被修复了,黑客们花很多时间在外太空决斗,并且会花更多时间尝试着完善这个《太空大战》的世界。

例如,彼得·萨姆森很喜欢《太空大战》的想法,但是无法容忍随机生成的点在天空中自行转移。在现实的太空中,星星都有自己固定的位置。“我们要制造出真实的事物。”萨姆森发誓。他找来一本厚厚的宇宙地图册,并开始将数据输入到他编写的例程中,这个例程可以生成真实的星群,也就是在晴朗的夜空中站在赤道地区可以看到的星群。最暗到5级星的所有星星都可以显示出来。萨姆森通过控制计算机点亮屏幕上代表星星的点的频率来复制它们的相对亮度。他还将程序设置为随着游戏的进行,天空会壮丽地卷动——在任何时间,屏幕均会显示45%的天空。除了增加了逼真效果,这个“昂贵的行星仪”程序还为火箭战斗机提供了可在地图上标识的背景,以便测量位置。用萨姆森的话说,这个游戏可以真正称为“Shootout- at-El-Cassiopeia”(仙后座的枪战)了。

另一个程序员丹·爱德兹则对这两艘交战飞船不固定的移动表示不满,这让游戏成为了仅对驾驶技术的测试。他认为应该添加一个重力因素,作为游戏的一个策略。于是他在屏幕的中心编写了一个中心星体——太阳。在环绕太阳飞行时,飞船可以靠太阳的万有引力来加速,但是,如果不小心离太阳太近了,你会被拉向太阳,那么你的飞船将必死无疑。

在这种变化的所有策略被采用之前,“海厄姆学院”三人组中的萨格·盖瑞茨为游戏设计了一种通用的功能。他在多克·史密斯的小说中读到过,太空飞车手如何通过“超空间管”让自己脱离一个星系,然后被扔到“异常神秘的第N维空间”。因此,他在游戏中添加了“超空间”功能,允许玩家按动紧急按钮将自己快速移动到这个超空间,以避免可怕情况的发生。在游戏过程中,你可以进入超空间三次,缺点是你永远不知道会从哪里出来。有时,你会重新出现在太阳旁边,只来得及看到自己的飞船被无望地拉向太阳表面,早早地一命呜呼。盖瑞茨非常欣赏马文·明斯基最初设计的显示功能,因此他以同样的方式编写了超空间功能:进入超空间的飞船会留下“弯曲诱导光子压力排放标志”——也就是遗留下来的光点集,通常是Minskytron显示结果所形成的形状。

变化是无穷无尽的。交换几个参数,就可以将这个游戏转换为“液压太空大战”,即鱼雷连串地射出,而不是一个接一个地发射。或者,在夜越来越深后,人们被困于星际模式,有人可能会喊道:“让我们启动‘太空风云’!”于是可能会有人设计出变形因子,强迫玩家在每次移动时做出调整。尽管黑客们所希望的改进都会受到欢迎,但是未经宣布即对游戏做出奇怪的修改是一种非常不好的行为。黑客道德(鼓励亲自动手改进程序,而不是破坏)不允许这种恶作剧式的行为发生。总之,这些黑客已经参与了对系统难以置信的调整——他们使用昂贵的计算机玩着世界上最荣耀的游戏!

黑客疯狂地玩着《太空大战》。对某些人来说,它就像毒品一样让人上瘾。尽管没人能够正式地预约PDP-1的时间段用于《太空大战》,但是这台机器的每一个空闲时刻似乎都在运行这个游戏的某个版本。黑客们会手里拿着可乐(有时还准备着钱),参加马拉松式的比赛。最终,拉塞尔编写出了可以保留得分的子例程,能以八进制(那时,所有人看一眼就能读出这个八进制的数字系统)显示获胜的比赛总分数。现在暂时的主要缺点似乎是操纵PDP-1控制台上的开关不那么舒服——每个人都肘部酸痛,因为他们要让自己的胳膊保持着某种角度。于是有一天,考托克和桑德斯来到了TMRC娱乐室,在这里找了些零部件(这些零部件后来被做成了世界上第一个计算机操纵杆)。他们完全采用散落在娱乐室各个地方的零部件来制作,共花了一个小时的时间将这些零部件组装在一起,做出了操纵盒。操纵盒由木头制成,盒盖是绝缘纤维板。操纵盒上有用于旋转和推动的开关以及一个进入超空间的按钮。当然,所有的控件都是无声的,这样,如果你愿意,便可以悄无声息地盘旋在敌人身旁或进入第N维空间。

《太空大战》热闹的编程阶段逐渐淡去,一些黑客对其失去了兴趣,而另一些黑客则具备杀手般敏锐的直觉,想要设计策略来摧毁对手。大多数对战在头几秒钟即会分出胜负。瓦格纳逐渐擅长于“静止等待”策略,即保持静止不动,等待引力驱使你围绕着太阳转动,然后直线冲出,开始用鱼雷向你的对手狂轰滥炸。还有一种变化叫做“CBS开局”,你可以选择射击角度然后绕着太阳旋转。这个策略之所以如此命名,是因为当两个太空大战的斗士都试图如此操作时,会在屏幕上留下酷似CBS眼睛徽标(哥伦比亚广播公司的眼睛图标)的图案。桑德斯非常看重他的《太空大战》,他使用了一个修改后的CBS策略在比赛中保持优势地位——有段时间,他是无敌的。但是,在这样一种王者的竞赛中,即使是最好的太空战士,在保护其领地20分钟后视线也会变得有些模糊,并减慢操作速度,而大部分的人会在此时获得机会,以有效的方式进行太空大战。彼得·萨姆森是仅次于桑德斯的太空战士,某个晚上,他在返回位于洛厄尔的家时意识到了他对这个游戏的痴迷。他走出列车,抬头凝视一望无云的清澈天空,一颗流星飞过他的头顶,飞船在哪里?萨姆森这么想着,立即转回头,抬手想要抓住控制箱,却抓了个空。

1962年5月,在MIT一年一度的开放日,黑客们将27页写满PDP-1汇编语言代码的纸带送入计算机,搭建起一个超级显示屏(实际上是一个巨大的示波器),然后一整天都在运行《太空大战》,向无意间进来的公众展示,公众都不敢相信他们所看到的画面。这种情景(由学生编写并由计算机控制的科幻小说游戏)远远超出了人们的想象,没有人敢预测,它最终会开创一个全新的娱乐天地。

直到多年以后,当斯拉格·拉塞尔在斯坦福大学时,他才意识到这个游戏根本不是黑客的反常行为。一天晚上,拉塞尔和几个朋友工作到很晚,之后他们去了当地的一个酒吧,那里有几台弹球机,他们一直玩到酒吧关门。然后,拉塞尔和同事们并没有回家,而是回到了计算机旁,他的朋友们做的第一件事就是运行《太空大战》。拉塞尔突然意识到:“这些人刚离开了弹球机,就回来玩太空大战了——天哪,这就是个弹球机。”这是世界上最高级、最富有想象力、最昂贵的弹球机。

像黑客们的汇编程序和音乐程序一样,《太空大战》也不是用来出售的。它也像其他程序那样,被放在抽屉里,任何人都可以拿到并查看,还可以进行他们认为合适的重写。集体的努力逐步地完善了程序,这能够说明黑客道德的一个观点:想要对事物运转方式一探究竟并改进它的强烈愿望带来了重大的改进。当然,所有这些也完全令人乐在其中。其他PDP-1的拥有者听说了关于这个程序的消息也就不足为奇了,于是黑客们免费分发了存储着《太空大战》的纸带。在某个时刻,有一个念头闪过斯拉格·拉塞尔的脑海,也许有人应该用这个来赚些钱,但那时,已经有几十个副本传到了外面。DEC很高兴地收到了一个副本,那里的工程师们将其作为在把PDP-1交付给用户之前的最终诊断程序,然后,他们会不清除计算机内存便关闭电源。DEC的销售团队知道这一点,通常,在将机器交付给新客户时,销售人员会开启电源,检查并确保机器背后没有浓烟冒出,然后点击《太空大战》所在的“VY”位置。如果这台机器经过仔细地包装并小心运输,那么《太空大战》中那个重量级的星体会在正中间,而雪茄形状的火箭和细管状的火箭会做好准备进行宇宙大战,准备好在这台神奇机器上的首次飞行。

……

事实证明,《太空大战》是MIT黑客先锋们经久不衰的传奇。在接下来的几年里,许多TX-0和PDP-1的操作者都离开了MIT。桑德斯接受了位于圣莫尼卡的一份与工业相关的工作(之后他又为他用来工作的PDP-7编写了《太空大战》)。鲍勃·瓦格纳去了Rand(兰德)公司。彼得·多伊奇进入伯克利大学,开始了他的大一生活。考托克接受了DEC的一份兼职工作,这份工作最终成为了一个重要的设计职位(但是他设法在之后的许多年里泡在TMRC中并使用PDP-1)。为了将MIT风格的黑客主义传播到剑桥以外的地方,约翰·麦卡锡做出了对此具有重大影响力的决定,他离开了MIT,在西海岸的斯坦福大学创办了新的AI实验室。斯拉格·拉塞尔是一直为麦卡锡编写LISP的“苦力”,也追随着他去到那里。

新面孔的到来以及计算领域中一些更先进的活动,不仅能够确保MIT黑客文化的延续,还能使这种文化比以往更加蓬勃发展。这些勇敢无畏的黑客新面孔注定会成为永远被人们传颂的传奇。与此同时,技术也在不断发展,从而为他们实现黑客之梦创造了条件。而引领技术发展的那些人,也开始被人们所熟知,他们的名字经常出现在学术论文和学术奖项中,有时则在科学界名声远扬。

这些人是策划者。在他们当中,有偶尔从事黑客行为的科学家,比如杰克·丹尼斯、麦卡锡、明斯基,他们最终更多地被计算目标所吸引,而不是沉迷于计算过程。他们将计算机视为人类创造更美好生活的工具,但他们并不一定会认为你必须在计算机上工作才能实现让生活更美好这一目标。

一些策划者会想象,有一天,具有人工智能的计算机可以减轻人们的思考负担,就像工业机械已经部分解除了人们的体力劳动一样。麦卡锡和明斯基是这一思想流派的先锋,他们两人都参加过1956年的达特茅斯会议(Dartmouth conference),该会议为这个领域的研究奠定了基础。麦卡锡在更高级语言LISP上的工作就是朝着这个目标迈进的,并且他的努力充分激起了斯拉格·拉塞尔、彼得·多伊奇、彼得·萨姆森和其他黑客的好奇心,这些黑客都愿意使用LISP工作。明斯基对人工智能的兴趣则似乎建立在更为理论化的基础上:这个秃顶的、快乐的约翰尼·艾普里西德约翰尼·艾普里西德(Johnny
Appleseed):他是美国的民间英雄,穷其49年时间撒播苹果种子,梦想创造一个人人衣食无忧的国度。,撒播着希望的种子,每一粒种子都是一种思想,能够生长成为一棵名副其实的苹果树,结满实用AI技术和项目的果实。

这些策划者也非常关注如何让更多的研究人员、科学家、统计学家和学生们利用计算机的力量。一些策划者致力于提高计算机的易用性;达特茅斯市的约翰·凯默尼编写的一个更易使用的计算机语言BASIC,可以实现这个目标。与汇编语言相比,使用BASIC编写的程序运行速度要慢得多,还会占用更多的内存,但是它没有机器语言那么难懂。MIT的策划者则重点关注如何让更多的人接触到真实的计算机。这么做有各种各样的理由,最重要的预期规模经济就是其中的一个理由——这种规模经济也是当时非常需要的,因为计算机时间中的每一秒都是有价值的商品(虽然在运行着太空大战的PDP-1周围你感觉不到这种价值)。如果更多的人使用计算机,那么就会出现更多的程序员专家和理论家,这些都无疑会推动计算科学(是的,这些积极的策划者将其称为科学)的发展。但是还有一点,所有黑客都会明白计算本身是前途无量的。约翰·麦卡锡解释了这个信念,他认为人类的自然状态就是在任何时候均可与计算机连线。“用户需要的是能够在长时间内不停顿地任由其支配并操作的计算机。”

未来的人类是这样的:双手放在键盘上,眼睛盯着CRT屏幕,了解有史以来记录下来的关于整个世界的信息和思想。这些信息是所有使用计算机的人都能够访问的。

在批处理的IBM 704上,这一切都不会发生。对于TX-0和PDP-1亦是如此,它们的每周日志表在贴到墙上后会在几个小时内被填满。不,要实现这个目标,必须能够让几个人同时使用电脑。(每个人都拥有自己的计算机,这种思想只有黑客才会觉得值得。)这种多用户概念称为分时(time sharing)6。在1960年,MIT策划者中最有份量的人建立了远程计算机研究小组(Long-Range Computer Study Group)。其中的成员包括杰克·丹尼斯、马文·明斯基和约翰·麦卡锡大叔,他们都目睹了MIT黑客的崛起,他们欣赏并支持这些黑客。他们知道,让人们切实接触到计算机是多么的重要。对他们来说,问题不是是否要实现分时,而是如何来实现它。

计算机制造厂商,特别是IBM,对此并不热衷。很明显,MIT将不得不依靠自己的力量来实现。(BBN的研究公司也在研究分时。)最后,MIT开展了两个项目:一个是主要由杰克·丹尼斯独自努力为PDP-1编写分时系统;另一个则由费尔南多·考巴托(F.J.Corbató)教授负责实施,他向IBM寻求一些帮助来为7090编写系统。

美国国防部,特别是其高级研究计划署(ARPA),自从第二次世界大战以来一直在支持计算机的发展,并留意着用于军事用途的最终应用程序。所以,在20世纪60年代初期,MIT的分时项目获得了长期的资助,并被命名为Project MACProject MAC,其中MAC最开始是Mathematics and
Computation(数学与计算)的缩写,后来又有人赋予了它不同的含义,有Multiple Access
Computer(多路存取计算机)、Machine Aided Cognition(机器辅助识别)、Man and
Computer(人与计算机)。该项目第一代领导人决定使用“project”(项目)而不是“laboratory”(实验室)为名称,这缘于麻省理工学院的校园政治——假如称为“实验室”,他们便很难从其他部门挖到人才了。(这个缩写代表了两个含义:多路存取计算(Multiple Access Computing)和机器辅助识别(Machine Aided Cognition))。美国政府每年会拨款300万美元。丹尼斯将是负责人。马文·明斯基也会积极地参与其中,资助金的三分之一会用于人工智能中刚刚起步的领域,而不是分时开发。明斯基很高兴,因为100万美元是他之前AI预算的10倍,而且他认识到,其余那三分之二的资金中很大一部分也有可能投入到AI活动中。这是搭建理想工作场所的机会,人们可以规划着用精密机器来实现黑客梦想。与此同时,黑客梦想会由那些专心致志地使用计算机的学生们逐步实现。

这些策划者知道,这个实验室需要特殊的人才。马文·明斯基和杰克·丹尼斯知道,天才黑客的热情对于实现他们的宏伟理想是必不可少的。后来,明斯基曾这样评价他的实验室:“在这个实验室中同时进行着好几件事情。工作人员正在研究人工智能中最为抽象的理论,一些(黑客)也在关注这项工作,而大部分(黑客)都不在意。但我们的问题是如何编出实现这些功能的程序以及如何让这些程序工作。”

明斯基很高兴地将这个问题留给了黑客们,期望他们能解决,对于这些人,“计算机是这世界上最有趣的东西”。这些黑客会为了好玩而研究出比《太空大战》还要疯狂的程序,然后接着研究更多的程序,而不是整夜地玩自己做出来的程序(虽然有时候你会在Kluge Room机房中看到有人在通宵玩游戏)。在MAC项目中做着枯燥粗活的黑客们不是在进行太空模拟,而是在处理更大的系统——机械手臂、视觉工程、数学难题以及超乎人们想象的复杂分时系统。幸运的是,在20世纪60年代初期,进入MIT的学生中出现了一批坐在控制台后的最专注、最耀眼的黑客们。而这些人中,没有谁比理查德·格林布莱特更适合“黑客”这个头衔的了。