[译者的话]1984年始,英国电气工程师协会(IEE)计算机与控制分会将每年举办一次专题讲座。为表彰M. V. Wilkes教授在计算机科学方面的杰出贡献,首届讲座由他发表了本篇演讲。Wilkes1946 ~ 1980年任剑桥大学计算机技术教授,80年退休。现任剑桥大学荣誉教授、美国数字设备公司(DEC)顾问、麻省理工学院客座教授、美国科学院和工程学院通讯院士。他自1946年起任剑桥大学数学研究所(70年起更名为计算机研究所)主任,1957-1960任英国计算机协会首届主席,1981年获IEE颁发的法拉第奖。40年代中叶,英国几乎与美国同时地发展计算机工程。Wilkes教授是仍然在世的不多的几位这段历史的主要参与者之一。译文略有删节。

我们生活在数字计算机时代。它是以多种不同方式进入我们生活的。今天,不仅办公室、实验室,家庭里也有了电子计算机。我们仍然谈论着小型机和大型机,但它们之间的界限已模糊不清了,不管我们走到什么地方,银行、飞机场或者旅馆,随处可见和计算机终端打交道的人们。现在,所有的终端显示器都是用阴极射线管(CRT)制作的,其中有些不仅能显示文字,也能显示图像。嵌入式计算机(Embeded Computer)已广泛应用于许多工业装置,并且开始进入汽车和其他家庭用具之中。

无疑,十年前计算机还并非随处可见。那时没有微型机,但小型机已很成熟了。它与价格和性能都要高得多的大型机之间的界限非常清楚。当时,用CRT做显示器的终端还很少见。

再早10年的1964年,小型机还是个很新鲜的东西,分时系统则刚刚处于示范性阶段。当时,大多数计算机中心运行的是批处理系统。用户只能呆在机房外面,他们向计算机中心提交的作业则顺次排列成需3至4小时才能处理完的一批。一个小作业或者仅仅进行一下程序测试也要花费和生产性运行同样长的时间。当时的大型机一般都配有很好的磁带机系统,但不大具备配备磁盘驱动器的能力;即使有,其最大容量也不过32 M字节左右。主机或许已经晶体管化,但系统中的大部分部件还没有。再早5年的1959年,计算机都用电子管制造,小型机则尚未出现。

让我们再回溯到比这还早5年的1954年。那时,计算机极不普遍,拥有者颇以他们的计算机为自豪,只将它们隔着玻璃窗展示给参观的人们。1949至1950年间,全球只有屈指可数的几台实验性计算机。它们之间在结构上差异甚大,而且都还在制造它们的工程师手里。再早些时候,电子计算机根本就不存在。那时,Computer(“计算机”一词的英文)指的是那些使用机械台式计算机器进行计算工作的人。

计算机通信

计算机通信也是在I960年前后开始发展的。当时,用一根电话电缆将实验室和办公室的计算机连在一起还是非常罕见的。1960年以后,计算机工程师和通信工程师日益接近。现在,不仅计算机领域不能缺少通信技术,通信系统的设计也越来越广泛地应用计算机技术,结果在这二大专业技术领域之间出现了很大的重叠区域。

大约15年前,人们就认识到采用计算机技术可以大大改进建立于一幢大楼甚至某个区域内部的传统电子通信系统的带宽和噪声。有些人进一步意识到这类系统可以很经济地用于连接计算机和其他设备。这导致了各种环形和竞争式通信系统的发展。只是在不久前,局部通信网络才成为一个新课题。同行之间为满足各项业已明确的功能要求开始了竞争。环形网和以太网是计算机工程师们的贡献。电话工程师则开始改良专用分机(PBX)系统。另一条技术途径是采用宽带电视电缆(broadband-cable-television)系统。由于也许要求同时传输声像数据,其使用环境是很复杂的。这三种技术路径都有其发展前途,而计算机工作者自然倾向于发展以太式网络和环形网络。以太网似乎已发展到它所能达到的完善程度了。在环形网中,数据操作的速率仅仅取决于电路技术,能覆盖的区域也仅取决于其通信链路能容许的长度。以太网和环形网都可以处理音频信号,不过以太网在这方面还存在问题。高速环形网还可以传输一定的电视信号。专用分机系统可以中速甚至高速处理终端与主机之间的数据传输。

