第5章 午夜计算机改装组织

格林布莱特是钻研各类系统的黑客,也是计算机应用方面的理想主义者;高斯珀是形而上学的探险家,他喜欢在黑客这个小圈子里做些杂七杂八的事情。这两个人在未来几年内各自充当起了以技术为特征、构成黑客道德基础的文化三角形的两条边,并帮助这一文化发展直至席卷整个mit。至于该文化三角形的第三条边——斯图尔特·尼尔森,则是1963年秋季加入进来的。

来到这里没多久,斯图尔特·尼尔森就显示出了他对未知电子领域的好奇和探索能力,这些特质表明他有潜力成为一名在黑客道德熏陶下的大师级人物。按照惯例,尼尔森在某个周一参加了新生入学后校方组织的一次社会活动。那时,尼尔森还是个个子矮小、少言寡语的孩子。他长着一头卷发,有一双细长的褐色眼睛,牙齿“天包地”十分明显,这副尊容像极了一只小型啮齿类动物。确实,斯图尔特·尼尔森当时也正东嗅嗅、西看看地想找些复杂的电子仪器来玩,他很快就在mit找到了他的目标。

开始是在wtbs,也就是学校的广播电台。电台的一名学生工作人员鲍勃·克莱门茨(他后来也在pdp-6上做过一阵子编程工作)引导这些新生参观控制室。当他拉开一扇门,大家看到的不仅是复杂的机器设备,还看到了斯图尔特·尼尔森。“那小家伙是一个机灵鬼,”他后来回忆说,“他的手正放在我们电话线的关键部位和‘东部校园’的无线电发射机上。”

最后,尼尔森终于在klugeroom找到了pdp-1计算机,这让他兴奋不已。这台平易近人的计算机允许你把手放到上面摆弄,于是斯图尔特·尼尔森竟然真的开始摆弄起这台机器了。被格林布莱特称为“天生的黑客行为学”赋予了他这种自信。尼尔森很快就看明白外部扬声器是怎样连接到这台pdp-1计算机上的,也搞清楚了彼得·萨姆森的音乐程序如何控制扬声器发音。于是,某天深夜,当约翰·麦肯锡和隔壁房间维护tx-0计算机的人都已回家休息的时候,斯图尔特·尼尔森则开始学习pdp-1计算机的编程知识。没用多久,他就在pdp-1计算机上琢磨出了一些新窍门。他用程序编出了几段“合适的”的音频,通过扬声器传送到放在klugeroom内打开的校园电话接收器中。电话系统竟然能够接收这些信号,并把信号传播出去,仿佛信号在电话线上起舞一样。

这些信号确实在舞动着,它们在mit的专线系统上从一个地方舞动到另一个地方,最后来到haystackobservatorysup/sup(也连接到mit的电话系统上),在这里,那些信号传入了一条开放的线路,进而便像脱缰的野马一样肆无忌惮地传遍全世界。根本没有办法阻止这些信号的传播,因为斯图尔特·尼尔森用pdp-1制造出来的这些特殊音频信号恰恰就是电话公司在世界各地用来传送内部电话使用的音频信号。斯图尔特·尼尔森对此知道得一清二楚,利用该技术,他能够遍访该庞大系统(即电话公司)的每个角落而无需花费一分钱。

尼尔森这位当代炼金师、黑客世界的新一代王者给其他pdp-1计算机程序员留下了极深的印象,让他们领教了一位少言寡语的大学新生是如何夺取有将近百年历史的电话系统的控制权的,而他这么做的原因不是出于经济利益,而纯粹是漫无目的的探索。接着,他的事迹便传开了,尼尔森开始在tmrc内和众多pdp-1黑客中间成为英雄一般的人物。不过没过多久,部分从事pdp-1开发的、相对比较保守的人手写了一份报告,指出他的行为已经远远超过了限度。可是格林布莱特以及其他真正的黑客并不这么认为:几年以来,大家在tmrc也不是第一次干这种事了;如果说尼尔森往前多走了一步,那也是黑客道德非常有意义的一次进展。可是,当约翰·麦肯锡听说这件事以后,可能觉得他自己对尼尔森对系统知识永恒不变的渴求也无能为力,于是命令尼尔森立刻停止一切有关工作。“怎么能就这么让一位天才停下来呢?”他后来反思道。最后,事情的发展远远超过了斯图尔特·尼尔森所做的那点事儿,从某些方面来说,这样的事情一直没有停止过。

