第6章 成功者和失败者

起初,multics系统是mit与通用电气公司合作的产物,接着honeywell公司sup/sup也参与进来了。这个系统到处都是毛病。当黑客们听说要让它运行在带电传打字机的model33型终端上,而没有使用更快的交互式crt显示器时,他们便断定这个系统简直没救了。multics没有用效率更高的机器语言,而是用ibm自己的名为pl/i的计算机语言编写的,这对黑客们来说简直骇人听闻。当这个系统首次运行的时候,它的速度慢得像乌龟一样。由于速度太慢,黑客们得出结论,认为该系统的大脑一定受到了损伤——脑残。这一经常被用来形容multics的词现在已经变成黑客们标准的轻蔑语。

不过multics最让人不可接受的是其无处不在的安全特性以及根据用户上机时间收取费用。multics的设计理念便是要掏走用户口袋里的最后一枚硬币:你要为自己占用的内存付费,为占用的磁盘空间付更多费用,为使用时间付的还要多。与此同时,multics的那些管理者还公然宣称只有这种方法才能维持公共设备的运转。这一系统完全颠覆了在其周围传播着的黑客道德——它非但没有鼓励大家把更多的时间用于上机(按照黑客的观念,分时计算机唯一的好处就是增大了大家的上机机会),反而在你登录系统后还要求你尽可能减少上机时间,尽量少地使用计算机的各种设施!multics的设计理念简直太糟糕了。

黑客们用尽各种技巧和手段在multics系统上“大闹天宫”。这么做似乎成了他们每天的工作。正如明斯基后来说的那样:“有些人做的项目其他人并不喜欢,因此这些人就会对做项目的人开各种各样五花八门的玩笑,为的就是不与他们共事……这些黑客总是用一些荒唐的行动来打乱教授们的工作。”

鉴于黑客的袭扰活动有日益游击化的趋势,ai实验室的管理方不得不小心谨慎地处理可能对黑客的工作环境造成影响的意见。1967年前后,那些管理者打算进行一次大改革,他们要将黑客钟爱的pdp-6计算机上的操作系统更换为一套分时操作系统。

那时候,明斯基已经不再做多少ai实验室的管理工作,交由他的朋友,也是尼尔森在informationinternational公司的老板爱德·弗雷德金来负责。当时爱德·弗雷德金也在进行角色转换,逐渐从业务工作中脱身,开始担任mit的教授。(弗雷德金后来成为系里最年轻的正教授,也是唯一一位没有学位的正教授。)由于弗雷德金自己就是一个顶尖的程序员,因此他已经和黑客相差不远了。他十分欣赏通过“无为而治”的方式让黑客随意发挥自己的聪明才智,他认为只有这样,实验室才能多出成果。但有时他觉得黑客也能够从严密的分工协作中受益。在他刚刚接掌实验室管理大权的时候曾经组织过一次“人浪”式的攻关,打算用这种方式解决一个机器人技术方面的问题。他亲自为每一名黑客布置任务,要求他们各自解决该问题的某一具体部分。但最后他的努力还是草草收场了事。“所有人都认为我疯了。”弗雷德金后来回忆道。他最后还是接受了这样一个事实,即让黑客做事的最佳方式就是向他们提出建议,接着期待他们能对这个建议产生足够的兴趣,然后你就能获得无论业界还是学术界都闻所未闻的成果。

明斯基和弗雷德金一致认为分时系统是非常重要的。黑客和“官方授权的用户”都对pdp-6计算机有着持续不断的需求,但不管是哪一方都饱受长时间苦等上机机会的折磨。尽管如此,黑客们还是认为分时系统难以接受。他们拿ctss、multics甚至还有pdp-1上杰克·丹尼斯的更为友善的系统为例,抱怨说假如一个人同时和很多人共享同一台计算机,那么他就必须忍受运行速度变慢、计算能力下降的后果。

黑客们指出,在分时系统下有几个大型程序根本无法运行,其中之一便是彼得·萨姆森一直以来都在编写和完善的怪兽程序。那是他刚刚开始使用tx-0计算机编程时顺带编写的。如果你输入mtasup/sup下属两个地铁站的站名,这个程序就会告诉你应该乘坐哪条线路以及在哪里换乘等才能从一个车站到达另一个车站。现在,萨姆森正在处理整个纽约的地铁系统……他想将整个系统都装入计算机的内存,并将全部列车时刻表保存在一个计算机可以访问得到的数据磁盘中。有一天,他启动了这个程序,希望找出一条没有重复路线又能走遍整个纽约地铁系统的线路。这一课题吸引了部分媒体的关注,接着就有人建议看一看是否可以用pdp-6计算机来完成这项任务,并打破此前由一名哈佛大学的学生创造的游遍纽约市所有地铁站的记录。

