[提要] 自从1951年世界上出现了第一台大型电子计算机到1976年,现代电子计算机还只有25岁。但这种年轻一代的计算机已显示了一系列的特点:它是数字式的、利用两种电子状态(0和1)进行二进制的离散式数字运算。其次,它具有存储程序的能力,能够“记忆”,因而有可能摆脱人的干预而自行执行指令。这是现代计算机一个最重要的特点。这就决定了它自行调节、自行控制以及自动操作的能力。最后,现代电子计算机的这个发展还依赖于电子学的发展,包括光学、结晶学、等离子体物理学、固态物理学、表面物理学等基础科学的发展,由此提供了电子管、晶体管、集成电路等计算机元件。

25年内计算机技术的发展说明,计算机一方面体积越来越小,价钱越来越低,因而小团体和个人也能用了;另一方面,大型计算机则越来越适应于巨大的工业生产、科研、国防等工程的需要,成为国家计划不可缺少的物质手段。此外,计算机业余爱好者队伍的不断扩大,也将为计算机的发展注入新的活力。

电子计算机的“软件”,集中反映了现代计算机的优越性。而各种类型的软件的发展,最后又集中到程序设计语言上。它正在日益接近于人类的自然语言,人们可以直接操纵计算机的运行。这说明,软件越来越独立于特定的计算机,成为一种独立的工程技术。但另一方面,理论却跟不上应用的发展。计算机程序是否正确,还难以论证。这造成了软件技术领域中的盲目性。这方面发展的前景也比较暗淡。

电子计算机尽管面临着一系列困难,但它在延伸人的智力方面还在继续取得巨大成就,可以进一步改善人类的生活条件,提高社会福利,进一步把人类从自然界的约束中解放出来。计算机是有前途的,人类也是有前途的,并将永远充当计算机的主人。

本文原载美国《科学》杂志第195卷,第4283期(1977,3,18),译文有所删节。作者Ruth M. Davis是美国华盛顿国家标准局计算机科学技术学会会长。

现代计算机的特征

计算和计算机的发展是个特别吸引人的题目,这是由于今天大多数成年人的生活总的说来都经历了这个发展过程。1976年计算机刚刚庆祝了它的25周年。电子数字存储程序计算机作为只有25岁的计算装置,还是很年轻的。

任何一份详尽的计算机年表,确实都会把计算装置的起源追溯到公元前400年左右的计数表,以及早在公元前500年中国人就使用的算盘。在这样一张年表中,我们要讨论的计算机属于这样一种类型的机器:(i)进行数字运算,(ii)处理或加工数据(信息),(iii)实时地或伪实时地控制连续过程或离散装置——通常叫做控制器。

在这个相当广泛的定义范围内,年轻一代的电子数字存储程序计算机集中了一些主要的特征:

1)数字运算 它在数学上非常强调离散的计算方法,非常强调使用离散结构来解决数学问题和逻辑问题。这种数字特点具有无比的优越性,因此在设备中,特别是在以前由电机装置或模拟装置发挥作用的设备中出现了全面数字化的强烈趋势。

由于计算机具有数字特点——这通常被认为是一种局限性——就需要把以前更为常见的曲线、曲面和函数关系的连续世界,也是数学家、物理科学和生物科学家以及经济学家最为熟悉的世界,转换成离散的形式。Birkhoff说得好:“计算机似乎恢复了一种数学中的平衡。Newton和Leibniz以微积分强调并集中了对连续函数和收敛与极限理论的注意。计算机则把人们的注意转向离散数学。有些数学领域由于出现了计算机而欣欣向荣,例如组合学、直观推断和数论。”

计算机的数字性质又翻过来归结于电路的性质。本世纪40年代前后,存储数(数据)最普通的形式是触发器、电机继电器和充气管。这些装置能够“存在”于两种状态中的一种状态之中,这就要用二进制表示数。别的都成为历史了。我们不仅习惯了数字和字母的二进制表示法,现在,对于用二元法,即通过点(或光点)的排列而构成的曲线、图像和画面,我们也很乐于同它们打交道了。

电子学技术和光学技术的许多进展,并没有使我们不再信赖数字运算或关系与计算方法的离散表示法。1976年的大规模集成电路(LSI)装在不到一英寸见方的晶片上,在1956年则要用满满一个房间的真空管线路实现等价的逻辑,尽管如此,大规模集成电路仍然要靠区分两种电子状态,从而仍然靠二进制运算。