如果你了解尼尔森在来mit就读前的“事迹”,那么对于他在大学一年级所表现出来的非凡才能就不会感到吃惊了。尼尔森出生在纽约的布朗克斯,他的父亲原先是一名物理学家,后改行成为一名工程师,他在彩色电视机的设计上做出过开创性的贡献。不过尼尔森自己对电子学的兴趣并非来自父母的教导,它就像走路一样自然而然地发生了。等到5岁的时候,他已经开始动手制作晶体管收音机了。8岁时,他又开始动手制作双继电器防盗警报器。尼尔森在学校不愿意与人交往,对学习也毫无兴趣,可是特别喜欢逛电子商店,因为在那里他怎么摆弄电子器件都没有关系。不久,他的几个小伙伴的母亲便不许她们的孩子再跟他一起玩了,因为她们担心自己的孩子会不小心触电。这些孩子没轻没重地乱摸乱动真空管电路和由110伏电压供电的最新型晶体管确实太危险了。有一次,尼尔森就受到了严重的电击,他浑身颤抖,疼痛难忍。事后他还绘声绘色地描述当时他的电子设备如何飞到屋子中间然后炸成碎片的情景。在一次特别严重的电击后,他发誓不再摆弄电器。不过仅仅两天以后,他又重操旧业,于是这个不太合群的少年便继续鼓捣起那些稀奇古怪的东西来了。

尼尔森对电话情有独钟。他的家搬到新泽西的哈登菲尔德后不久,他就发现通过按电话听筒上的开关能实现拨电话号码的功能。然后,在电话线的另一端会有个人说:“你好……哪位?你好?”接着他便发现电话机不是随便的一件什么电器,而是连接到某个系统、可以不停地探索下去的一件电器。于是,斯图尔特·尼尔森很快就开始动手做一些他的邻居们在20世纪50年代中期从未见过的玩意儿,例如自动拨号装置,还有几个可以同时连接到好几条电话线、在其中一条线上接受拨入而在另外一条线上自动拨出的小设备。他学会了熟练操作电话机,就像艺术家们使用各自的创作工具那样顺手。后来,有幸见过他操作的人会对别人讲,假如尼尔森拿到了一部电话机,他会立刻将它大卸八块,首先拆掉不让拨出方听见拨号音的滤音器,接着对电话做几处调整,让电话拨号的速度大幅提高。他从根本上重新设定了电话的工作方案,单方面地去除了“西电”(westernelectric)电话机的不足之处。

尼尔森的父亲在他14岁那年去世了,他的母亲带着他搬到了纽约的波基普西。在这里,他和高中的老师们达成了一项协议:由他负责维修他们家里的收音机和电视机,而自己无需上课。尼尔森把时间花在了附近新开张的一家小型无线电台上。按照他后来的解释,他“把大多数东西都组装到一起了”。尼尔森把各个元件连接妥当,调节好传送器,还找出了系统内噪声和嗡嗡声的来源。当这家广播电台正式营业以后,他便成了这里最重要的工程师,有时甚至还会客串电台dj。系统的任何一点小毛病对他来说都是一次新的探险,同时也是吸引他去探索、去尝试某个新元件、去观察会发生什么现象的一次诱惑。渴望看看到底会有什么后果的欲望便是斯图尔特·尼尔森如此行事的最终理由,与它相比,什么自我防护或暂时的疯狂举动都已不在话下了。

怀着这样的心态,他在tmrc和pdp-1的黑客圈子中如鱼得水。在俱乐部内部本来就有不少对钻研电话系统颇有兴趣的黑客,尼尔森来了以后,这些兴趣终于可以真正地开花结果了。除了是一名技术天才,尼尔森解决问题时那股劲头就像用来捕捉飞禽的猎狗那样坚韧不拔。“他解决问题靠的就是动手去做,”尼尔森的同班同学,同时也是一名黑客的唐纳德·伊斯特雷克(donaldeastlake)后来回忆道,“他总是百折不挠。假如你就试了几次后便放弃了,你就永远解决不了这个问题……世界上的很多问题,只要你有其他人2倍或3倍的毅力就一定能解决。”