经过几个月的努力,萨姆森终于拿出了自己的方案并且于某一天由两名黑客去亲自实践。位于曼哈顿的mit校友俱乐部有一台电传打字机,它可以连接到这台pdp-6计算机上。总共有20多名黑客担任通信员在这条线路的沿途守候着,他们按时通过公共电话亭汇报最新的进度信息,报告最近的火车运行情况、晚点情况并记录未经过的线路。另一些黑客则将这些信息通过电传打字机输入,返回给剑桥的pdp-6去计算整个线路的变动情况。那两名充当乘客的黑客每经过一站,萨姆森便在一张地图上将该站划去。这些留着军人般小平头的疯狂家伙(他们和那些留着长发、采用其他举动制造新闻效应的抗议者们形成了鲜明的对比),他们的这一设想给了媒体极大的想象空间并得到一整天的关注。"thegreatsubwayhack"(精彩的地铁程序)这篇报道便记录下了这次值得永远铭记的pdp-6应用实例。

这件事也强调了格林布莱特、高斯珀和其他黑客坚持的那个最基本的观点,即这一奇迹只有在程序使用全部计算机资源的情况下才能实现。黑客们轮流上机使用那台pdp-6计算机,就好像它是他们自己的个人计算机一样。他们常常运行一些显示程序,这些程序采用实时工作模式,要求计算机不断地刷新显示器屏幕;分时计算机系统则会大大降低显示程序的运行速度。黑客们已经习惯了因独占pdp-6的控制权而不时出现的小小“装饰”,例如他们可以通过闪烁的指示灯灯光跟踪程序的进度(灯光的闪烁可以指示哪些计算机寄存器正在进行读写操作)。这些额外的“装饰”会随着分时系统的引入而不复存在。

不过说到底,分时问题是一个美学问题,只不过“无法完全控制整个计算机”的理念让人觉得心里不舒服而已。即使计算机在分时系统下能够以和单用户模式几乎完全一样的方式对用户做出反应,你心里还是很清楚:它已经并不完全属于你一个人了。

黑客们在这个问题上的固执态度折射出他们对计算工作的质量非常注重,他们不打算为了使用一个低级的系统而让步,哪怕这个系统会让更多的人有机会使用计算机并且也许还会将探索计算机世界的福音广泛地传播开来。他们认为,只有尽可能地使用最好的系统才会有助于探索计算机的奥秘。分时系统根本算不上好系统。

弗雷德金面对的是一场艰难的政治斗争。他的策略是扭转以格林布莱特为代表的、对分时系统的极端抵触情绪。弗雷德金和格林布莱特俩人的关系还是比较密切的。弗雷德金是9楼所有人中唯一称呼格林布莱特为“里基”(里基,是正式名“理查德”的昵称——译者注)的人。于是他主动和格林布莱特套近乎,找各种理由去打动他。他告诉格林布莱特,新增一件硬件设备会让pdp-6的计算能力大为改观,这个新增的设备会将现有内存增大到超过世界上任何一台计算机。他还保证新的分时计算机系统会比迄今为止的任何系统都好,并且黑客对这个系统也拥有控制权。就这样,他连着对格林布莱特做了好几个礼拜的思想工作,最后里基·格林布莱特终于同意给pdp-6计算机装上一套分时系统。

就在说服了格林布莱特后没多久,一天,高斯珀和另外几名黑客一起走进了弗雷德金的办公室。这些人在弗雷德金的办公桌前一字排开,用冷冰冰的眼神齐刷刷地盯着他。

“出什么事了?”弗雷德金问道。

他们继续盯着他,又看了好一会儿,最后才说:“我们想知道你对格林布莱特做了什么,我们有理由相信你对他进行了催眠。”

