|||
人类,有了农业却没有牛科学,有了工业也没有蒸汽机科学,有了电气化还是没有电机科学,到了现在就有了计算机科学却没有电视机科学。
电机,是很聪明的,它只说有电机学。电机很快就后电机了,人们感兴趣的是对电机的控制,于是有了控制理论,控制技术。控制本来就是人在控制,却要说智能控制,好象人没有智能,机器才有智能。天人没有合一,人机倒是合一了,这就是那个骑牛的老头没有想到的。
说到现代计算机科学的开山祖师,人们总要说图灵,但他的那篇文章是讲可计算性,其实是数学。图灵很伟大,从不利已专门利人。他从没有把图灵奖奖给图灵,而是奖给几十个非图灵。他在英国国家物理实验室NPL的设计,由威尔金森(J.H.Wilkinson)实现后(即Pilot ACE),使威尔金森获得1970年的图灵奖,但主要的贡献其实是数值计算。
说来也怪,现代数字电子计算机的开山祖师ENIAC,竟然是个图不灵,图图灵奖不灵光,无缘图灵奖。老祖宗ENIAC都图不灵,它的子孙不知什么时候才能图个灵。不仅图不灵,而且还上了法庭。法院判定莫奇利和伊克特的构思和设计是约翰·阿塔那索夫的,是阿塔那索夫在1941年把自己关于计算机的构思告诉了莫奇利。有人说是“剽窃”,有人说是“交流”,当然也可以说是“愿意”。不过,社会舆论不支持法院的判决,没有人说ENIAC是阿塔那索夫发明的。看来美国法院也不灵。
在业内也不完全认同ENIAC,因为它不是真正的冯·诺伊曼存储程序体系结构。它不具备存储程序的能力,程序要通过外接电路板输入,对于每种类型的题目,都要设计相应的外接插板。世界上第一台存储程序结构的计算机是EDSAC(Electronic Delay Storage Automatic Calculator,或Electronic Discrete Sequential Automatic Computer),即英国剑桥大学威尔克斯(M.V.Wilkes)设计并完成,于是威尔克斯获得1967年的图灵奖。
威尔克斯的运气就像刘邦一样。事实上,早在1945年3月,当ENIAC正在安装调试的时候,冯·诺伊曼与莫奇利、伊克特就提出了存储程序计算机的EDVAC (Electronic Discrete Variable Automatic Computer,电子分离变量自动计算机)方案。1946年5月,威尔克斯获得了这一方案的复印件,同年8月又赴美国参加了莫尔学院举办的计算机培训班,回国以后,威尔克斯立即以EDVAC为蓝本设计出自己的EDSAC,并由一家做面包的老板投资,于1949年5月6日,EDSAC首次试运行成功,可惜没有命名为956工程,于是,不是科学院的面包房Lyons公司成为英国著名的“国际计算机有限公司”。做面包的可以做计算机,看来“隔行莫贪利”的祖训也不是放之四海而皆准的。可怜的EDVAC到1952年(或1951年)才完成,与图灵奖失之交臂,可能那时科研机密与知识产权的观念都很薄弱。
中国的EDVAC是1953年由夏培肃、吴几康主持设计,其间停了几年,后采用磁芯存储器,于1960年试制成功,即107机。当时装于在京的中科大,后来中科大远放就被拆除了。
不管是ENIAC,还是EDSAC、EDVAC,还是别的什么AC,都是一种可进行逻辑运算的电子系统,很难称得上“科学”。计算机本身,就是一种机器,谈不上科学,谈不上分科之学。更如果将PC机作为一种现代科学的代表,那不过是对一种家电的现代膜拜而使其成为一种图腾符号。一些以“科学”之名而选择的教学内容不过是洋货的职业训练。“计算机科学与技术”往往是科而不学、技不如人,上不沾天,下不着地。
计算机与别的机器不同的一点是它可以懂得人们设计的一些语言,据说这有三千多种,从而可以与人进行交流。现在,许多人认为计算机从一门“技艺”转向“科学”的里程碑是程序设计语言Algol 60,从而把卡内基理工学院(现卡内基—梅隆大学)的佩利推向了第一个图灵奖的宝座。Algol 60有两个重要的特点,一是递归性的应用,一是巴科斯——诺尔范式(BNF,Bcakus-Naur-Form)的应用。
正是由于佩利的工作使程序设计从“数值分析”中分离出来成为独立的课程,并在20世纪60年代中期,首先有卡内基理工学院等少数大学建立起计算机科学系和研究生院,使计算机科学脱离电气工程、数学而成为一门独立的学科。而卡内基理工学院的三驾马车中的另外两人西蒙(H.A.Simon)和纽厄尔(A.Newell)获得1975年的图灵奖,艾伦·纽厄尔还是信息处理语言(IPL)的发明者;西蒙还因“对经济组织内的决策程序所进行的开创性研究”,获得1978年的诺贝尔经济学奖。
事实上,1960年发生了两件具有里程碑意义的大事,一是基于l谓词演算的Lisp语言,另一是基于一阶谓词演算的Algol 60语言。前者是人工智能的开创者约翰.麦卡锡于1960年发表了一篇关于Lisp语言的论文,意为List Processing,即表处理,其主要思想之一是用一种简单的数据结构表(list)来代表代码和数据。他还推动了“递归”概念的使用。因其在人工智能领域的贡献而获得1971年图灵奖。后者是诺尔在1960年主编的只有17页长的《算法语言Algol 60报告》,这份报告先驱性地使用了BNF范式用以定义程序设计语言的语法,从而使Algol 60语言成为后来许多程序设计语言的原型。为此,四十多年后,彼得.诺尔成为2005年图灵奖的获得者。Algol 60编译器的设计者提出goto语句有害论的艾兹格·W·迪科斯彻(E.W. Dijkstra)获得1972年图灵奖,他还提出著名的Dijkstra算法。
BNF范式的另一提出者也是FORTRAN语言的设计者约翰.巴克斯获得1977年的图灵奖。值得注意的是,许多常用的程序设计语言都是“冯.诺伊曼型”语言,采用而向过程、“逐词逐句”的工作方式,而巴克斯后来致力于开发非冯.诺伊曼型的语言,也就是函数式语言。冯.诺伊曼最初也不支持FORTRAN语言。
在Algol 60报告出版之前,计算机语言是通过说明性的使用手册和编译代码本身而非正式地定义。而Algol 60报告展示了不依赖计算机属性的算法语言的定义,它的子程序概念和函数概念分别影响了Pascal语言和C语言。设计Pascal语言的尼克劳斯·沃尔斯,获得了1984年的图灵奖,设计C语言的D.里奇获得1983年的图灵奖。
上世纪六十年代,当我们还热衷于用语言编织豪迈口号的时候,计算机程序设计语言发生了许多影响深远的趣事。
1967年首次出现“类型”的概念,把数据和施于其上的运算结合成一个统一体,在扩充Algol 60的基础上产生面向对象的的语言SIMULA67,其设计者奥利·约翰·达尔获得2001年图灵奖。提出抽象数据类型的概念还推动了代数语义的研究。而第一个完全面向对象的动态语言smalltalk的提出者艾伦·凯获得2003年图灵奖。
计算机科学是偏重于经验事实的描述和明确具体的应用,它并不像理化天地生那样探讨世界本源,而且容易受到商业运作的影响。艾伦·凯在一次访谈中谈到:“从60年代到70年代只过滤好的思想,因为计算发展的速度要远远超过进行教育的速度。而在最近25年中实际上获得的是一种流行文化。所以,现在之所以缺乏真正的计算机科学和真正的软件工程,部分是由于这种流行文化。”当前,计算机教学广泛地受到流行商业文化的影响。
今后的发展是难以预料的。佩利说过:“任何名词都可以变为动词”,即任何理想和追求,只有通过实践才有实现的可能。艾伦·凯也有句至理名言:“预测未来的最好方法是创造它”。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 20:52
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社