尼尔森给大家展现出了从黑客道德延展出来的一种素质——如果我们为了获得知识而自觉自愿地做事,那么我们就能获得更加丰富的知识,制造出更多的东西,控制更为广阔的世界。自然,电话系统成了尼尔森在mit探索的首选目标。在这些探索历程中,他开始时用pdp-1,后来改用pdp-6计算机,这两者都是十分理想的开发工具。就在尼尔森开始在电子领域的探险之旅时,他还坚持着那条非正式的黑客道德观。你可以给任何地方打电话,尝试任何方法,不停地试下去,但是这一切都不能以经济利益为目的。尼尔森并不赞同本校那些做出“蓝盒子”的同学,因为那是一种打非法电话的设备,发明这种设备的目的是为了节省电话费。尼尔森和他的同伴们相信他们实际上是在帮助电话公司。他们要找到通往全美各地的优先电话线路,然后分别测试这些线路。假如这些线路不好用,他们就会向有关部门报告。

为了达到这一目的,必须乔装改扮成贝尔电话系统公司的技术人员,不过黑客们自有办法,特别是在阅读了一些禁书以后(如经典的《电学原理和电话电报应用电子学》、《远程拨号笔记》,或最近几期的《贝尔系统技术期刊》),他们更是模仿得惟妙惟肖。

学习了这些知识之后,你就能通过电话线走遍全世界,还可以这样跟接线员说:“这里是测试部,在赫肯色市与跟你通话,请帮我转接到罗马。我们正在测试这条线路。”对方便会将号码详细地告诉你,用这个号码,你就能得到另一个号码,用不了多久,你就能问在意大利的接线员那里当天的天气怎样。也许,你还可以将pdp-1接上“蓝盒子”,让它自己路由,再路由,直至把你的电话接到英格兰某个特定的电话号码上,这个号码除了用“蓝盒子”以外,是无法通过正常方式从美国接通的。当对方拿起听筒,你甚至还可以听到有人在给儿童讲枕边故事。

20世纪60年代中期,这家电话公司开设了免费的800区号服务。当然,黑客们清楚这是一项什么样的服务。他们打算以科学的缜密态度描绘出这些没有现成资料的领域的全貌:他们要一次次利用800号码游遍从维京群岛到纽约的每一个新奇地方。最终,电话公司有人直接拨通放在pdp-6计算机旁边的那部电话,询问从这里拨出的400多次通话到底是要打到哪个地方的,因为在电话公司看来,那些地方根本不存在。很不走运,这家电话公司设在剑桥的分公司以前曾经和mit打过交道,这次他们又再次突然光顾了科技广场大楼的第9层,要求这些黑客把“蓝盒子”交出来。黑客们指了指那台pdp-6计算机,告诉他们其实是这台机器在搞鬼,不过当那些人威胁要将整台计算机没收以后,黑客们只好把电话接口拆了下来交给他们。

虽然尼尔森开始时对pdp-1感兴趣只是因为用它可以操纵电话,但后来,他已经可以用pdp-1计算机做很多事情了,甚至编写任何程序都不在话下。程序编得越多,他的经验就越丰富,经验越丰富,也进一步激励他再去编写更多的程序。有时,当某个学生正在计算机的控制台上笨手笨脚地调试自己的程序时,他则会坐在旁边,也许会在他后面指指点点,不过这样一来反而让这名学生更加不知所措。最后,尼尔森会突然向他建议:“假如我帮你解决了这个问题,你会把剩下的上机时间让给我用吗?”那名学生很可能已经被这个问题折磨了好几个星期,当然欣然应允。他不太相信这个看上去不太正常的家伙有能力解决这个难题。接着尼尔森会一把把他推到一旁,一屁股坐到控制台前,打开teco编辑软件,飞快地输入程序代码。5分钟后,他就搞定了一切,随后立刻用计算机旁的model33电传打字机把程序打印出来,“嘶”的一声将打印纸从那台行式打印机上扯下来,跑回计算机,取下保存着那个学生的程序的纸带并把他打发走,然后就开始忙自己的事了。

