你一定经常听说“信息革命”、“信息社会”、“新技术革命”、“第三次浪潮”及“知识经济”等词,对“电子计算机”、“电脑”、“因特网”等说法也一定非常熟悉,你甚至是“电脑迷”或网上游戏、通信、了解国内外新鲜事物的高手。但是,你可能未必清楚正是电子计算机或电脑掀起了这些“革命”或“浪潮”,而且成为它的核心技术和发展水平的重要标志。
是的,我们正处在人类历史上一个非常重要的革命时代。这时,我们可用先进的技术手段观察到100亿光年(1028厘米)以外的宇宙天体,还可观察到比10-16厘米还小的微观粒子。这大小横跨44个数量级的科学认识能力,正是这个信息革命时代人类智慧的象征。
而导致这一革命的技术手段主要是现代电信工程、微电子技术、计算机和机器人。其中计算机或电脑是最具有推动力的一项技术,它正在使我们由消费石油、煤炭等能源来维持生存的阶段,逐步过渡到使用信息来改善人类与环境之间关系的阶段。
人们一般把计算机当做一种进行数字计算或数据处理的机器,但是,既然又称之为“电脑”,就理所当然地应该具备“脑”的其他一些功能。正在研制中的最新电脑将使我们进入由它担负“知识处理”的时代,因为它不仅能够存储知识,而且还将具有与人类相似的联想、推理和判断的能力,甚至能与人直接对话,执行由人的声音下达的命令。那时,我们的社会生产方式、人们的日常生活方式等都会发生难以想象的变化。那么,这样神奇的电脑是怎样发展起来的呢?我们不妨追寻一下科学家或工程师们发明计算机的足迹,从中体悟这电脑的奥妙。
巴贝奇的子孙
在1946年第一代(台)电子计算机诞生之前,人们对类似这种机器的探寻大约已有300多年的历史了。但若从更早的古代算起,历史当然更长。
算盘,大家一定很熟悉,至今许多会计、商店或小商贩那里还在使用这种古老的计算工具,而这恰是古代人类的创造,古罗马人、埃及人和中国人都曾广泛地使用过它。
17世纪初,苏格兰人约翰?纳皮尔发明了“纳皮尔筹”,它运用上面写有数字的骨棒,帮助进行除法和乘法运算。1642年,法国青年数学家布莱斯?帕斯卡为帮助父亲算账,发明了第一台机械计算机器,它能够进行加、减法运算,但不能进行乘、除法运算,因此又被称为“加法机”。到1671年,德国数学家和自然哲学家莱布尼兹发明了可以进行四则运算的机械计算器,它的核心部分由“莱布尼兹轮”构成,这种结构长期被后人沿用,直到第二次世界大战。莱布尼兹同时汲取中国《易经》中“阴阳”思想的精髓,发明了二进位制,后来成为计算机运行逻辑中“1”、“0”或“开”、“关”机制的源头。一直到19世纪早期,法国人J?M.雅卡尔发明了一种衣布织机,使用了穿孔卡控制衣布花样,这一构思帮助其他人发明新的计算机。1820年,汤姆斯改进了莱布尼兹计算器,造出所谓算术机,还曾大量生产过。
但是,最有影响的还是英格兰人查尔斯?巴贝奇发明的第一台机械数字通用计算机,又叫“机械式差分计算机”或“差分机”。1823年,巴贝奇得到英国政府的支持,专门研制用于编制各种航海表格的计算机,能够进行加、减、乘、除、对数、正弦、余弦等运算,并可用于进行物理观测。1833年,巴贝奇又发明了“分析机”,能够处理单元和存储单元,用穿孔卡片输入。100年后哈佛大学设计的机电式数字计算机Mark1型机与它非常相似。现在,历史学家往往称巴贝奇为“计算机之父”,而把1946年第一代电子计算机诞生前的所谓“代前”计算机称为“巴贝奇的子孙”。美国明尼苏达大学还建立了“查尔斯?巴贝奇研究所”,专门研究计算机的历史。
自巴贝奇的“分析机”之后,1835年,一位女数学家阿达?拜伦建议巴贝奇利用雅卡尔发明的穿孔卡为他的计算机编制程序,并亲自编制了分析机的一些程序。这成为计算机程序的最初起源。1890年,美国人赫尔曼?霍勒里思发明一种计算机,成功地利用穿孔带以电的方式计数美国第十次人口普查中收集的信息。而布鲁斯制造的“累加和登记机”,则统计出了美国1890年的准确人口数。
历史进入20世纪,计算机技术在头30年里居然没有显著进展,直到1936年,计算机设计理论才取得了重大突破。美国逻辑学家波斯特和英国数学家图林各自发表了一篇有影响的论文。
第二年,现代信息论的创始人香农在他的硕士论文中最先证明,由19世纪英国数学逻辑学家布尔所建立的二进制数字逻辑理论,可用于简化二进制计算机的设计。同年,贝尔电话实验室的斯梯比兹制成第一台继电器式计算机。1939年,他又制造出机电式“复数计算机”,这就是贝尔1型继电器计算机的原型。安德鲁斯参与并相继研制出贝尔2型机和贝尔3型机。贝尔3型机于1944年诞生,拥有9000个继电器,占地1000平方英尺,重10吨,它的运算速度超过以往任何计算机,七位十进制加法只用300毫秒时间,一道乘法一秒钟,除法2.2秒钟,一个弹道计算平均用40分钟。与此同时,由霍勒里思创办的国际商业机器公司也生产出由哈佛大学毕业生艾肯构思出来的Mark-1计算机,这是一台自动定序计算机,占地面积2500平方英尺,内含80万个部件,有60个常数存储器,能进行对数、正弦函数等超越函数的计算,一道加法需0.3秒钟,乘法需3秒钟。
但是,这些都远不是现代意义上的“电脑”。尽管电子管早在二战前30多年就已经问世,但由于没能和计算技术联姻,便也不能孕育真正的电脑。只是由二战中迫在眉睫的弹道计算的需要,才迫使科学家们将二者结合起来,最终导致了——电脑的诞生在第二次世界大战中,如何击落法西斯侵略者的飞机和各种高速的飞弹成了军事科学的首要议题,弹道计算问题成了关键环节。1935-1938年间,美国陆军军械部建立了“弹道研究实验室”,招聘了许多著名科学家,如空气动力学家德莱顿、卡曼,诺贝尔奖获得者拉比、尤里,电子管发明家哈尔,计算机理论奠基人冯?诺伊曼等。这个实验室还派送100名大学毕业生到宾夕法尼亚大学学习差分计算机。这个当时世界上最大的计算中心,集中了各种先进的计算工具,但都无法解决空前复杂的弹道计算问题。比如,要求解一个描绘弹道曲线的二阶微分方程,就是分100组来计算,要描绘出它的全部曲线,至少要运算7850000道乘法和数目更多的加法和减法,使用当时最快的计算机也得花上半年时间。如此这般,法西斯的炮弹早已把人类毁灭了,一个炮弹轨迹还未计算出来。但是,在关键时刻,人类自己的智慧总是能够拯救自己。
1941年,美国人阿丹纳索夫构思了一种电子数学差分分析器,引起了莫尔电气工程学院莫利奇教授的极大兴趣。1943年4月,莫利奇和伊克特?布赖勒一起写出了《电子差分分析器》的报告,递交弹道研究实验室。同年6月5日,美联邦政府与宾夕法尼亚大学签订了一个合同,并投入10万美元经费,莫利奇负责逻辑设计,伊克特负责电路设计。戈德斯坦协助,于1944年夏天,完成了电子计数器、累加器的设计和制造及基本逻辑电路的设计,到1945年底,世界上第一台电子计算机——“数字集成器和计算机”ENIAC(ElectronicNumberIntegratorandComputer,译为埃尼阿克)就诞生了。这台电子计算机用了18000个电子管,占地1500平方英尺,重30吨,功率150千瓦,运算速度每秒5000次。现在看来,这第一个“电脑”真是笨重不堪,但在人类智力解放的道路上树立了一个崭新的里程碑,“电脑”从此开始了真正属于自己的历史。
这台ENIAC可谓第一代电子计算机中的长兄,不仅长得块头大,相貌也丑陋,而且有一个非常关键的缺陷,就是不能储存程序。要实现程度的转换,需要几天时间,因为它的程序编制仅仅是靠转动旋钮,插入或拔出电缆来进行的。看来,这个电“脑”真有点先天不足。
1945年3月,还在紧张安装ENIAC的时候,诺伊曼就与莫利奇和伊克特等人会谈了两天,初步拟定了存储程序电子计算机EDVAC(ElectronicDecreteVariableAutomaticComputer——电子分离变量自动计算机)的方案。于是,他们在1947年开始研制,到1951年初宣告制成。
这台EDVAC包括一个快速存取存储器、一个中央算术单元、一个中央控制单元、输入和输出设备,总共使用了5900个电子管和1200个半导体二极管。20世纪50年代的存储程序计算机基本上都是在它的基础上发展起来的。
实际上,在1946年11月,莫尔电气工程学院开会讨论EDVAC施工方案时,英国剑桥大学的威尔克斯教授也参加了会议,并带回了EDVAC方案,很快研制出EDSAC机(ElectronicDelayStorageAutomativeComputer,电子延时存储器自动计算机),这是另一台最早的存储程序计算机,并早于EDVAC机之前诞生。
但是,最引人注目的第一代电子计算机,还是麻省理工学院数字计算机实验室研制的“旋风”计算机。“布朗伺服机构实验室”的领导弗里斯特受ENIAC工程的影响,于1945年决定设计数字计算机。当莫尔电气工程学院的EDVAC机方案公开后,弗里斯特就进一步决定研究存储程序电子计算机。当1946年英国曼彻斯特大学教授威廉斯发明阴极射线存储管即“威廉斯管”的消息一传到美国,弗里斯特就用这一技术实现计算机的内存储。1947年初,完成了全套逻辑设计。1949年,对存储器进行实验。1950年初,“旋风”机宣告制成,共使用了5000个真空管和11000个半导体二极管。这台电脑一诞生,立即受到美国国防部的高度重视。到1953年,“旋风”机的存储器已改用磁芯材料,大大加快了运算速度,信息存储量也大为增加。
在1945年底至1950年间,冯?诺伊曼在普林斯顿大学领导研制了IAS计算机,于1950年制成,并于1951年夏天创造了连续工作60天而不出故障的先例。
在同一时期,较为著名的第一代电子计算机还有很多。如,莱明顿—兰德公司(其前身是伊克特—莫利奇计算机公司)于1951年生产的万能自动计算机(UNIVAC),由于成功地预测了1952年美国总统选举,而使该公司获得了极大的声誉。又如,由美国国家标准局数字分析研究所研制的“国家标准局西方自动计算机”(SWAC),又称“西方机”,由于它成功地把数学中著名的麦森尼数中的P序列研究推进到一个崭新的水平,从而成为当时一条爆炸性新闻。
现在粗略地看看计算机软件的早期历史。“软件”概念和存储程序的概念是一对孪生兄弟。
早在1946年,戈德斯坦和诺伊曼发明了“流程图”,也就是最早的程序语言。但在1950年以前,由0和1两种状态的特定组合而形成的程序语言还是非常难记、难写、难改,从而极大地限制了计算机的推广。1952年,有人提出一种叫“短码”的代数语言,用于UNIVAC机。1953年,国际商业机器公司提出了“快速编码系统”。1956-1957年间又创造了FORTRAN计算机高级语言。1959年,美国计算机协会和德国应用数学协会又共同研制了ALGOL算法语言。1960年,美国海军中尉霍伯(女)发明了计算机商用语言COBOL。计算机因此而得到迅速推广,到60年代初,计算机也被应用到商业、制造业、材料工业、教育、医疗、通讯和交通等多个领域。直到1968年,才出现了“软件工程”这个名词。
总起来看,这第一代电脑以电子管为逻辑元件,体积大、消耗能量多、运算速度慢、存储容量小、可靠性差,而且价格昂贵。但它作为信息革命的前驱,所采用的二进制和程序存储等基本思想,奠定了现代电子计算机的技术基础。
计算机的飞速发展
由于信息革命中新技术群的突飞猛进,尤其是人造卫星工程、工业自动化等方面的迅速发展,推动着计算机沿着多功能和高速度的方向演进。这个时候集成电路的诞生为计算机工业开辟了广阔的前景。仅仅在10年之内,就完成了第二代向第三代的转换,实现了由分离半导体元件的时代向集成电路时代的飞跃。大型计算机和小型计算机的发展是这个时期计算机工业的显著特点。
数据设备公司于1956年研制出1605计算机,这是第一台晶体计算机。随后,万能机公司的LARC计算机和飞歌公司的TRANSAC计算机也相继面世。真正具有历史意义的第二代计算机,要数国际商业机器公司于60年代初制造的STRECTH计算机,它含有15万只晶体三极管,速度比第一代的IBM704快75倍。这台大型晶体管计算机自1961年被运到洛斯阿莫斯科学实验室之后,整整运行了10年。1971年6月21日,这个实验室还专门为它举行了“退休”仪式。
1963年,当小汤姆斯?沃森带着国际商业机器公司(简称IBM)用半导体技术研制出的高档全晶体管7090型计算机时,在这以前的一切计算机都变得陈旧了。这个公司1964年推出的360系列的混合固体逻辑电路计算机,被沃森称为“公司历史上宣布的最重要的产品”,为它投资5亿美元(二战中研制原子弹的曼哈顿工程才投资20亿美元)。1996年,这种计算机正式投入商品生产,公司的资本积累迅速增加到45亿美元。同时,这家公司还发展了小型数据处理机IBM1400系统。1964年8月,美国数字设备公司还研制出了速度为每秒300万次的晶体管大型机CDC6600。