但能否处理计算机之间的通信或者将计算机与文件处理器(file-server)连接还要过段时间才能知道。宽带电缆及其调制解调器、频率分配都是宽带电视电缆系统的难题。解决它们要花费高昂代价。但如利用现成的电缆系统可使情形改观。由于宽带调制解调器过于昂贵,在宽带电缆系统中可能首先实现中速的信息传输。

夺取更高的速度

计算机的速度一直在增长。现在很难相信,1960年居然有人怀疑是否还需要再提高计算机的速度,并认为停止对此进一步研究的时刻已经到来。现在,借助更好的半导体器件,我们仍可将计算机速度至再提高一个数量级。但无论如何,事情已不像前几年只要修改一下现成的集成电路就可以提高速度那样简单了,一个原因是:信息转接速度而不是电路开关速度业已接近极限。

早在晶体管时代,人们就注意到每纳秒传输一米的光速是计算机操作速度的极限。提高速度的一个较好方法是减小处理器的尺寸,这已经做到了。但是,尽管信号在一片硅芯片中的传输距离已极短,但速度最快的计算机仍不是单片微处理机。这是由于芯片中长传输线的电容很大,激活它的电流却很小。换句话说,速度为一个时间常数所限制。

芯片中一条连线的电容量正比于长度,于是,平均来说,激活该线时间的85%也与其长度成正比。因而,尽管事实上连线各点激活速度相同,信号从连线一端传至另一端的时间也正比于其长度。代入具体数值可知,信号通过0.5 cm长的CMOS芯片的一面所费时间与信号通过75 cm同轴电缆所费时间相同。这样,单片微处理机中的信号传输时间与大型计算机未必有很大差异。

偏巧,减少芯片中连线的电容来提高速度还是有点希望的。无论如何,用大功率来提高速度的可能性还是存在的,无疑我们看得到它的实现。但提高功率势必增加芯片消散的热量,因而需比现在更有效的冷却方法。我认为甚至将在小型机中采用液体冷却。多芯片计算机系统的芯片插座和芯片外连线的容量是最重要的,现已发现过高的温度会使之降低。

据此换算,可知CMOS芯片还是越小速度越快。随着半导体器件尺寸的下降,其速度可望线性增长。现在占用整个芯片的微处理器将来只占用芯片的一部分,其余部分则用于实现其他功能,诸如存储器和通讯通道等。INMOS技术指出了这条思路的实现途径。换句话说,芯片将越来越小,其容量越来越大。

并行处理的诱惑

尽管前面描绘的是发展主流的自然延续,不少人却觉得它没多大意思。他们认为,一个芯片既然可以装入成千上万个门电路,采用这些门电路同样可以用并行操作获得高速。他们梦想采用并行结构经济地获得巨型机的通用性能。迄今还无人能指出实现此目标的途径。我觉得他们有点像古代炼金术士,炼金术士不知自己违背了化学原理,现代的这些人则将发现自己受到了物理学原理的阻碍。从物理学角度来看,对于尺寸给定的芯片,如果找到了一个靠采用更高并行程度获得速度的系统结构,那么系统将变得庞大,会由于信号传输距离的增大而损失速度。是否找得到一种得可偿失的体系尚要等着瞧。

这些观点都是针对今天的程序存储式计算机。在设计执行特殊算法(最著名的是快速富里埃变换算法)的计算机方面,并行处理机有极广阔的应用范围。今后可望出现更多的这类专用处理机。它们有些还可成为通用机的辅机。

有些问题(特别在数理科学领域)非常重要,而且非得巨型机或至少极快的计算机处理。谁也不清楚这类问题有多少。众所周知、现在大多数高速计算机乃至一些巨型机只用于处理大量相对来说较小的独立问题,而不是某个重要的大问题。假如从经济或其他角度看有点好处,这些问题没有理由不在其他计算机上运行。现已可能实现基于一组计算机的系统,为在系统中注册的用户提供类似于分时系统的性能。无论计算机组是否将流行,我确信,不久将流行在一个用户的办公桌上出现若干台个人计算机同时处理一个任务的各部分。

人工智能

在公众看来,人工管能是很久之后才能达到的目标。最近向用户提供了一些非常成功的知识库程序,正是该领域使许多人现在认识了人工智能。了解人工智能进展的本质意义是非常重要的。