尼尔森简直无所不能。他既会使用klugeroom中的pdp-1计算机,也会使用projectmac那里的新型pdp-6。其他人使用pdp-1及其功能有限的指令集时,可能会抱怨必须要用好几条指令才能完成一个简单的操作,然后只得编写一个子例程来实现程序。尼尔森能够用最精简的代码编写程序,不过他还想给这台机器增加几条指令。用硬件方式给计算机增加指令是一个非常棘手的问题。当年给tx-0计算机增加新的指令时,就必须首先关闭计算机的电源,等到厂家派来的那些经过培训几乎达到“神”这一级别的大师们对计算机的大脑做了必要的脑外科手术后才得以实现。这么做似乎也合情合理——有哪一所大学能让几名本科低年级学生随便摆弄一台极其昂贵的计算机的精密零件呢?

任何大学都不会这么做。实际上,明斯基的一名叫丹·爱德华兹的研究生(他曾参与过《太空大战》游戏的部分代码编写工作)自告奋勇承担起保护硬件设备的任务。高斯珀透露,爱德华兹曾经宣布“任何人哪怕私自更换打字机的墨带也将会被永远地驱逐出去”!不过黑客们对校方允许做什么和不允许做什么的规定本来就没放在心上。至于丹·爱德华兹的要求则更是被大家当做耳旁风:因为在他们看来,爱德华兹能够担任这一职务,和大多数官僚一样只是个意外。

尼尔森认为,增加一条“累加至内存”的指令会大大提高机器的性能。假如按部就班地走流程,很可能要花几个月的时间;如果他亲自来做这件事,就会学到更多的计算机工作原理。于是,某天晚上,斯图尔特·尼尔森便自行召集成立了一个名为“午夜计算机改装组织”。这是一个“招之即来”的组织,它巧妙地钻了mit禁止未经许可私自拆卸昂贵计算机这一规定的空子。它的出现顺应了历史潮流。包括尼尔森、一名学生工作人员和几名饶有兴致的看客组成的“午夜计算机改装组织”在那天晚上打开了计算机机柜,接着对pdp-1进行重新连线。尼尔森将指令解码器的"add"(累加)线和"store"(存储)线之间的二极管连接了起来,给他自己增加了一个新的操作码,这个操作码按理说应该支持所有其他的指令。然后,他将计算机照原样装好,让任何人都看不出来。

那天晚上经黑客们改装以后,这台计算机工作得很好。可是过了一天,一位名叫玛格丽特·汉密尔顿的“官方授权用户”来到9楼,她受命要为一个气象模拟项目完成一个名为“vortex模型”的任务。玛格丽特·汉密尔顿当年刚刚开始其编程生涯,不过有朝一日,她会负责阿波罗登月飞船内部的计算机系统。当时,vortex程序对她来说已经是一个很大的程序了。她对9楼黑客们的顽皮胡闹早有耳闻。她对这些黑客的整体印象是:他们是一群彬彬有礼但不修边幅的大男孩,对计算机的热爱常常令他们变得无法无天。尽管如此,她还是能和其中一部分人相处得很融洽。

玛格丽特·汉密尔顿在她的vortex程序中使用的汇编程序不是黑客自己写的midas汇编程序,而是dec公司的decal系统,黑客们对dec公司的这个系统根本不屑一顾。因此尼尔森和“午夜计算机改装组织”的人在测试前晚改装后的机器性能时就没有对decal的汇编程序进行过测试。他们甚至根本没有想到decal汇编程序会用和midas完全不同的方式使用指令代码,而在"add"线和"store"线之间增加两个二极管导致轻微的电压降低对这种方式造成的影响相当大。当然,玛格丽特·汉密尔顿对这台pdp-1计算机前晚经历的那次改装一无所知。所以她也没有立即弄明白到底是什么原因导致在将vortex程序输入到decal汇编程序以后,她的系统停了下来,不再工作,接着就死机了。她的程序本身没有任何问题,但就这么莫名其妙地崩溃了。虽然程序经常会因各种原因死掉,但这次玛格丽特·汉密尔顿禁不住发起牢骚,就有人凑过来看看到底发生了什么事,接下来“午夜计算机改装组织”昨晚干的好事便彻底曝光。于是各种牢骚此起彼伏,还有人开始谴责这种行为了。