高斯珀极其不能接受许多人同时对那台pdp-6计算机发号施令。他的这一举动让弗雷德金想起了艾茵·兰德(aynrand)的小说《thefountainhead》(源头)中一位名叫洛克的建筑师。这名建筑师设计了一座漂亮的建筑。当洛克的上司接手了整个设计并把这座建筑弄得不再像从前那样以后,洛克炸毁了那座建筑。弗雷德金后来回忆说,高斯珀告诉他,如果他坚持在pdp-6上安装分时系统,高斯珀就只有将那台机器毁掉。“他觉得假如要对pdp-6做那么可怕的事情,他就只有毁了它。我理解这种感觉,于是我做了部分让步。”新的折中方案就是这台机器可以在夜晚以单用户模式运行,如此一来,黑客们就能够运行他们那些庞大的程序,并且这台pdp-6也可以任由他们发号施令了。

整个分时系统的实验实际上并没有开展起来。原因是有人编写了一个特别的、新的分时系统,而这个新系统的灵魂便是黑客道德。

系统的内核是由格林布莱特和尼尔森共同编写的,他们夜以继日地工作了几周才完成。就在这款软件部分完成后,汤姆·奈特和其他黑客开始对其做些必要的改造以便适应pdp-6计算机和全新的附加内存设备——这个设备装在一只巨大的机柜里面,机柜的体积相当于两台自助洗衣店里的大型洗衣机,它有个昵称,叫"mobymemory"。尽管管理层批准黑客自己开发分时系统,但格林布莱特和其他黑客却对这个系统的最终特性拥有完全的发言权。这个新的分时系统与其他系统(例如ctss系统,即“兼容分时系统”)有什么不同呢?其中一个不同之处就是它的名字,汤姆·奈特将这款黑客自己编写的系统命名为:不兼容分时系统(its)。

这个名号颇具讽刺意味,因为就与其他系统和程序的友好程度来说,its的兼容性比ctss更强。就黑客道德的理念来说,its更是不在话下。its可以轻而易举地连接到其他东西上——这种方式赋予系统无限的扩展能力,方便用户有效地探索计算机世界。在任何分时系统中,几名用户能够同时运行在its环境下编写的程序。但在its上,一名用户也可以同时运行好几个程序。its还具有异常强大的显示功能,并有一个在当时非常先进的编辑软件,这个软件使用的是全屏方式(格林布莱特后来自豪地说:“这个编辑软件比世界上其他同类软件早了好几年。”)。由于黑客们希望在分时系统下计算机的运行速度能像在单用户模式下那样迅速,因此格林布莱特和尼尔森用机器语言编写的代码,将用户在分时系统上对计算机的控制能力提高到了前所未有的程度。

its中对黑客道德价值观的体现更加明显。几乎与所有其他分时系统不同,its并没有采用口令机制。实际上,这个系统被设计成允许黑客尽可能多地访问他人的文件。以前的做法是将纸带放进抽屉里,抽屉就成了一个集中存放程序的程序库,用户可以使用或者改动这些程序。这种方式现在也嵌入到its中了,每个用户都能打开保存在磁盘上的其他人的个人文件。its的开放式架构鼓励用户查看其他人的文件,看看其他人正在编写哪些精巧的程序,或在别人的程序中找找错误然后帮他改掉。如果想要一个计算正弦函数的例程,你就可以看看高斯珀的文件,找出他用10条指令编写的那段程序代码。你可以浏览顶尖黑客编写的程序,找些灵感,甚至对别人的代码夸奖一番。its的理念就是:计算机程序并不属于个人,而属于世界上的所有用户。

此外,its还保留了黑客都有的那种集体感,即当只有一名黑客在使用计算机时,其他人围在旁边看他编写代码的那种感觉。通过一个精巧的矩阵开关,任何its下的用户都可通过键入一条命令找出都有谁正在同时使用这个系统,而且还能切换到任何一个人的终端屏幕上观看他的一举一动。你甚至可以和其他用户一道进行软件开发。例如,奈特可能登录进来,发现高斯珀正在另一台终端上忙碌着,便可以将自己的程序提供给他参考,然后还能在高斯珀正在编写的程序中插入几行自己的代码。

这一功能还有一些有趣的用途。后来,当奈特构建出了一些彩色图形终端之后,有一个用户也许正在为自己的程序绞尽脑汁、冥思苦想的时候,突然屏幕上出现一只六条腿的……臭虫。这只臭虫可能会爬到屏幕上方,大口地吃掉你的代码,到处留下碎屑。在另外一个终端那里可能会爆发出异常兴奋的大笑声,其实这种笑声是一种外人难以理解的表达方式,他是在告诉你,你的程序到处都是毛病。但即便如此,任何用户都不仅有权开这样的玩笑,而且有权打开你的文件,删掉(他们称为“割掉”)你辛辛苦苦编写的程序和宝贵的注释,但还没有人这么做过。在its系统上,黑客都把自己的名誉看得很重。