2)程序存储能力 这大概是50年代的新型计算机最显著的特征。正是这种能力,才有所谓“第二次工业革命”,即二十世纪下半叶的计算机革命。这种具有天才洞察力的想法,是属于John von Neumann的。他在40年代想到了并描述了下列概念:用计算机所使用的数据的相同形式来书写计算机指令,指令就可以像数一样地进行运算;这就允许对指令进行修改,并根据计算机在无人干预的情况下得出的中间结果,选择不同的指令组。这个想法,如最初形成概念时所表达的,是引人注目的。在1946年von Neumann、Burks、Goldstine的著作中写道:

……机器不仅必须能够以某种方式存储计算中所需的数字信息……存储计算的中间结果……还必须能够存储用以控制对数据进行实际操作的指令。在专用机中,这些指令是装置的组成部分,并构成它的设计结构的一部分。对于通用机,则必须能够指示该装置去执行任何可以用数值表示的计算[异体字是作者所加]。

与存储程序一致的想法是,计算机本身能够选择和改变执行指令的序列。这个出色的想法也来自von Neumann,在他的早期著作中曾这样写过:

自动计算机的效用在于,可以反复使用给定的指令序列,反复迭代的次数可以预先给定,也可以依计算结果而定。当迭代完成之后,应当接上另一个指令序列,所以在大多数情况下,我们必须给出两个平行的指令序列,在此两指令序列之前冠以一条应该转向执行哪一个子程序的指令。……结果我们就引入这样一条指令(条件转移指令),它将……使两个子程序中合适的一个子程序得以执行。

这样,真正创新的存储程序概念,就取决于能不能实现条件转移和计算机内部的变址,并且这一概念摆脱了人必须进行的干预。

3)自行调节或自行控制能力 是建筑在一系列预测、操作、对实际结果与预期结果之间的差异的观察、测量和修改基础之上,这种能力使得在硬件中产生有目的的动作。这种能力同反馈概念结合起来(目前已经做到了),使计算机成为第一个“寻找目标”的机器和机器人装置。显然,自控制和自调节的能力取决于可自动修改存储程序。

4)自动操作 计算机能够修改存储的程序,能够自调节,它的自动操作能力可以从这两个特点引出来的。虽然如此,还是值得把这个特点专列一条。自动操作能力意味着在计算开始以后,它的操作独立于操作员和人的干预,这种能力是von Neumann、Norbert Wiener、Claude Shannon和Alan Turing早期的远见和理论的实质部分。它也是把计算机应用于空间、核能、武器投射系统、过程控制、密码学和机器人学的基础。

5)依赖于电子学 这大概是计算机的最有时间性的特点,也许只是在历史的头25年,这才是一个意义重大的特征。还是靠了使用可以控制电子运动的电子设备,才在40年代和50年代为造出我们今天所知道的计算机第一次提供了操作的可靠性和速度、实用的大小、自动操作。相反,电机继电器、手工插接板和手控开关则根本不会像电子线路那样,为计算机的发展提供适当的工程基础。

但是到70年代,电子学在提供计算机元件方面,就同光学、结晶学、等离子体物理学甚至聚合物化学结合起来了。的确,在半导体装置中对材料和封装的要求,造成了关于材料加工和材料选择的各种复杂问题。此外,随着小型化、等离子体蚀刻和超导性成为计算机设计过程的一部分,表面物理学和化学也正在变得极其重要。

总之,计算机的主要特征反映在计算机至今的发展中,并且掌握着当前人们所希望的进展的线索。

计算机工程发展所生成的环境

1950年以来工程技术的发展,并没有集中产生一种以计算机为代表的专门器械。根据汽车、飞机、显微镜、电视机等等历史上的先例,人们可能以为会出现这种情况。但是在计算机领域中,由于技术和结构体系的进展,同数学、逻辑学的革命性变革相结合,在对待计算机的含义上实际已经出现了偏差。

有好几条在实际上各不相同的技术发展路线,表现了最近25年来计算机急剧变化的情况。我们可以从下面几个方面来看:(i)结构和功能的复杂性,(ii)计算机装置(或系统)的大小,(ii)为终端使用或应用所进行的组装。

这些发展用图1到图3表示:图中列出的每一项,都实际代表一台计算机、一组计算机或一个由计算机控制的设备齐全的装置。

2.5.1

1中单流程处理机只能以顺序或相继的方式执行程序指令流;多进程处理系统是同时执行两个或两个以上计算机程序的系统;多道程序系统专供一台中央计算机交错执行两道或两道以上的计算机程序的系统;并行处理机可在一个装置内同时执行两道或两道以上的操作流;机器人被定义为这样一个装置:它具有计算机化的电动控制、由计算机控制的传感器能力以及人类智力的某些特征,它还能直接与物质环境相互作用。