不过,这并不是“午夜计算机改装组织”的末日。爱德华兹一伙人不可能整晚不睡觉来看守这些计算机,并且明斯基和projectmac的其他负责人也知道那几个黑客的夜间行动不过是一次关于逻辑设计和硬件技巧的研究生实践课。可能部分是由于尼尔森和其他黑客改装工作做得很好,像“伟大的玛格丽特·汉密尔顿程序覆盖sup/sup”那样的灾难性事故今后也不太可能再发生,因此ai实验室禁止黑客拆装硬件设备的禁令便逐渐变得名存实亡,没有人会专门引经据典搬出这条来指责别人,它就好像是一条禁止在周日公开殴打马匹的法律那样,没有人再去理会它了。最后,“午夜计算机改装组织”终于觉得自己拥有了足够的自由,他们可以修改指令,安装新的硬件,甚至可以让9楼灯光的强弱随着计算机的屏幕而自动调整明亮度。假如你打开teco文本编辑软件,那么室内的灯光会自动变暗,这样眼睛盯着crt显示器时会舒服很多。

不过最后这项发明创造也带来了意想不到的后果。当用户出现一个错误的时候,teco编辑器便会操纵电传打字机产生一次响铃音以示提醒。一般来说,这没有任何问题,可某一天,计算机突然变得乖戾起来——它对电源线的波动(例如由电传打字机的振铃产生的那种电流变化)显得异常灵敏。有几次,当某个人使用teco时出了一次错,不仅电传打字机的振铃会响,而且计算机本身也会变得“无厘头”起来——它会完全失控:可能痉挛般地输入任意字符,激发振铃,或最最让人不安的是“让屋子里的灯光没完没了地一会儿开,一会儿关”。计算机眨眼之间狂性大发,好像科幻小说中世界末日之战一样可怕!

黑客们觉得这种状况极度搞笑。

ai实验室的负责人,尤其是马文·明斯基对发生这类事情一点都不觉得奇怪。马文(黑客们彼此之间从来都称呼对方的姓,但对他则直接称呼他的名)知道,只有黑客道德才能让这个实验室持续不断地出成果,他不会对黑客思想的某个核心组成部分开罚单。另一方面,斯图尔特·尼尔森总是违反规定,假如他在进行电话系统实验的时候被逮了个正着,这个“烫手的山芋”反而会变得变本加厉。总得做些什么来约束一下他们才好。于是明斯基给一个关系不错的朋友爱德·弗雷德金打了个电话,告诉他自己这里有个极其聪明的19岁的年轻人,这个年轻人特别喜欢摆弄精密的电子设备,但是非常调皮捣蛋,让他十分头疼。最后他问弗雷德金,他那里是否需要这样的人。

爱德·弗雷德金不仅是马文·明斯基的密友,还是“信息国际联合企业”(informationinternationalincorporated,3)的创始人。此外,他还认为自己是世界上最伟大的程序员。

爱德·弗雷德金一头黑发,鼻子稍稍带钩,透着少许机智,鼻梁上架着一副眼镜,镜片后面是一双棕色的眼睛。弗雷德金没有上完大学。他于1956年在空军服役期间学习了计算机的知识,并且是第一批操作sagesup/sup计算机防空系统(赛其系统)的人员,这个系统后来被认为是人类已知的最复杂的系统。弗雷德金和19名学员在刚刚萌芽的计算领域开始接受了一次强化的培训课程——他要学习存储磁鼓、逻辑电路、通信和编程等相关知识。弗雷德金后来回忆起这段经历时,用温和的声音娓娓道来:“一周以后,除了我以外,其他人都被淘汰了。”

弗雷德金并没有像考托克、萨姆森、格林布莱特或高斯珀那样完全被计算机迷住,从某些方面来说,他是个非常理性的人,在许多领域都展现出了自己的才华,因而他无法仅仅专注于计算机。可是他又对计算机有着强烈的好奇,于是退伍以后,他在mit下属的林肯实验室(lincolnlab)找到了一份工作,没过多久便被誉为实验室的顶级程序员。弗雷德金总是能够提出新颖的算法,其中一些现在已经成为大家耳熟能详的编程协议了。他还是最早预见到pdp-1计算机重要意义的人之一。早在这种计算机的样机生产出来之前,他就已经知道这种计算机,并预定了第一台pdp-1。但bbn公司说服他放弃这次购买决定,转而聘请他为这种计算机编程并编写一个汇编程序。弗雷德金答应了,他认为他的汇编程序可以说是一件程序杰作。除了系统方面的工作以外,弗雷德金还从事后来比尔·高斯珀特别擅长的数学方面的研究,并提出过有关自动机的部分早期理论。然而,他并不是一名纯粹的黑客,他有一家子需要养活而且他也不乏商业直觉——他离开了bbn后创立了自己的公司,即informationinternational。这家公司的业务涵盖所有数字设备的维修和特殊计算机的咨询服务。公司最终落脚于洛杉矶,但在相当长的一段时间内,它自己的设备也都安置在科技广场大楼内,比放置pdp-6计算机那层楼低两层。

