一天,TMRC 以前的一位成员,现在已经成为MIT 的一名教师的黑客回俱乐部来参观,他的名字是杰克.丹尼斯。20 世纪50 年代初,他还是一名本科生的时候便为铁路模型的底层设计付出了大量心血。丹尼斯当时正使用一台MIT 刚刚从林肯实验室(MIT 下属一个专门开发军用设备的实验室)接收的TX-0 计算机,这台计算机是世界上第一批使用晶体管的计算机之一。林肯实验室此前专门用这台计算机测试另一台大型机——TX-2 。TX-2 的存储器极其复杂,只有用这台专门建造的同宗兄弟计算机才能找到它的毛病。现在,这台计算机的最初任务目标已经完成,因此这台价值300 万美元的TX-0 便被运送到此,“长期租借给”MIT 使用。显然,林肯实验室的人根本没有设置归还日期。丹尼斯专门到此,想问问TMRCS&P 小组的成员是否有兴趣看一眼这台计算机。 TX-0 放在26 号楼,在二楼的电气研究实验室(RLE)里,RLE 正好在一楼计算中心(这里放有IBM 704 计算机)的上方。RLE 很像一艘过时宇宙飞船的控制室。那台TX-0 计算机(有时称为Tixo)在当时算是小型机,因为它是第一批使用手指大小的晶体管(而不是手掌大小的真空电子管)制造的计算机。尽管如此,它(还有与其配套的重达15 吨的空调设备)还是占据了房间的一大半空间。TX-0 系统连接到几根又高又细的架杆上,看上去好像是粗制滥造的书架一样,它的电线互相缠绕在一起,此外还有一排排整齐、如小瓶子般的容器,里面都插着晶体管。另一个架子上的固体金属门上,冷冰冰地标着各种规格。这几个架子对面是L型控制台,这是这艘H.G. Well 宇宙飞船的控制面板,操作员可以把胳膊肘或资料放到它的蓝色台面上。L型控制台较短的一侧立着一台Flexowriter 电传打字机,它很像专用打字机,其底部固定在军灰色的支架上。上方是一个个箱子形状、涂成公共设施那种黄颜色的控制面板。面向操作员的箱子侧面有几条标准刻度,还有几排四分之一英寸的灯闪烁不定,另外还有一些钢制拨动开关,大小要比米粒大一些。最妙的是,还有一台圆形、呈烟灰色的阴极射线管显示器。 TMRC 的人一下子被震住了——这台机器不使用数据卡片。用户首先要用那台Flexowriter 电传打字机(旁边的屋子里还有几台同样型号的电传打字机)将程序“打”到一根很长很细的纸带上,然后用读取器将纸带上的程序读入计算机,接着就可以坐在那里等着程序运行完。如果程序出了问题,你马上就会知道,并且可以利用某些开关或通过检查哪些灯正在闪烁来找到错误。这台计算机甚至还有一个音频输出装置:程序运行的时候,控制台下方的扬声器就好像一个未经调谐的电风琴,用带有杂音的音符播放一段乐曲。这件“乐器”上的和弦随着每一微秒读取的数据而变化:在熟悉了这段曲调之后,你甚至可以听出你的程序已经运行到哪一步了。即使Flexowriter 打字机那噼噼啪啪的噪声再嘈杂(这些声音可能会让你觉得自己正置身于一场机枪激烈交火的战斗中),你也一定要辨别出那些声音。 更加令人惊喜的是,由于计算机提供了“交互式”的功能,并且用户似乎可以有一段时间自己操作这台TX-0,因此你甚至可以在计算机旁边修改程序。这太不可思议了! 世上绝对没有任何方法可以让考托克、桑德斯、萨姆森和其他黑客远离这台计算机。幸运的是,TX-0 计算机旁边似乎没有像IBM 704 计算机周围弥漫的那种官僚作风。没有多管闲事的牧师。负责TX-0 的技术员是一位精明、满头白发的苏格兰人,名叫约翰.麦肯锡。虽然他的职责是确保研究生和那些参与政府或企业资助项目的人能够正常上机,但他也默许TMRC 那些开始在电器研究实验室转悠的人使用这里的TX-0 。 萨姆森、考托克和一名叫鲍勃.瓦格纳的大一学生很快就发现,一天当中到26 号楼来的最佳时间就是晚上,因为任何正常的人都不会按每周五贴在RLE 实验室空调旁边的上机预约单所写的那样在这个时候跑来上机一个小时。针对TX-0 计算机有一条规定,那就是要24 小时开机——当年,如果计算机整晚闲置,就属于极大的浪费。此外,一旦关机,重新启动计算机的过程非常麻烦。于是TMRC 的黑客(不久之后,他们就自称为TX-0 黑客了)就改变了自己的生活方式来适应这台计算机。他们尽可能地占用所有大段上机时间,但同时也不放过“零星的时间”——他们在夜里也常常抱着一线希望到实验室来看看,希望某个预定了凌晨3点时间段上机的人还没来…… “哦!”假如到了上机时刻表上安排给某人的时间,但他还没有来,再过一两分钟后,萨姆森就会高兴地说:“这点时间绝不能浪费!” 这种时间好像从未浪费过,因为黑客们几乎无时无刻不在那里等待这样的机会。假如他们没有在RLE 实验室等着天上掉馅饼,那么他们就会在TMRC 隔壁的教室里(也就是Tool Room)玩萨姆森发明的有点类似于Hangman 猜字的游戏,该游戏名为Come Next Door 。他们一边玩儿一边等待着在TX-0 旁边的眼线来报告,看是否有人该来上机但却没来。黑客们建立了一个情报网,让这些眼线提前告诉他们哪段时间计算机可能会空闲。假如某个研究项目没有及时准备好程序,或者某位教授病了,那么这份情报就会被送到TMRC,而黑客们便可以坐到TX-0 前,屏住呼吸,准备一头扎进控制台后面的世界里。 虽然杰克.丹尼斯原则上负责实验室的运转,但当时他还有教学任务,并且愿意将业余时间拿来编写TX-0 运行的程序。丹尼斯扮演着黑客们慈祥的教父这样一个角色:他会亲自向他们简单地介绍一下这台计算机,指点他们朝着某个方向努力。每当看到黑客们异想天开的程序代码,他总是忍俊不禁。丹尼斯对管理工作一点也不感兴趣,因此他很高兴地把管理大权交给约翰.麦肯锡。麦肯锡早就看出,TX-0 提供的交互式功能可以产生一种全新的编程方式,而黑客们正是摸着石头过河的那批先驱。因此他并没有制定太多的规矩去规范上机行为。 1959 年宽松的氛围对那些迷途的人来说是非常宽容的。像彼得.萨姆森这样的科学迷,他们总是对一切东西都感到好奇,他们会探索MIT 每间实验室中的未知迷宫。空调的噪声、声音输出装置以及Flexowriter 电传打字机的声音都会吸引这些探索者,就好像小猫探头探脑地窥探篮子里的线团一样,他们也会伸长脖子朝实验室内东张西望,想探个究竟。 彼得.多伊奇就是这样的人之一,他不属于这个实验室。早在发现这里有台TX-0 计算机前,多伊奇便已经对计算机深深地着迷了。最初,他随手捡了一本不知谁扔掉的手册,介绍的是一种专门用于计算的晦涩难懂的计算机语言。书中有关计算机指令的某些规律吸引了他:他后来说那种感觉就好像是艺术家发现了最最适合他的那种创作方法,那是一种自己也说不清楚的、超越一切的认知能力。这里就是多伊奇的舞台。多伊奇努力写出了一小段程序,并用某个牧师的名字预定了上机时间,在计算机上运行自己的程序。仅仅几周的时间,他的编程能力便已脱胎换骨了。那年他才仅仅12 岁。 多伊奇性格内向,数学能力出众但对其他事情没有自信。他因缺乏运动而体重远远超过正常标准,但这并不妨碍他成为一名高智商的实干家。他的父亲就是MIT 的一名教授,多伊奇正是利用这一点优势得以随意出入各个实验室。 他能对T X-0 感兴趣确实让人觉得不可思议。他头一次踱进这间小小的“Kluge Room”(“Kluge”是一件造得不怎么好看的设备,但是运转起来却没有问题,这让人觉得有些不合逻辑),这里有三台没有和计算机相连的Flexowriter 电传打字机,可以用这几台打字机将程序“打”到纸带上以便随后输入到TX-0 计算机中。多伊奇在旁边看了一会儿别人怎样将程序“打”到纸带上,然后连珠炮似地向这个可怜的家伙提了一连串的问题,都是关于隔壁房间看起来怪怪的那台小型计算机的。然后,多伊奇径直走向那台TX-0 计算机并仔细地端详起来,还将它与其他计算机的不同之处记录了下来:这台计算机体积更小,它有一台CRT 显示器以及其他精致的设备。于是他当即决定要做进一步的行动,就好像他理所当然应该这么做似的。多伊奇拿了一本手册,并且没有多久,他谈起计算机来便头头是道,让别人不得不刮目相看。最后,他终于获批可以在晚上和周末到此上机,编写他自己的程序了。 麦肯锡担心可能有些人会有不满情绪,抱怨他在举办某种夏令营活动:这个穿短裤的小孩,即使伸着脖子也还没有TX-0 的终端机高呢,但他会盯着“官方授权用户”(也可能是一名高傲的研究生)用Flexowriter 输入的代码,用自己尖声尖气、尚未发育到青春期的嗓音说着什么,如:“你把这里的贷方数据搞错了……你应该在那里用另外一条指令。”接着那位自以为是的研究生便会勃然大怒——这小孩是谁?然后朝着他厉声呵斥,让他出去到一边玩儿去。可每次彼得.多伊奇的忠告最后都证明是正确的。多伊奇也会不知天高地厚地宣称自己要着手写一个比当前正在使用的程序更好的程序,然后他还真的就去做了。 萨姆森、考托克和其他的黑客因彼得.多伊奇出众的计算机才能而最终接纳了他,他值得这些人平等相待。但多伊奇在“官方授权用户”中却不那么受欢迎,尤其是当他坐在那些人后面随时准备指出他们在Flexowriter 上犯的每一处错误时,更是如此。 “官方授权用户”通常都乘坐班车来此地上机。他们运行的程序是有关统计分析、交叉关联和细胞核内部构造模拟等课题的。这些都属于应用的范畴,对那些用户来说不是问题,但对黑客来说,绞尽脑汁考虑这样的问题毫无意义。黑客考虑的是转到TX-0 控制台后面看个究竟,就像绕到飞机的节流阀后面看看其工作原理一样。或者,用喜爱古典音乐的彼得.萨姆森的话来说,用TX-0 进行计算和弹奏一件乐器一样:你要用一件昂贵得离谱的乐器即兴创作、编排并(像1英里外哈佛广场上那些“垮掉的一代”那样)肆意地演奏。 杰克.丹尼斯和另外一位名叫汤姆.斯托克曼的教授共同设计的编程系统令黑客们得以充分发挥自己的能力。当这台TX-0 被送到MIT 的时候,它已非完璧,因为它在林肯实验室它就经过改装了:其内存锐减至4096 个“字”,每个“字”有18 位(一个“bit”就是二进制数字的一位,要么为0,要么为1。这些二进制数是计算机唯一能识别的内容。一串这样的二进制数便构成了一个“字”)。此外,这台TX-0 几乎没有配备任何软件。因此,杰克.丹尼斯甚至早在他将这台TX-0 介绍给TMRC 成员之前就一直在编写“系统程序”,即帮助用户使用计算机的软件。 丹尼斯首先要编写的是汇编程序。这种软件是用来将汇编语言翻译成机器语言(由二进制数0和1组成)的工具软件,其中汇编语言用三个字母的缩写符号代表发送给机器的每条指令。TX-0 计算机的汇编语言十分有限:由于在设计之初,每个18 位的“字”只能使用其中两位表示指令,因此每个字最多只有4条指令可用(两位所有可能的变化为00 、01 、10 和11,每种变化代表一条指令)。计算机所做的任何事都可以分解成执行这4条指令中的某一条:使用一条指令就能将两个数相加,但是要将两个数相乘,就需要一长串指令(也许是20 条)才能完成。盯着用二进制数(如10011001100001)编写的长长的计算机命令清单,不用几分钟,你准会晕头转向。但是,用汇编语言编写同样的命令可能会是这种形式:ADD Y 。向计算机加载丹尼斯编写的汇编程序后,就可以用这种较为简单的符号形式编写软件,然后可以很有成就感地等着由汇编程序帮你将程序翻译成二进制代码。接着,你要将那二进制的“目标”代码送回计算机运行。汇编语言可谓无价之宝,它只是让程序员用看起来好像是代码的符号编写程序,而不是用无穷无尽、令人眼花缭乱的数字1和0去写。 丹尼斯和斯托克曼共同编写的另一个程序是个比较新的工具——调试器。TX-0 本身自带一个名为UT-3 的调试程序,利用这个程序,用户可以直接将命令通过Flexowriter 电传打字机输入到计算机中,进而赋予了这名用户在计算机运行过程中与其交互的能力。但是,UT-3 存在不少非常严重的问题,例如,它只能“读懂”使用八进制输入的代码。所谓“八进制”就是基于8个数字的系统(与此形成对照的是基于2个数字的二进制系统,还有我们日常使用的基于10 个数字的十进制系统),这个系统使用起来相当复杂。因此丹尼斯和斯托克曼决心写一个比UT-3 更好用的调试器。有了这种调试器,用户就可以使用符号,即较为易懂的汇编语言编写程序了。他们两人编写的程序名为“FLIT”,它可以帮助用户在程序运行期间发现和修改错误,保证程序能够运行下去。(丹尼斯解释说:“FLIT”代表Flexowriter Interrogation Tape,但很明显,这个名字起源于一种同名的杀虫剂。)和UT-3 相比,FLIT 是一次飞跃,因为它解开了束缚程序员的枷锁,就像音乐家能够用他们的乐器进行创作一样,程序员可以在计算机上进行最原始的创作了。尽管FLIT 需要占用TX-0 总共4096 个“字”内存的1/3,但有了这种调试器,黑客便可以随心所欲地创造出新的、更为大胆的编程风格。 那么,那些黑客自己的程序又做了些什么呢?有时,它们做什么真的一点也不重要。彼得.萨姆森整晚都在编写一个即时将阿拉伯数字转换成罗马数字的程序。杰克 .丹尼斯在看了萨姆森的“壮举”之后,对他的编程技巧表示由衷的钦佩,说:“上帝,为什么会有人想做这样一件事?”不过丹尼斯知道为什么。萨姆森在将纸带输送到计算机中,然后观察着闪烁的灯光和开关,接着看到一度在黑板上平淡无奇的、古老的阿拉伯数字变回罗马人发明的那种数字的时候,那种浑身充满力量的感觉和巨大的成就感便是这一切的原动力。 其实,正是杰克.丹尼斯向萨姆森建议,利用TX-0 计算机向扬声器发送声音的能力将会有超乎想象的广泛用途。虽然没有内置用于定调、控制振幅或调节音质等的控制器,但却有办法指挥扬声器——在任意一毫秒内,是否发声取决于TX-0 累加器中每个18 位“字”的第14 位的状态。声音的开与关取决于第14 位是1还是0。因此,萨姆森着手开始编写让每个“字”第14 位的二进制数以不同的方式变化的程序,以此产生不同的声调。 当年,美国只有很少几个人一直在进行用计算机演奏各种类型乐曲的实验,他们所采用的方法哪怕让计算机演奏出一个音符都需要极大的计算量。很多人警告萨姆森,认为他在这方面的努力无异于逆水行舟。但萨姆森对此类言论表现得非常不耐烦,他想要计算机立刻就能演奏出乐曲来。于是他学习控制那个累加器中第14 位数字的方法,想要像查理.帕克操纵萨克斯管那样让计算机也对他俯首帖耳。在这款音乐编辑器的后期版本中,他给这个程序增加了新的功能:如果你在编程中犯了一个语法错误,Flexowriter 就会使用红色的墨带打印出“To err is human to forgive divine.”(人非圣贤,孰能无过?) 当黑客圈以外的人听到约翰.塞巴斯蒂安.巴赫那悦耳的旋律竟然以单声部、单音频的方波形式播放,且毫无和谐可言的时候,几乎都无动于衷。这是平地的一声惊雷!这可是台价值300 万美元的大型计算机,为什么它不能完成一个价值5美元的玩具钢琴也能完成的小事儿呢?彼得.萨姆森几乎是另辟蹊径,颠覆了有史以来音乐制作的基本流程,跟那些局外人讲这些无异于对牛弹琴。音乐一直是通过直接制造振动(即声音)得到的。而萨姆森的程序只不过是将一大堆数字(或者说是无数输入到计算机里的位信息)组合成一段代码,音乐便蕴涵在这段代码之中。你就算盯着这段代码几个小时也不可能琢磨出音乐到底藏在哪儿。TX-0 计算机由大量金属、电线和硅片组成,在这些元件中藏着个累加器,只有在累加器中进行数百万次令人眼花缭乱的快速数据交换以后,这段音乐才能播放出来。这台计算机本身并不十分清楚怎样使用声音,现在萨姆森要求它用歌声提升自己的价值,这台TX-0 乖乖地照办了。 因此,计算机程序不仅仅被比作音乐作品,严格来说,它本身就是一部音乐作品。这样的计算机程序看起来好像和能够得到复杂的数学计算结果和进行数据分析的程序没什么两样,并且事实上两者确实没什么两样。萨姆森塞进计算机里的那些数字是可以制造出任何东西(不管是巴赫的赋格曲还是防空系统)的通用语言。 萨姆森并没有对外界透露他的所作所为,而那些外人对他的成就也丝毫不感兴趣。连黑客们自己也不谈论这件事——我们甚至还不清楚他们是否在如此广泛的意义上审视过这一成就。彼得.萨姆森做成了这件事,他的同事也对他的成就表示钦佩,因为这段程序编得非常精妙,仅凭这一个理由就足够了。
黑客——让计算机演奏乐曲
书名: 黑客
作者: Steven Levy
出版社: 机械工业出版社华章公司
原作名: Hackers: Heroes of the Computer Revolution - 25th Anniversary Edition
副标题: 计算机革命的英雄(二十五周年新版)
译者: 赵俐 | 刁海鹏 | 田俊静
出版年: 2011-10-31
页数: 352
定价: 69.00元
装帧: 平装
ISBN: 9787111358404