2.5.2

小型计算机是“适于通用,当结构最小时价格低于5万美元这样一类存储程序计算机”。典型的小型计算机是并行的二进制处理机,字长16位,重量小于50磅,在标准的115伏电压下功耗小于500瓦,不需要专用通风。微型计算机至少包含一个微型处理机,加上其它的支持线路,像输入/输出接口、DMA(直接存储存取)逻辑、中断线路、存储器和实时时钟。晶体组件式计算机,可以设想到80年代初会出现一种完整的小型计算机系统晶片,边长小于1英寸,其中有16位的中央处理机部件、32千位的存储器、简单的输入/输出接口。速度受到功耗和串行化的输入/输出的限制,可能在10?到106条指令的范围内,制造成本应在10美元以下。

3的大多数名称现在已成为日常的口语了。例如,过程控制计算机通常认为是控制连续生产过程(如化学处理)而不是离散生产过程的计算机;“智能”终端设备是指与计算机网络互连的办公室(即房间大小)的终端设备,这些终端设备的所有逻辑线路使它们像一台独立的计算机那样工作;简单机器人的范例是海盗着陆器中机器人和苏联的月球机器人;计算机博弈机最近这三年里在市场上出现了,最有名的博弈机用家庭电视屏幕作为电子显示装置,其中的控制机构使它能、玩类似打乒乓、打手球和打网球的游戏。嵌入器具的计算机指的是利用廉价的、小型化的逻辑晶片对大家熟悉的器具进行计算机控制的最新现象。新近家喻户晓的例子,就是广为宣传的、由微型处理机控制的1976年型微波烘箱。最后,智能机器人具有人类智能的某些特征,并能执行某些原先只在人类中间发现的功能,这种机器人已十分迫切地促使我们采取防范措施了。

2.5.3

从这些图可以得出计算机和计算发展的前景和趋势。

1)一个明显的趋势是,计算机变小了,便宜了(如小型计算机、微型计算机和晶体组件式计算机),这就使巨大的计算能力纳入个人可以拥有的范围。目前大量个人使用计算机的例证是手提计算器,价格在10到400美元之间,成套微型处理机的标准价格是50到500美元。个人可以控制计算机能力,已显示出在下列各方面出现巨大变化的实际可能:提供教育;在商场里提供服务;家庭用具的类型和使用,这又反过来影响主妇的作用;保健措施和出现真正有效地自开预防药物方面的可能性。

2)对计算机网络的日益增长的兴趣,已把简直无限的计算机能力交给了不管多么小的小组或团体,也交给了个人。初始价格不过是一个廉价的终端和电话线的价格,终端是通过电话线连到计算机网络上的,这种计算机网络向世界上任何地方“出售”能力。这种计算机能力的售价一般是根据计算时间和所用的计算机部件的数目而定的,当然可能是非常昂贵的。但是这种通过计算机网络的方法,却是适当的。计算机网络的有些属性更是惊人,如:(i)分享国内和国际的昂贵的情报资源、科学计算资源和计算机设备。(ii)在向一切地区提供同等机会和同样质量的公益服务方面,它可能是最好的手段。初步的例子是边远地区的保健工作,教育服务,特别是进修教育,以及通过执法网络实行的公众保护。(iii)在实时意义上集中管理地理上分散的机构,不管它们是政府、跨国公司、全球性气象服务,还是防范天灾人祸的全球性监视服务。(iv)我们的国民工业和科学的创造发明是如此深刻地依赖于需要得到最及时的情报和最现代的计算(研究)财富,计算机网络“大概”是复兴生产和企业的唯一方法。

3)巨型计算机具有高级的和并行处理的能力和复杂的元件互连,这就提供了空前巨大的能力进行科学的、统计的、经济的和工程的计算。以实用精度进行的长期和短期气象预报、核反应堆的设计和控制、经济模拟、为制订政策方针目的而模拟社会经济系统、武器投送系统的控制、美国的载人空间计划、环境监视以及密码上应用,就是完全超出人类能力,而用计算机解决和通过使用计算机而出现的实例。

4)“计算机爱好者商店”的兴起,大概将为发展第一代这样的人提供空前强大的动力,他们乐于用计算机,不怕计算机,他们将在计算机舞台上发挥“基础创造力”的作用,这种创造力在过去对我们这个民族有过很好的预兆。对于我们之中在第二次世界大战结束时十几岁的人来说,计算机爱好者商店并不是新现象。在50年代初期到中期,军用电子剩余物资商店在城市里像雨后春笋般涌现出来,有的甚至论重量出售剩余或陈旧的电子元件。

