第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公司(digitalequipmentcorporation)的全新公司,tx-0的一些使用者知道,dec的首批产品就是特别针对tx-0而设计的专用接口。在计算领域,与那些穿着灰色法兰绒制服的ibm人员所具有的“批处理”心态相比,dec的一些创始人有着完全不同的观点,这足以让人兴奋不已。而dec似乎注意到了tx-0社团的这种随心所欲、互动、即兴、凡事都亲自动手尝试的风格,并设计出了促进此类行为的计算机,这更加激动人心。pdp-1(这三个首字母是"programmeddataprocessor",即编程数据处理器的缩写,人们认为这个名称没有“计算机”那么有威胁感,计算机的含义包括了所有类型的笨重巨型机器。)将被称为第一台小型计算机,其目的不是为了实现大批量数字的处理任务,而是为了科学探究、数学公式……以及黑客探索。它的外形非常紧凑,整个设备不超过三个冰箱的大小,因此它不需要过多的温度调节。要开启它,你甚至不需要整个一组工作人员按照正确的顺序排列若干个电源,启动时基发生器(time-basegenerator),或进行其他费力的工作。这台计算机的零售价格也相当便宜,只需12万美元——便宜到人们可以不再抱怨每一秒的计算机时间有多么宝贵。这台机器是dec制造的第二台pdp-1(第一台卖给了附近的一家科技公司boltberanekandnewman,也就是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隔壁的房间klugeroom。它非常漂亮:坐在只有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的时间还多,几乎所有的黑客都将自己的工作转移到了klugeroom。只有少数几个顽固派依然在使用tx-0,而对于pdp-1的黑客们来说,这很适合开一些无伤大雅的玩笑。为了帮助记忆,pdp-1的黑客们在这个全新机器指令集的基础上发明了一些缩写,包括一些奇异的指令,比如dac(寄存累加器)、lio(加载输入/输出)、dpy(部署)和jmp。pdp-1团队会站成一排,然后整齐地喊出:

lac,

dac,

dippydap,

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

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

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

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

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

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

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

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

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

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