its最能体现它对用户的信任之处,就是它对“有意使系统崩溃”这种行为的处理。一名黑客的正式“成人礼”便是深入到分时系统内部,用数字方式犯下这种“故意伤害罪”(可能让寄存器进行了大量的循环计算),进而导致系统崩溃。此时系统完全死掉了。这种情况时不时地会发生几次,于是有些人就必须对系统加以完善,避免类似事件再次发生。系统的安全措施越严密,某些喜欢胡闹的黑客想要驯服这个系统的挑战也就越艰巨。例如,要想让multics崩溃就非常不容易。因此,总是有些程序员大侠通过让multics崩溃的方式来证明自己的能力。

相比之下,its则准备了一条命令,它的具体功能就是让整个系统瘫痪。你要做的就是输入"killsystem"这条命令,然后这台pdp-6计算机就会慢慢地停止运转。设计这一命令的初衷是让系统崩溃变得索然无味,因为那只不过是举手之劳而已。

在极少数情况下,有些“失败者”会看着所有可用命令,自言自语道:“kill这个命令是干什么用的?”接着整个系统便会停止下来,不过its大体上证明了这一点,即“最好的安全措施就是没有安全措施”。

当然,在把its装到pdp-6计算机上后,有一段时间调试工作做得比较多,从某种意义上说,调试和修改工作延续了10多年。很多黑客调试its的时候一改就是好几天,格林布莱特就是其中最突出的一个。他们搜寻程序错误,增加新的功能,修改部分代码以提高速度……这些人不停地对its进行着修改和完善,最后its实际上已经变成系统黑客的家园了。

在ai实验室这个圈子里,系统黑客是最重要的角色。黑客道德的观念允许任何人对its进行修改和完善,但如果进行系统程序的修正,那么你的工作质量便要被大家放到明亮的聚光灯下观察,也就是所谓的公共后果——如果你打算改进midas汇编程序或its-ddt调试器,要是你犯了一个可怕的错误,那么所有人的程序便会无一例外地崩溃,人们会找出应该由“失败者”负责的那部分错误。另一方面,黑客思想中还没有什么东西比系统软件的质量更重要。

不过,那些制定计划的人却并没有给予编制系统程序同等的重视。他们在意的是应用程序,即用计算机完成远远超出计算工作本身的任务,利用计算机建立一些有用的概念和工具以造福人类。但对于黑客们来说,系统开发便是他们的终极目标。毕竟,大多数黑客早在孩提时代便一直钟情于各种系统。一旦认识到创建系统的终极工具是计算机,他们就将生活中所有其他的东西全抛在脑后,义无反顾地投入其中。使用计算机,不仅可以建立令人目眩神驰,有如拜占庭风格般复杂、协调和高效的系统,而且由于有了可以使用"moby"扩展内存的操作系统(例如its),计算机本身实际上也成了他们感兴趣的系统。its之美体现在它将自己毫无保留地呈现出来,让你能够非常容易地编写适用的、新的增强功能。its几乎就是黑客们的起居室,在这里每个人都可以按自己的喜好使用它,每个人都可以找到自己的一方乐土并尽情施展才华。its是完美的,是可以用来创建其他系统的系统。

这是一个无穷无尽的螺旋上升的逻辑循环。当使用its时,人们可能会对这个或那个功能深表赞叹,但他们想得更多的是如何完善这个系统。这种想法太自然不过了,因为由黑客思想得到的一个重要推论是:没有任何一个系统或程序是真正完成了的,你总能让它变得再好一点。每个系统都是活生生的有机体:如果人们不再对它进行维护和完善,它就会死亡。

