|
|
51CTO旗下网站
|
|
移动端

第1章 技术模型铁路俱乐部(5)

《黑客》本书更新了一些著名黑客的最新资料,包括比尔·盖茨、马克·扎克伯格、理查德·斯托曼和史蒂夫·沃兹尼亚克,并讲述了从早期计算机研究实验室到最初的家用计算机期间一些妙趣横生的故事。本节为大家介绍技术模型铁路俱乐部。

作者:赵俐/刁海鹏/田俊静 译来源:机械工业出版社|2011-10-20 10:52

第1章 技术模型铁路俱乐部(5)

麦肯锡担心可能有些人会有不满情绪,抱怨他在举办某种夏令营活动:这个穿短裤的小孩,即使伸着脖子也还没有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 乖乖地照办了。

因此,计算机程序不仅仅被比作音乐作品,严格来说,它本身就是一部音乐作品。这样的计算机程序看起来好像和能够得到复杂的数学计算结果和进行数据分析的程序没什么两样,并且事实上两者确实没什么两样。萨姆森塞进计算机里的那些数字是可以制造出任何东西(不管是巴赫的赋格曲还是防空系统)的通用语言。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

程序员密码学

《程序员密码学》涉及密码学的各个研究方向,分组密码、散列函数、公钥密码以及相关的攻击,同时也讲解了密码学算法实现上常用的ASN.编码、...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