弗雷德金对科技广场的黑客社团非常满意。这些人将黑客思想向前推进了一大步,他们发现世界上只有在这几个少得可怜的地方(例如mit、dec、军方和bbn)才可以接触到计算机,而且用计算机进行计算是这些用户唯一的目的,即便这样,他们也只能分时使用。可是在mit,黑客精神却是全天候的。弗雷德金开始喜欢起这群黑客了——他用他们的语言讲话,对他们的工作发自内心地敬佩。有时,他还会跟这些黑客一起到唐人街就餐。在这些场合,他们之间百无禁忌,无所不谈。这些黑客中的很多人都喜欢看科幻小说(请注意《太空大战》游戏的最初思想是怎么来的),弗雷德金有本事将海因莱因和阿西莫夫的奇迹与黑客们正在做的工作联系起来——把计算机变成一个个功能强大的系统并为人工智能在软件方面打下坚实的基础。弗雷德金特别善于激发黑客们的想象力,他还曾经非常严肃地思考过,有朝一日人们可以把微型机器人放在头上,等头发长到某种发型所要求的精确长度后,机器人就能将多余的头发剪掉。(弗雷德金在一次电视脱口秀节目中反复提到他这个设想,之后在全美还曾引发过一阵大讨论。)

虽然弗雷德金对这些黑客赞赏有加,但他骨子里还是认为他自己才是最好的程序员。虽然黑客道德鼓励靠集体的努力实现全面进步,不过每一个黑客还是希望自己能被别人当做计算机奇才。他们渴望展示自己运行速度飞快的程序和高涨的编码热情,并且这些成绩也能被大家所津津乐道。弗雷德金从事了多年计算机编程工作,一路走来自我感觉良好,并且越来越好。对他而言,编程是他最引以为傲的一种技术。

“我还从没有碰到有谁编的代码会比我还多,各种情况都算上,”弗雷德金后来回忆道,“不过尼尔森很可能会超过我。”从计算机知识的角度来说,尼尔森是个天才;从他的方式方法上说,他是个创新者。他在解决问题的过程中总是全力以赴,他心无旁骛的工作状态是普通人难以企及的。弗雷德金真的应明斯基的推荐聘用了这名年轻的黑客,并且没过多久,他就认识到即使在这个天才成堆的地方,尼尔森也能表现出他的独特之处,那就是他仅凭一己之力便能完成“程序员人浪”才能完成的工作。当然,由于informationinternational也在科技广场大楼内,因此尼尔森自然能够和9层ai实验室的人厮混在一起,并同样可以在那里完成好几名程序员才能完成的工作。不过弗雷德金从没有限制他这么做,因为每当弗雷德金交给尼尔森一项任务时,他总能像变戏法似的拿出让弗雷德金满意的成果。

有一个特殊的软件项目需要在dec的pdp-7计算机上完成,弗雷德金想让尼尔森来完成这项任务,但不知何故尼尔森对此一直兴趣寥寥。恰在此时,弗雷德金的公司还需要设计某种计算机和用于保存数据的磁盘驱动器之间的接口。弗雷德金估计后面这个项目需要6个人花一个月时间才能完成,因此想先做其他的项目。这时尼尔森拍着胸脯向他保证,说他本周末就能拿出部分成果。等到下周一,尼尔森带来了一大张纸,上面几乎布满了细小、潦草的文字,一堆一堆龙飞凤舞的文字之间有的还用长长的线连起来,另外还有胡乱涂改和在原文上复写的痕迹。这可不是弗雷德金所要求的pdp-7的程序,而是整个磁盘驱动器的接口。尼尔森试图用这种建设性的方式推掉指派给他的任务。弗雷德金的公司就按照那张纸上的设计制造出了那件设备,装好后运行良好。