杜鹃蛋-第1部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
1
我是一个奇才吗?一周以前,我还是一个天文工作者,正心满意足地设计光学望远镜。回顾
当时的情景,我是生活在充满学术气氛的幻想世界里。这些年来,我从来没有为将来筹划过,
一直到我的补助金用完的那一天为止。
我真幸运,我的实验所重新录用了在那里工作过的天文工作者。我不是站在失业者的队伍
里,而是从劳伦斯一伯克利实验所的凯克天文台,调到同一幢楼底层的计算机中心。
我可以冒充行家,用计算机做很多运算,给天文学家们留下深刻印象,也许可以很快读出
数据,令我的同事们无法理解。尽管如此,我是一个计算机奇才吗?我不是,我是一个天文学工
作者。
那时怎样呢?在我冷漠地盯着我的计算机终端的时候;我还在想着行星轨道和天体物理学。
作为新来的人,我选择了窗户对着金门桥的一间小屋。这间办公室没有通风设备,有一面墙是
书架。我忍受着幽闭和恐怖感,希望我在办公桌边睡觉时不会引起人注意。我的办公室左右两
边是两个计算机系统人员的办公室。韦恩·格雷夫斯和戴夫。克利夫兰都是这个系统的老手。
他们经常为一点小事争吵,这使我很快就熟悉了我的邻居。
韦恩认为所有的人不是不能胜任工作,就是懒惰成性,但是他却和这里工作的其他人来往
频繁。他对这个系统了解得一清二楚,从磁盘驱动系统软件一直到微波天线。人们劝韦恩不要
迷恋数字设备公司的“瓦克斯”计算机,而他却非要它不可,既不要国际商用机器公司的,又
不要尤尼克斯公司的,也不肯要麦金托什公司的。
戴夫·克利夫兰,在我们使用“尤尼克斯”系统的人员中是一位和善的菩萨,总是耐心地
听着韦恩滔滔不绝地评论各种计算机的优劣异同。很少会议没有韦恩的推销宣传:“瓦克斯计
算机是一切地方的科学家的选择,它可帮助你用12种方法编制有效的程序。”戴夫反驳说:“看,
你的话只使迷恋瓦克斯计算机的人高兴,而世界上其他的人却要听我的。”戴夫从来没有让他
满意地发一通脾气,这样,韦恩的怨气最后渐渐消散,其是咕哝一阵罢了。
妙极了。工作的第一天,我夹在两个人中间,他们不时的争论已经在破坏我的幻想了。
韦恩、戴夫和我要一起管理这些计算机,它们是全实验所的一种公用事业设备。我们管理
12台计算机中央处理机——这是解决物理学问题的巨大运算工具,大约共值600万美元。我们期
望使用这些计算机的科学家们看到的是一个简单而功能很强的计算系统,就象供电公司一样可
靠。这意味着得让这些计算机昼夜不停地运转。而且正象供电公司一样,我们对使用的每个计
算周期都要收费。
在4,000名实验所雇员中,也许有四分之一使用计算机主机。这l,000笔帐,每笔都天天
登记,分类帐保存在计算机内。用计算机计算一小时收费300美元,因此,我们的帐目,必须分
毫不爽,所以我们总是跟踪打印的每一页、磁盘上的每块空隙和处理机的每分钟处理时间。另
有一台计算机用于收集这些统计数字,把每月的帐单送到实验所各个部门。
这样,碰巧在我开始工作的第二天,戴夫闲逛时来到我的办公室,含含糊糊地提到尤尼克
斯计算机会计系统出现一个差错。一定有人用了几秒钟的计算时间而没有付钱。计算机帐上收
支不很平衡。上月的帐单是2387美元,差了75美分。
要是出现几千美元的误差,那是显而易见的,不难发现。但是美分栏里的误差出于一些埋
藏很深的问题,所以找到这些错误自然是对初露头角的软件奇才的一次考验。戴夫说我应当考
虑这个问题。
“一级盗窃案,嘿?”我回答说。
戴夫说:“把它弄清楚,克利夫,你会让每个人惊愕的。”
好吧,这看起来倒象一场有趣的游戏,于是我钻研起记帐程序来了。我发现我们的会计软
件是由早就离开的夏季大学生编写的程序拼凑起来的东西。不知怎么地,这些大杂烩竟然工作
得很不错,用不着管它。我在研究这些混合的程序时,发现这个软件是用Assembler Fortran
和Cobol语言编写的,这些是最老的计算机语言,也许还是古典的希腊语、拉丁语和梵语。
就象大多数自制软件一样,谁也没有费心去查证我们的会计系统。只有蠢人才会在没有地
图的情况下闯进这样的迷宫中去摸索。
尽管如此,现在有一个机会来探索这个系统。戴夫让我看了看每次有人与计算机联机时,
这个系统是怎样记录的:记录下该用户的名字及其终端设备。每次联机时,该系统便盖下时间
印记,记录用户执行什么任务、用户用了多少秒时间以及他何时与计算机断开。
戴夫解释说,我们有两套独立的会计系统。普通的尤尼克斯会计软件只把有计时印记的记
录存入文件存储器里。但是为了满足某些官僚的要求,戴夫建立了第二套会计制表系统,它保
留下关 于谁使用计算机的更详细的记录。
在这些年里,接连几批带着厌烦情绪的暑期学生编写了一些分析所有这些会计信息的程序。
一个程序专门收集数据,把它存入文件档案。第二个程序能读出这个文件,并且计算这次运算
收费多少。第三个程序可收集所有这些收费记录,打印出帐单,供邮寄到各个部门。最后一个
程序把所有用户收费加起来,把这总数和计算机的内部会计程序所得出的结果相比较。这两种
由不同程序并行保存的会计文件,应当得出同样的答案。
一年来,这些程序工作正常.没有出过什么差错,可是这一周的工作情况却不十分理想。
可能造成这种情况的一个明显原因是舍入误差。每项会计输入很可能都是正确的,但加在一起
时,十分之几美分的差额就会逐渐增加,一直积累到75美分的误差。通过分析这些程序如何运
算,或用不同的数据检验它们,我应该能证明我的这个看法。
我不是设法了解每个程序的代码,而是写了一个短程序来核实这些数据文件。在几分钟内
我就核对了第一个程序:的确,它正确地收集了会计数据。第一个程序没有问题。
检验第二个程序时,我用的时间比较长。在一个小时内,我拼凑了足够多的临时编码以证
明这个程序实际上是有效的。它只是把时间间隔加起来,然后乘以我们对计算机时间的收费额。
结果是,这个程序没有出现75美分的误差。
第三个程序工作情况非常好。这个程序查对了特许用户的名单,找到他们的研究所帐户,
然后打印出一份帐单。是四舍五八造成的误差吗?不是,所有的程序都记录下金额,直至百分之
几美分。奇怪,这75美分的误差是在哪儿发生的呢?
我为设法了解一个细小的问题花了几个小时。我犯了倔强脾气了:该死的东西,如果有必
要,我要在那里呆到夜里12点。
后来搞了几个试验性程序,我开始真正相信这个当地编制的会计程序的大杂烩了。毫无疑
问,收支并不平衡,这些程序虽然不是万无一失的,但是不会把几十分钱遗漏掉。那时,我已
找到特许用户的清单,并且弄清了这些程序是如何使用数据结构给不同的部门开帐单的。大约
下午七时,一个叫亨特的用户引起我的注意。这个家伙没有一个确实的开帐地址。
哈!在过去~个月里,亨特用了75分钱的计算机时间,但是没有人为他付款。
这就是我们的帐上收支不平衡的根源。不知什么人把一个用户加到我们的系统里,把事情
弄糟了。一个细小的误差造成了一个小小的问题。
这是该庆贺的时候。于是我打开我的笔记本,把这第一个小小的胜利写在头几页里,正当
这时.我的爱人马莎顺路来看我。我们深夜来到伯克利的罗马咖啡馆,喝着克皮奇诺咖啡,共
同庆贺这个胜利。可是对我来说,这是一个未知的领域,我能摸索着找到问题的答案真不容易。
值得自慰的是,我学会了使用会计制表系统,并且练习了几种过时的计算机语言。第二天,我
给戴夫发了一个电子邮件,向他指出了这个问题,借以为自己夸耀一番。
中午前后,戴夫顺道来访,放下一摞手册,并且漫不经心地提到,他从来没有增加过一个
名叫亨特的用户——这一定是其他系统的一个管理人员干的。韦恩粗率地搭话说:“这不是我,
RTFM。”他讲的话大多数都是以字的头一个字母的缩略词结束的。这个缩略词的意思是“看看
这一摞乱糟糟的手册吧”。
但是我早就读过这些手册。按理操作人员要是加一个新用户是不会不记帐的。在其他计算
机中心,你只消同一个特许帐目系统接通,让这个系统增加一个用户就成了。由于我们除此之
外还必须作几种簿记登记,我们不能使用这种系统。我们的系统是很复杂的,所以我们有几个
特殊的程序,能自动做文件工作和操纵管理系统。
我向周围查阅了一下,发现大家都认为这个自动化系统非常优越,谁也不能用人工加一个
新用户。这个自动化系统不会犯这种错误。
嗯.我想不出这个大错是谁犯的。谁也不知道亨特其人,也没有给他立帐户。所以我从这
个系统抹去了这个名字。如果他抱怨,我们可以正经八百地给他立个帐户。
一天之后,一台叫“船坞长”的不明不白的计算机给我们发来一个电子信件。这台计算机
的系统管理人声称,我们实验所有人在周末曾企图闯入他的计算机。
“船坞长”的回电地址可能在任何地方,但是从种种迹象来看,是在马里兰州。这个电子
邮件经过了另外12台计算机。每台计算机都留下了一个邮戳。
戴夫答复这封信件时,不置可否,只说;“我们要调查一下。”啊,这是当然的,在我们
的所有其他问题都消除以后,我们会调查的。
我们实验所的计算机与12个网络上的其他数千个系统有联系。我们的任何科学家都可以与
我们的计算机联机,然后和远方的某个计算机连接。一旦连接上,他们输入帐户名字和口令,
就能与远方的计算机联机。在原则上,保护网络上计算机的唯一东西是口令,因为帐户名字是
容易推断出来的。
“船坞长”发来的电子信件是很奇特的,戴夫把它递给韦恩附带提了一个问题:“谁是‘船
坞长’?”韦恩把它转交给我,他猜测“这很可能是某家银行”。
最后,韦恩又把这封电子信件交给我。我猜想,“船坞长”是某个海军船坞。这件事并不
重要,但是看来值得花几分钟去调查一下。
这封信提供了我们的尤尼克斯计算机系统上的某个人试图与“船坞长”的计算机联机的日
期和时间。我刚刚检查过会计制表系统,翻阅过这些文件,查找从星期六早晨8时46分以后的记
录。同样,发现了这两个会计制表系统不一致。普通的尤尼克斯会计文件表明,在8时25分有一
个叫斯文特克的用户请求联机,历时半小时,他什么也没做,然后就断机了。在这段时间没有
盖上计时印记的活动。我们自制的软件也记录了斯文特克的活动,但它表明,他从8时31分直至
上午9时1分一直在使用这个网络。
咦,又出现一个会计问题。计时印记不一致。从一个系统看有活动而另一个会计系统则说
一切都处于休止状态。
另外一些事情似乎更为紧迫.所以我搁下了这个问题。在浪费了下午的时间去追查某个操
作人员的错误以后,我不打算再去碰这个会计制表系统。
在和戴夫一起用午餐时,我提到在“船坞长”报告这次闯入事件以后,斯文特克是唯一的
联过机的人,戴夫惊讶地瞪着眼说:“是乔·斯文特克吗?他在剑桥,英格兰的剑桥。他回来干
什么?”原来,乔·斯文特克曾在本实验所担任尤尼克斯系统的领导人,很受人尊敬。他是一位
软件奇才,在过去10年里他编制了12种重要的程序。乔在一年前已赴英格兰,在整个加利福尼
亚计算机行业留下显赫的声誉。
戴夫不能相信乔回到了本市,因为乔的其他朋友没有一个接到他的信。戴夫说:“他一定
是从什么网络进入我们的计算机的。”
我问戴夫:“那么,你认为,乔应对这个问题负责罗?”
戴夫回答说:“完全不是这样。乔是个老派的黑客(hacker)。是一个聪明、机敏而有才干
的程序编制人员。不是那些玷污了‘黑客’这个名词的小流氓。不管怎样,斯文特克不会想要
闯入马里兰州的一台计算机的。如果他真想这样做,他是会成功的.而不留下任何痕迹。”
真奇怪:乔·斯文特克已经在英格兰呆了一年,然而却在星期六清晨出现了,企图闯入马