业余爱好者们从这一大批极好的电子杂货中,学会了装置示波器、电子修理设备和惊人的电子新发明。50年代的电子学剩余物资店铺养育了这样一代工程师,他们能构思和推进50年代、60年代和70年代的计算机技术、电子技术、卫星技术和空间技术。

今天的计算机爱好者什么年纪的都有——从十几岁少年到退休老人。但是这些新的计算机爱好者将在什么新的科技领域或工程领域里成为先驱,我们还说不准。不过我愿意大胆作些猜测:即在自动化和电子学领域里,即将看到计算机控制系统出现在我们的大多数家用器具里、我们的汽车里以及剪草器与汽艇之类减轻个人劳动的发明里。

根据计算机工程的发展趋势,可以对将来作一个合理的预测,就是今后将相当强调用计算机来控制连续的和离散的过程、实时的和接近实时的过程。这种计算机控制的“热潮”将造成以计算机控制来代替传统的控制系统的局面(像在汽车上已经出现的那样),同时创造出以前没有计算机控制不可能出现的全新过程。我们大家预料到的例子有:那些正有效地工作着的机器人,以及地球外的探索和开拓工作。

程序设计和软件的发展

敢于提出“太阳下面总有新事物”的见解是很危险的。但我还是要猜想,程序设计、软件和程序流程框图完全是与计算机的出现连在一起的崭新概念。看来实际上可以把1946年定为Goldstine和von Neumann“发明”程序流程框图的年代。即使当时,发明人就正确地把程序流程框图理解为“逻辑上完整而正确的表达数学问题的记法”,它又逐渐形成一种“表明…...一种归纳法的迭代本性的几何图示”。1946年,Goldstine曾对程序设计有过一段至今仍然是必不可少的有效评论:程序流程框图的目的是画出这样一幅图表明在解决一个问题时计算机的控制过程中发生的情况;是表示计算过程中关键点上的变量状态;并指明正用以求值的公式。

同样,可以把1947年定为创造我们今天所知道的那种计算机程序的年代。从那时以来,程序设计的方法基本上没有变。人们创造了“软件”这个术语来包括运行计算机、完成给定应用、人机通讯工作所需要的程序。

1947年到现在这一段时期中,软件或计算机程序已发展成为一批在用途和销售上各自不同的可区分的产品种类。而且如人们所料,还发展起一种软件工程语言或行话,成了计算机科学和工程语言的一部分。1968年前后采用了“软件工程”这一词来描述程序设计方法、软件发展、程序设计工具和程序设计标准等活动。它仍然是一个年轻、多变、混乱而且正在发展的领域。尽管如此,还是可以用图解表示软件已经适应的主要的一般产品种类(图4)。

2.5.4

在图4中从左向右,软件的产品种类越来越脱离特定的计算机,不受它的约束,越来越面向用户的需要。例如从50年代后期以来,程序设计语言的发展一直是尽可能模仿人类的自然语言。尽可能使用更多的英文字和通用的数学符号。

程序设计语言大概是软件历史上最重要的发展。有了这种语言,只要受到最低限度训练,就能书写或使用计算机程序。其结果,计算机成了一种大家都能用的物质手段,而不是仅科学家和工程师的一种设备。

1976年,估计至少有85%的计算机用户在使用程序设计语言。其中比较著名的有COBOL,FORTRAN,BASIC,ALGOL,PL/1和APT。

软件的头25年的历史还没有取得计算机设备或硬件那种成就、进步或不断降价。软件或计算机程序是从数学和逻辑学领域中发展起来的;程序本质上是为计算机解题而作的算法,计算机程序正确性是建筑在算法正确性的证明方法基础之上的。

今天,在1977年,除了会有不超过100个语句的小程序外,还没有理论的(数学上严密的)方法证明程序是正确的。听到这么说的人总是大吃一惊。这个严重的限制是难以克服的,因为作出必需的归纳判断在数学上是有困难的,而计算机产生这些证明又要耗费大量时间。把所有程序的输入值都试验一次的方法并不现实,为了看出这一点,我们只要注意到,把一个简单乘法程序的所有输入都试验一次,现有“最快的”机器要算3万年以上。

由于对计算机程序的正确性缺乏理论证明,在软件领域内花费了大量人力和物力来发展工程技术和统计学代用品。软件工程师和计算机科学家已专攻软件发展的质量控制技术、“调试”工具、程序设计自动化技术、软件的有效性等等,但收效甚微。软件的正确性仍是计算机科学中最捉摸不定的目的。