建立智能自动机的思索已持续了几个世纪。一旦程序存储式计算机进入视野,人们自然会想,这个目标是否已快达到了。1945年,图灵在哲学月刊上发表了一篇机智敏锐的文章,题目叫《计算机器与智能》。在文中,他将智能定义为学习的能力。他设想,一台起初不具备知识的计算机可以装入一个程序,使之通过与人或其他机器的相互作用建立知识。尽管付出了巨大努力,在该文发表后的40年里,仍然没有接近此目标的突破性进展。其间最优秀的成果是参数的自动调节,用通称“爬山法”的处理技术使系统性能达到最佳。一二年前,一位人工智能权威对我说,他觉得在人工智能研究的最初阶段里夸大了学习能力的重要性。我不同意这个意见。Mavin Minsky的看法是对的,他认为那个时期在计算机学习能力方面的工作太不成熟,其不足之处在于没有了解后来才清楚的知识表示法,今后应进一步研究计算机积累这些知识的方法。我不指望迅速完成此过程,但我认为理论上的突破往往无法预测。在取得这个突破之前,人工智能是名不副实的。

知识库系统则走着截然不同的途径。其开发者只试图完成某个特定的任务。他们采访有关专家,试图模拟他们解决问题的方法,并编写一系列可在运行中解释的准则来实现这种模拟,在形成程序的发展过程中,要从实践的角度出发修正这些准则并添加从专家那儿萃取的新材料。自然,还要增添辅助性的算法和结构化信息等。大约10至15年前就已发展了这种方法,但只在最近这类程序才投入实用并为公众的想象力所接受。这项发展极大地得益于——实际上是建立于——实用的廉价计算机。

尽管目前工厂用机器人的出现并不是人工智能的功劳,但机器人学确是人工智能所致力的另一领域。事实上,几乎所有这类机器人都配备着简单的时序控制器,它们与计算技术全然无关。但这种状况无疑即将改变。受过计算机教育的人和人工智能研究部门将参与设计更通用的机器人。大批量生产通常是高度自动化的,但装配的自动化程度也许小于元部件制造。目前需要能在已采用数控机器的场合进行装配工作的机器人,换句话说,要使自动化也适用于中小批量生产。大量应用触觉和视觉控制其动作、在偶然发生的事件中进行自校正,将是新一代机器人的特征。

电视图像分析也是人工智能实验室长期研究的课题。廉价微型机也同样改变了这个领域。某些计算机程序可以通过一系列扫描识别模式,但需要现有计算机能提供的最大速度。动物做不到这点,因为其神经系统不含高速运算部件。人类视觉系统大概是高度并行地工作的,但迄今仍未弄清其细节。我想,未必非得从理论上透彻地了解了这个课题才能取得进展。也许有一天,完全出于偶然或其他因素,会发现能识别模式的实用算法。这些算法不必具有提高人们对该课题理解程度的作用,而且确实未必做得到——其存在的合理性简单地取决于它们能否工作。可以用一个物理学的例子作比较:量子论发展之前,物理学家正与一系列扰人的矛盾搏斗,但却不能说量子论的出现解决了这些矛盾或者至少确切地说明了它们。相反地,它使人们回避了这一切。我认为,一旦发现了模式识别新算法,它们也分别将扮演类似量子论的角色。

计算机安全

直到最近,人们才对商务数据处理周期中的计算机安全保障感兴趣,所以市场上只有少数操作系统有严格的安全保障。其原因是以往计算机仅限于商业组织内部使用,而且不理解雇员可能是潜在的破坏者或者有对计算机的安全构成威胁的可能。网络系统和拨号式交换链路的应用改变了这一切。现在,企业需要改变任何人都可以通过终端向系统渗透的状况。最近,学校也开始发现应当对与校方计算中心打交道的学生采取类似措施。

计算机安全保障的范围包括用户密码鉴别、文件安全管理、当某文件被经过认证的用户打开后保护其中信息。在通讯转接威胁到商务数据处理的罕见场合,数据加密也十分重要。但无论设计怎样完善,除非用户经过明确的安全性认证,系统是无法保证安全的。非

常不幸,现在采取实际上极不保险的操作——诸如使用名字或自家电话号码这类易被猜出的符号做口令,或者整个月都不更改口令——的用户太多了。