当你完成了一个系统程序(例如一个汇编程序或调试器),或者某种运行速度快且(如你所愿)运转良好(例如一个多路复用器的输出接口)的东西,你同时也制造出了一件工具、提出了一项发明或改进了某种东西,将你今后的探索提高到了一个更高的层次。这是一个特别的循环过程,是螺旋式上升的过程。在这个过程中,系统程序员就是他为之完善的系统的忠实用户。有很多黑客认为那些妨碍他们进行最优化编程、时不时跳出来的烦人问题都是通过事后的修补解决的,并进而使系统最终达到艺术级的完美程度。(当然,真正的最优化编程只有在消除了人与纯计算机之间的障碍之后才能实现。不过这种理想情况不可能出现,因为那必须让黑客和计算机在生物学上合二为一才可以。)在黑客创造的its系统下,编写程序变得加容易,程序运行速度也大为提高,并且该系统还允许程序通过使用更多的机器资源获得更强的计算能力。因此,黑客不仅可以从编写优秀的系统程序中得到极大的满足(因为每个人都要用到这种程序并对此表示钦佩),而且从今以后他还将在编写下一个系统程序的路上向前走得更远。

下面引用一位名叫唐·伊斯特莱克的黑客在its首次运行5年后所撰写的进度报告sup10/sup,内容如下:

its系统并非“人浪”的产物或无心而为的产物。这个系统的性能完善工作是渐进式的,并且自始至终从未停止过。一个大型系统的完善工作永无止境,这是千真万确的……总的来说,这个系统可以说是由用户设计且由设计者具体实现的。正是由于设计者也同时是实现者,才得以避免很多不切实际的软件设计问题。当软件的实现者也是设计者的时候,他不仅在编程过程中悠闲放松,而且其自豪感也与日俱增。如果用户就是设计者,那么its的各个功能就绝不可能华而不实;如果设计者便是用户,那么its的各个功能用起来还能不得心应手吗?

这段散文有点晦涩难懂,但它的观点却非常鲜明——its便是黑客道德的又一个极为强烈的体现。很多人甚至认为这个系统应该成为遍及全美的所有分时系统的国家标准,让美国每一个计算机系统都能传播黑客道德的福音,消灭讨厌的口令概念,促进人们亲自动手、无拘无束地参与系统调试活动,向世人展示通过分享软件(程序并不属于作者,而属于计算机的每一个用户)获得的增效力量。

1968年,几家主要的计算机学术机构在犹他大学召开了一次会议,目的是制定分时系统的标准,以便用于dec公司即将推出的最新机型——pdp-10计算机。pdp-6和pdp-6相比没有太大的变化,大家考虑的两个备选操作系统之一便是黑客开发的“不兼容分时系统”。另一个操作系统的名字是tenex,它是由bbn公司编写的,不过当时尚未真正使用过。格林布莱特和奈特代表mit出席了这次会议,他们两人的与会给大会带来了一道别样的风景——两名黑客试图说服参会的十几所大型院校的主管们,让他们将价值几百万美元的设备从一开始就托付给一个没有内置任何安全机制的操作系统!

他们的努力失败了。

奈特后来说mit的黑客们丢掉这次机会完全是因为幼稚。他猜在大会辩论结束前结果就已经定下来了——基于黑客道德的理念编制的系统对那些机构来说步子迈得太大了,所以他们没法接受。不过格林布莱特后来坚持说:“只要我们想,我们其实完全能够说服他们。”不过,用他的话说,“继续向前”才是更重要的。对格林布莱特来说,将黑客道德传播到剑桥以外的地方本就不是他要考虑的事。他认为关注科技广场大楼这里的芸芸众生才是王道,因为这里是黑客的乌托邦,这里的人将在黑客道德的指引下创建愈发完美的系统,并以此让世界刮目相看。

piglatin是按照如下简单规则转换每个英文单词的一种自发明语言。1)如果单词以辅音开头,那么把起始辅音字符串(即第一个元音字母前的所有字母)从单词开始移到尾部,并加上后缀ay,如"string"变换后为"ingstray"。2)如果单词以元音开头,则加后缀way,如"apple"变换后为"appleway"。

tomsawyer(汤姆·索亚),出自马克·吐温1876年的小说《汤姆·索亚历险记》。小说主人公汤姆·索亚天真活泼,富于幻想和冒险,不堪忍受束缚个性,枯燥乏味的生活,幻想干一番英雄事业。其中有一段汤姆·索亚和小伙伴们一起粉刷墙壁的情节。

fubar,是"fuckedupbeyondallrecognition/anyrepair"的首字母缩写,这句短语的意思是:被搞得面目全非。

此处指计算机本身的安全审核机制。

honeywell,著名电子安防产品制造商和服务商。

马萨诸塞州运输管理局。