结果,软件是最不安全、最少了解,并且整个计算机系统中最花钱的部分。软件发展的成本现在占整个计算机系统成本的90%,由于软件的设计、发展和测试是计算机系统产品中最费劳动力的部分,这个百分比大概会随着软件的绝对价格的增加而增加。在计算领域中,要取得真正有效的惊人进展,大概就要看软件工程的进展有多快。而这个进展将慢得可怜。

在科学技术的历史上,尽管计算机还比较年轻,却已经对我们的生活产生强有力的和综合性的影响。社会和个人又反过来以远见和关心对计算机的发展和应用施加多方面的强大压力。人类在哪里碰上计算机,哪里就显示出力量,并显示出缺乏充分了解或估量以至无法预见未来的恐惧。但是,无论是对计算机还是对人类,当然都有希望。可以期望,人们会衷心赞美和关心计算机。人们恰如其分地把计算机引为至今为止在延伸人类智力方面最早的也是最重要的发明。在计算机时代之前,各种发明基本上是延伸我们的体力和某些感觉能力。工业革命,只不过是作为那些代替或延伸人类体力的发明的缩影而经常出现在我们的头脑中。电话和显微镜就是延伸我们听力和视力的绝妙例子。

但在整个历史上,直到出现计算机为止,人们还从来没有害怕过有什么东西能够比得上、延伸或超过人的智力,不管是生物还是无生物。而在最近25年到30年内,乱七八糟的电子货,什么大型计算机、超级计算机、“灵巧”终端、工业机器人、小型计算机、微型计算机、晶体组件式计算机、遥控操作装置以及几乎像是科学幻想小说中的那种真正的机器人,就像瀑布一样地倾泻到我们头上。

在本文中我们知道了某些历史、趋势、用户和问题,它们结合起来,就产生了1976年的计算机世界。根据我们大家的经验,我相信人和计算机之间力量的大小、智力的高低仍然是不确定的。而且,这并不完全受人的控制。特别是,计算机的能力越来越大,越来越多的工作以前认为只有人的智力才完成得了,现在计算机也能完成了,因此,人类必须有而且也终于有了机会训练自己起别的作用,保持高级的生存地位,否则他的存在对自己似乎没有意义,更没有必要整天游手好闲,无所用心了。

展望未来,我们还有选择的余地,也可以

把人 - 机关系处理得更好一些,我们可以按照四种可能的前景来考虑未来:(i)有人没有计算机,(ii)人同计算机共存,(ii)有计算机没有人,(iv)计算机同人对抗。

面对这些前景,根据今天我们对计算机发展的认识,我可以预言:

1)在高级地、富于想象力地利用计算机方面,进步或变化将慢得令人绝望——一定比在计算机发展的头25年中慢得多。

2)计算机和逻辑装置不断降价和不断缩小,将使一大批人都能使用这些科学制品。我们将看到人们怎样迸发出他们那种声望卓著的“建筑物基础创造力”。有关计算机的成就将是大量的,随机的,有益的。但由于对进展的限制,这些成就将局限在某些范围内,不会大规模铺开。

3)人同计算机结合将比没有计算机更有生命力,这个推测无论对个人或者对社会集体看来都是合理的。

4)人将不断地增加“智能”任务,比他自己这方面的任务要增加得快。这个矛盾局面将占优势,因为,i)我们想最大限度地把任务推给我们的非常迷人的发明去完成;(ii)我们的头脑是贪安逸的;(iii)许多人已经感到没有计算机不安全,简单地说,根本离不开计算机了。

5)计算机向个人环境提供的控制将比个人以前所能做到的多。这是计算机元件小型化和计算机硬件成本降低的结果。现在控制装置的可能范围,从个人可自定指令实时监视自己的脉搏、呼吸、体温和血压,以至为公安需要而对小巷和过道之类的危险环境进行监视。要达到这种个人控制,只要作一点局部改革就行了。

6)主要方向是致力于将计算机用于提高对公众的责任。所采取的形式是把更多的计算机更多地用到资料记录整理工作上。

7)尽管有种种人为的约束,用计算机实现本质上无限制的智能行为方式的进程,仍将是缓慢而不可逆转的,单靠人或计算机都做不到这一点。

我感到非常乐观的是,人不会像常说的那样成为计算机的牺牲品,而是成为它的主人。况且我们都非常幸运,能够参与这个对人类智能的未来作出关键性决定的过程。

(刘定一译,徐国定校)