定义一个操作系统是否安全并不困难,问题在于定义之后如何实现。系统各有关部分必须经受某种形式的监督和认证是起码的要求。注意,安全检查器仅用于鉴定操作系统是否安全,不能鉴别其各部分是否正确。许多诸如用户的显示器不显示必需信息这类不正常动作并不破坏系统的安全。有时,假如要求安全检查器具有十分完备的性能,反而易于实现与验证一个安全的系统。这时,实现者可以采用绝对严密但效率较低的方法来保证系统安全。很遗憾,虽然计算机拥有者愿意多花点钱买一套安全的系统,却没有足够的思想准备接受系统性能遭受哪怕一点点损失这个后果。

安全保证的形式取决于怎样建立警戒区。在计算机领域,警戒区里有人——例如系统程序员——和程序,正是这些程序必须经过严格检验,它们组合在一起构成了所谓安全核心,安全检查器总是力图得出一个否定的结论——安全性无漏洞,对那些希望如此的人来说,必须从安全性保证的角度出发编写这些程序。遗憾的是,在认识怎样实现这点之前,我们还有长长的路要走。我觉得,采用“极小权限原理”,亦即令正在运行的进程只能访问当时确实需要涉及的那部分存贮器,这样的途径还是有益的。显然,如果这个准则得到系统的贯彻,正在监督某特定进程的安全监督器就可以不管其它,只注意该进程访问的存贮段即可。现有程序设计语言的工作域准则(scope rules)并不能完全执行极小权限原理,同时,迄今为止,对此寻求硬件支持的努力尚未取得彻底成功,这二条途径都需要进一步的研究。

不以物理学为基础的工程

年轻时,听说工程师的使命是开发利用物理学家25年前的发现:无论这在当时是否真实,反正今天不是这样。至少,我们已在计算机领域看到了一类根本不以物理学为基础的工程。关键在于,软件工程师也是地地道道的工程师。他们对待工作的态度和方法以及所承担的义务与他们搞硬件的同事完全相同。他们在产品开发中扮演的角色与硬件工程师相似,开发的成功取决于他们二者的共同努力。

软件工程师一般宁愿在研究所而不是电子工程实践中研究计算机科学。他们一般都有比较厚实的数学基础,而且,他们所学的数学并非电子工程师通常学的那一类。某些特殊的逻辑思维能力的训练同样适于进行某类硬件设计——例如,采用TTL集成块进行逻辑电路设计——的人。他们了解集成块的构造原理、接受对某些问题的忠告即可,不必掌握有关集成块的更多细节。物理学家掌握集成块密封的内部,电路设计者则只需了解其特性。在某种程度上,将处理器、磁盘文件、打印机等和相当的软件组成一个计算机系统的过程也与此类似。我喜欢称之为系统工程。化学工程师从类似的观点出发使用该术语很久了。

计算机系统工程的进展得益于透彻的系统观点,而不是像硬件的发展那样主要得益于物理发现。对于增进人类希望和改变人们行为方式,系统观点具有和物理发现完全相等的重要性。可以说,从一开始,这个观点就伴随着计算机领域,存储程序的原理和程序是一个独立于计算机的实体这个概念都是例子。此外,计算机通讯领域的点到点错误控制概念也是一个例子。人们刚开始认识数据传输在计算机领域的重要性时,有一种倾向认为,除非电信工程师将电话线的传输误码率降得很低,这种电缆将难以用于传输数据。不久发现,采用冗余码可使噪声较大的电路具有相当良好的性能。后来,进一步形成了点到点错误控制完全可以确保传输的准确性、降低中间传输链路的误码率只有助于改善吞吐率和简化辅助维护的观点。这为竞争式通讯系统开辟了道路。这种系统必须详细考虑中间传输链路的误码率以获得某些好处,例如使成组传输具有较好的性能。

软件工程师与工程界

软件工程师或者以软件为知识基础的系统工程师在工程界的地位一直是我们协会热烈讨论的一个问题。有人在《IEE新闻》上撰文指出,假如他们的教育符合适当的标准,这些人将受到本协会的欢迎。我希望这个开端获得成功。不过,并非所有从事软件技术工作的人都是软件工程师。我确信,在工厂里和硬件工程师并肩工作的软件工程师和系统工程师能否被说服留下来,将取决于我们和他们的长期利益。

(IEE Proceeding,1934年7月)