×

Loading...

1974 Donald E. Knuth(ZT) (2)

本文发表在 rolia.net 枫下论坛Don Knuth, 高爷爷其实用不着偶多说。学编程的不知道他就好像学物理的不知道牛顿,学数学的不知道欧拉,学音乐的不知道莫扎特,学Delphi的不知到Anders Hejlsberg,或者学Linux不知道Linus Torvalds一样,不可原谅啊。:-)为了让文章完整,就再罗唆几句吧。高爷爷本科时就开始给行行色色的公司写各种稀奇古怪的编译器挣外快了。他卖给别人时收一两千美元,那些公司拿了code,加工一下卖出去就是上万上十万。不过也没见高爷爷不爽过,学者本色的说。想想那可是60年代初啊,高爷爷写编译器写多了,顺带就搞出了个Attribute Grammar和LR(k),大大地造福后人啊。至于高爷爷在CalTech的编程比赛(有Alan Kay得众多高高手参加)总是第一,写的Tex到86年就code freeze,还附带2^n美分奖励等等都是耳熟能详的,偶就不饶舌乐。

顺便说一下,高老大爷是无可争议的写作高手。他给Concrete Mathematics 写的前言可谓字字铿锵,堪为前言的典范。他的技术文章也是一绝,文风细致,解释精当,而且没有学究气,不失轻快跳脱。记得几年前读Concrete Mathematics,时不时开怀大笑,让老妈极其郁闷,觉得我nerdy到家,不可救药。其实呢,子非鱼,安知鱼之乐,更不知那完全是高爷爷的功劳。说到写作高手,不能不提Stephen A. Cook。他的文章当年就被我们的写作老师极力推荐,号称典雅文风的样本。库爷爷一头银发,身材颀长,总是面带谦和的微笑,颇有仙风道骨,正好和他的仙文相配的说。

高爷爷其实还是开源运动的先驱。虽然他没有象Richard Stallman那样八方奔走,但他捐献了好多作品,都可以在网上看到,比如著名的Mathematical Writing,MMIXWare,The Tex Book等,更不用说足以让他流芳百世的Tex乐。更多精彩文章及讨论,请光临枫下论坛 rolia.net
Sign in and Reply Report

Replies, comments and Discussions:

  • 工作学习 / IT杂谈 / 图灵奖(A.M.Turing Award) 美国计算机协会(ACM)颁奖.1966年第一次授奖,奖励对计算机领域重要且持久的技术性贡献.
    ACM's most prestigious technical award is accompanied by a prize of $100,000. It is given to an individual selected for contributions of a technical nature made to the computing community. The contributions should be of lasting and major technical importance to the computer field. Financial support of the Turing Award is provided by the Intel Corporation.
    • 1974 Donald E. Knuth(ZT)
      本文发表在 rolia.net 枫下论坛Donald E. Knuth

      Citation
      For his major contributions to the analysis of algorithms and the design of programming languages, and in particular for his contributions to the "art of computer programming" through his well-known books in a continuous series by this title.

      --------------------------------------------------------------
      Donald E. Knuth,1938年出生于Wisconsin。1960年,当他毕业于Case Institute of Technology数学系时,因为成绩过于出色,被校方打破历史
      惯例,同时授予学士和硕士学位。他随即进入大名鼎鼎的加州理工学院
      数学系,仅用三年时间便取得博士学位,此时年仅25岁。

      毕业后留校任助理教授,28岁时升为副教授。30岁时,加盟斯坦福大学计
      算机系,任正教授。从31岁那年起,他开始出版他的历史性经典巨著:
      The Art of Computer Programming。他计划共写7卷,然而仅仅出版三卷
      之后,已经震惊世界,使他获得计算机科学界的最高荣誉Turing Award!
      此时,他年仅38岁!后来,此书与牛顿的“自然哲学的数学原理”等一起,
      被评为“世界历史上最伟大的十种科学著作”之一。相信学过数据结构和编
      译原理的同学们都知道KMP算法和LR(K)算法有多么不可思议,然而此书
      中这样的算法比比皆是!

      在计算机科学上,他主要是一位理论家。然而,他在理论以外也同样做出
      惊人的成就。鼎鼎大名的排版软件Tex,就是他的作品。此外,还有Metafont等,也在世界上得到广泛使用。

      Knuth获得图灵奖时为36岁,前面多说了两岁。估计他可能是历史上最年轻的图灵奖获得者,甚至有可能永远把这个记录保持下去。

      相比之下,其他获得图灵奖的人当时一般都是五十几岁或者六十几岁(例如去年的姚先生,和刚去世的Simon),可见Knuth有多伟大!他真不愧为大师中的大师!

      他很早就提前退休,为的是集中精力把巨著The Art of Computer Programming写完。他一生共带过二十四个(此数字也许不准)博士生,发誓不会再带更多的学生。但是,他有一个奇妙的承诺:

      在他定期进行的讲座中,会不断提出一些新的难题。如果有人能在给定的期限内解出任何一道难题,他将为那个人的博士论文签名!不知道世界之大,有没有哪位后起之秀能获得这样的殊誉?

      他的其它著作和论文难以数计,其中包括Concrete Mathematics等名著。

      从1977年起,他获得Fletcher Jones Professor of Computer Science的
      头衔,并且同时兼任Professor of Electrical Engineering。1990年,斯坦
      福大学更授予他一个非同寻常的头衔Professor of The Art of Computer
      Science,作为对他的特殊贡献的承认!

      他的其它荣誉数不胜数,其中主要的有:美国国家科学院院士,美国艺术
      与科学院院士,美国工程院院士,法国科学院外籍院士,挪威科学院外籍
      院士.......;美国数学会Steele奖,瑞典皇家科学院Adelskold奖,以色列
      工学院Harvey奖,IEEE冯诺依曼奖,东京高科技奖...... 共达数十个之多。
      同时,他还是牛津大学等二十几所大学的荣誉博士。早在1970年,他就在
      国际数学大会上做过特邀报告。建议感兴趣的同学参观他的竹叶:
      http://www-cs-faculty.stanford.edu/~knuth/

      我去了他的主页,其中竟然有中文高德纳。据他介绍是1977年弗朗西斯.姚给他取的中文名字。估计就是上面说的姚先生.姚先生主要研究编译领域的东西,2001年得了图灵奖,是第一个得到图灵奖的华人。我对它的了解也就这么多。
      yao的英文叫Andrew,而不是Fransis。他好象不是主要研究编译的,而
      是研究计算理论的。ACM的网页上说他对计算几何,复杂性理论,数据
      结构分析,通讯复杂度,伪随机数理论都有重要贡献。hehe,姚先生
      实在是数学高手(先生是Harvard的物理博士),台湾国立大学出身的少见
      人才。

      这个三卷本的宝典确实不是一般人啃的下来。不止一两个高人告诉我
      这套书出来以后被摆在书架上机会会更多。

      高德纳还有两卷没写完呢!今年他过了1000000岁生日,第四卷也在写。
      因为他写了三卷,对文本编辑器很不满。就自己编了第一个支持tex格式的编辑器用来写书

      还有一个故事:大抵如下
      linux的发明人说:我一觉醒来,上帝告诉我,我编写了世界上最好的操作系统
      还有一个牛人(记不得名字了)说:我一觉醒来,上帝告诉我,我编写了世界上最好的文字处理系统
      Donald说:“我没有对你们那么说过!"

      这个故事就在他的网页上,他现在Stanford。
      可以到他的主页看看去http://www-cs-faculty.stanford.edu/~knuth/
      你知道他是什么人,他是数据结构与算法的奠基人,是这门学科的鼻祖。现在,连他导的那19个博士都著作等身了.其中R. Sedgewick(Princeton算法课的掌门人)还写了著名的教材Algorithms in C/C++/Java等等,每种版本5个part呢。

      有人真能把这三本书读完,我相信。
      能理解多少呢?只有自己知道
      还有,注意你在他的书里每发现一个错误,他就付给你2。56美元吆!更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 1974 Donald E. Knuth(ZT) (2)
        本文发表在 rolia.net 枫下论坛Don Knuth, 高爷爷其实用不着偶多说。学编程的不知道他就好像学物理的不知道牛顿,学数学的不知道欧拉,学音乐的不知道莫扎特,学Delphi的不知到Anders Hejlsberg,或者学Linux不知道Linus Torvalds一样,不可原谅啊。:-)为了让文章完整,就再罗唆几句吧。高爷爷本科时就开始给行行色色的公司写各种稀奇古怪的编译器挣外快了。他卖给别人时收一两千美元,那些公司拿了code,加工一下卖出去就是上万上十万。不过也没见高爷爷不爽过,学者本色的说。想想那可是60年代初啊,高爷爷写编译器写多了,顺带就搞出了个Attribute Grammar和LR(k),大大地造福后人啊。至于高爷爷在CalTech的编程比赛(有Alan Kay得众多高高手参加)总是第一,写的Tex到86年就code freeze,还附带2^n美分奖励等等都是耳熟能详的,偶就不饶舌乐。

        顺便说一下,高老大爷是无可争议的写作高手。他给Concrete Mathematics 写的前言可谓字字铿锵,堪为前言的典范。他的技术文章也是一绝,文风细致,解释精当,而且没有学究气,不失轻快跳脱。记得几年前读Concrete Mathematics,时不时开怀大笑,让老妈极其郁闷,觉得我nerdy到家,不可救药。其实呢,子非鱼,安知鱼之乐,更不知那完全是高爷爷的功劳。说到写作高手,不能不提Stephen A. Cook。他的文章当年就被我们的写作老师极力推荐,号称典雅文风的样本。库爷爷一头银发,身材颀长,总是面带谦和的微笑,颇有仙风道骨,正好和他的仙文相配的说。

        高爷爷其实还是开源运动的先驱。虽然他没有象Richard Stallman那样八方奔走,但他捐献了好多作品,都可以在网上看到,比如著名的Mathematical Writing,MMIXWare,The Tex Book等,更不用说足以让他流芳百世的Tex乐。更多精彩文章及讨论,请光临枫下论坛 rolia.net
        • 翻译《计算机程序设计艺术》经过的片断回忆 (ZT)
          本文发表在 rolia.net 枫下论坛翻译《计算机程序设计艺术》经过的片断回忆

          苏 运 霖
          那是在1973年至1974年期间,为了在吉林大学开设有关软件的课程,我被吉林大学派往中科院数学所进修,同时和数学所、中山大学和贵州大学的同志一起协作,从事XR(系列软件)项目的某个子课题的研究。当时,国内对于计算机软件的重要性才刚刚有所认识,因此对于程序设计、操作系统等,以中关村及北大、清华为中心,掀起了一个引进国外先进技术的热潮。就在这期间的一个周日,我来到五道口的外文书店,猛然发现了醒目的"The Art of Computer Programming"的3卷大部头新书,心绪为之一动,通过流览书的目录和部分章节,感到这是极有价值的书,在决心认真阅读学习的同时,心里也产生了把它们译成中文的念头。

          当然,这样的重头书,不会只引起我一个人的注意。计算所和数学所的许多同行也都传开了有这本新书的消息。人们自然也都感到,把它译出,很有价值。

          不久之后,我就回到了吉林大学。长春的外文书店,也都有了这套书,我向当时在一起工作的管纪文先生介绍了这套书,并把我想把它们译出的想法告诉了他。当然我们也告诉了当时任系主任的中科院学部委员,我们的老师王湘浩教授,他对我们这一重大举动,也深表支持。于是,我们也就这样开始干起来。

          但是,那还是"文化大革命"时期,虽然已经不是只抓革命,不搞生产的文化大革命时期;特别是在邓小平复出,主持中央工作的阶段,学校已开始了招生和教学。然而,压倒一切的还是革命,后来又搞起批林批孔,矛头所指,直接针对周总理,后来又再次搞起批邓。当时,我白天时间,全在挖防空洞中消耗掉了,所以,我只能在晚上和清晨进行翻译工作。我和管纪文先生的分工是:我全部负责翻译,再由他誊清我的译文,并做一些润饰工作。整个3卷,我们都是这样干的。我们的翻译工作,真正地做起来,是在1975年底才开始的。

          在我们开始从事这一工作时,当然受到人们的注意。一种人认为,我们干不了,这也有一点道理,因此在此之前,我们都还没有干过这样重大的翻译工作,特别是,这个领域对我们来说,完全是新的。但是,实际上,我们并非毫无基础,在此之前,我已经翻译过由当时计算所所长许孔时访问美、加带回的一本《操作系统》教材(多伦多大学),并且全文刊登在由当时的1015所出版的《计算机参考资料》上,当时这一译文,就倍受读者称赞,认为译文精确、流畅,可读性强;此外,我还译过当时著名的《课程表68》这一ACM制定的教学大纲。所以,只能说以前的工作,在其工作量上、难度上,没有现在的工作这么大而已,但是,有了以前的基础,我们怎么就干不了呢!所以对于这种人和他们的责难,我们毫不理会。

          另一种人,则站在"革命者"的角度,说我们又在搞崇洋媚外的一套,说我们宣扬西方的文明,宣扬西方的生活方式,不知怎么回事,当时竟传出,这本书是宣扬资产阶级生活方式的。我曾为了翻译《课程表68》而受过批判和指责,所以,对于现在的责难,我也就不当一回事。我们坚信,这是一本高质量的科技著作,它在国外引起重视,在国内,也应得到同样的重视,才有利于我国的科技发展。更多精彩文章及讨论,请光临枫下论坛 rolia.net
          • 很高兴看到这篇文章,作为该书中文版的早期读者,我原来一直纳闷咋从来没看见过第二卷。向前辈致敬!没有他们就没有中国现在的IT工业!!!
            • 那本书的翻译质量相当高,与现今电脑书店的那些编程指南之类不可同日而语。中国的大部分CS术语的翻译是在那里定下来的。当年中国CS的学生是从那本书里体会到啥才叫“武功超绝”,称作者为老k,看电影时就把张三丰之类称为老K或二老K.
              • 好像吉林大学计算机系曾经为中国计算机的发展做出了相当巨大的贡献。听说6,7,80年代称得上老大哥,不知道可信度有多大。
                • 是滴。第一个计算机硕士,博士,博士后流动站都在吉大计算机系。75年建系。暨南大学和中山大学的计算机系是8,90年代,吉大的老师建起来的,现在也有不少。
                  • 挖,这么老的帖子也能挖出来。谢谢,难怪。我只听说他们60年代开始搞,好像中国第一台计算机是和吉大有关的?
                    • 还是在北大.
                    • pipibug给的URL,过来看的:-)中国第一台名叫XYZ是主要研究人员姓的缩写。有吉大的老师,但听说主力是南大。吉大的数学和物理很强,当是计算机软硬件的基础吧。确有些很好老师,有一位倡导编程“简洁即是美”
                      • 挖,你知道得真多。谢谢。
          • 咦?暨南大学?原来是藏龙卧虎之处。前段儿时间有人提过,我还好信儿查了一下他们的网站,这大学有个医学院,我说嘛,有医学院的大学都是严肃的,不错的。
    • Andrew Chi-Chih Yao, National Taiwan University
      • 我会谈到他的.
    • rolia精华的旧帖#691127有他 - 1972 E.W. Dijkstra(ZT)
      本文发表在 rolia.net 枫下论坛Edsger W. Dijkstra


      Citation
      Edsger Dijkstra was a principal contributor in the late 1950's to the development of the ALGOL, a high level programming language which has become a model of clarity and mathematical rigor. He is one of the principal exponents of the science and art of programming languages in general, and has greatly contributed to our understanding of their structure, representation, and implementation. His fifteen years of publications extend from theoretical articles on graph theory to basic manuals, expository texts, and philosophical contemplations in the field of programming languages.

      Edsger Wybe Dijkstra, 对,就是E.W. Dijkstra. 一提到EWD,很多人就会想起找最短路径的Dijkstra Algorithm,就好像一提到Sir. Tony Hoare,就想起Quick Sort一样。其实这些个算法不过是两个牛人在他们职业生涯中最琐碎的贡献。比如Dijkstra算法,无非是戴爷爷在1956年为了展示新计算机ARMAC的计算能力,初试身手的成果,属于他的算法处女作。据戴爷爷自述,他搞出最短路径算法的时候连纸笔都没用。当时他和他老婆在阿姆斯特丹一家咖啡厅的阳台上晒太阳喝咖啡,突然就把这个算法想出来乐。而且当时的算法研究还比较原始,牛人们忙着用计算机搞数值计算,对离散算法不屑一顾。那时连一个象样的专注于离散算法的专业期刊都没有。戴爷爷于是推迟发表这个算法。直到1959年,他才把这个算法发表在Numerische Mathematik的创刊号上,权为捧场。:-) EWD在多个领域牛气冲天,端的是理论和编程两手硬的高手。只不过他的很多工作比较深刻,学校的老先生们觉得本科生接受不了,不给本科生讲而已。

      戴爷爷大概因为最短路径算法一战成名,于是有人请他参加另一台计算机X1的设计工作,并且把设计实时中断系统的任务派给了他。现在看来实时中断也许不算什么,但要知到,X1前根本就没有实时中断的概念。实现它简直就是一场豪赌。戴爷爷起初还不情愿,但经不住项目负责人Bram和Carel的轮番"吹捧":我们知道实时中断让您工作变得非常困难,但象您这样的牛人肯定能做出来的说。结果戴爷爷被糖衣炮弹彻底击穿,接下了这个烫手山芋。两三年后,他不仅搞出了实时中断,还围绕这个写出了自己的博士论文,顺利戴上博士帽。

      让戴爷爷真正成名立万的还是在X1上开发的Algo60,最早的高级语言之一。戴爷爷没日没夜地工作了8个月,就搞出了Algo60,也因此获得了1972年的图灵奖。因为Algo60,戴爷爷发表了一篇石破天惊的文章:Recursive Programming,于是人们才知道,原来高级语言也可以高效地实现递归,原来从此以后,所有程序员都不可避免地和戴爷爷发明的一个词(应该说是概念)打交道:堆栈。而且Algo60还让戴爷爷深入地思考多道程序设计的问题,最终发明了每个系统程序员都绕不开的概念:semaphore。当然,戴爷爷总是把他发明的概念严格形式化,极具科学家本色的说。和这些成就想比,他提出的吃饭的哲学家问题,也就没什么好说的了。

      说来好笑,当时的大学(忘了哪所了)还是觉得戴爷爷没有受过正统的数学训练,也不是专门搞数值分析的,所以最后不太情愿地给了他一个教职。这种小挫折并不能妨碍象戴爷爷这样的牛人创造历史。他一边教数值分析(:-D) ,一边开始开发一个新的操作系统,并培养计算机科学家。几年后,THE Multiprogramming System横空出世。THE是第一个支持松散耦合,显式同步的进程并由此使得严格证明系统没有死锁变得容易的操作系统。可惜戴爷爷任职的系不识货,还强行解散了他的研究小组(1972年戴爷爷给他的系主任说他得了图灵奖,系主任的第一反应是你们搞计算机就喜欢乱发奖)。这让戴爷爷相当郁闷,得了抑郁症。在极度郁闷之中,戴爷爷决定用写作来治疗自己的抑郁症。于是经典就诞生乐:Notes on Structured Programming。戴爷爷从此被尊为结构化编程的奠基人,而且他的抑郁症也被治好乐。

      EWD太牛,结果他的故事也太多。先到这里吧。1973起,他的故事就在美国发生了。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 1972 E.W. Dijkstra(ZT)(2)
        本文发表在 rolia.net 枫下论坛;;;;2002年8月6日,在与癌魔多年的斗争之后,计算机科学及工程界的泰斗Edsger;Wybe;Dijkstra教授在荷兰Nuenen的家中与世长辞,享年72岁。

        ;;;;1930年,Dijkstra出生在荷兰的鹿特丹。他的父亲是一位化学家,母亲是数学家。

        他在莱顿大学获得了数学和理论物理的硕士学位,又在阿姆斯特丹大学获得了计算机科学博士学位。

        1952年至1962年间,他在阿姆斯特丹数学中心作程序员;1962年至1984年在艾恩霍芬科技大学任数学教授;

        1984至1999年,他在美国奥斯汀的德克萨斯大学任计算机科学教授;

        1999年退休,任德克萨斯大学名誉教授。

        ;;;;Dijkstra提出了一个著名的见解:算法逻辑是而且必定是一切有用的计算机程序结构的基础。此外,他的著名观点还包括:将*作系统作为明确同步的顺序进程来构造、计算机程序开发的正规化、有效控制不确定性的智力投资等。他发明的最短路径算法有着极高的效率。

        他还设计并且实现了第一个Algol;60语言编译器。

        他还是废除“goto语句”的领导者。

        ;;;;Dijkstra是一位高产的作家。http://www.cs.utexas.edu/users/EWD这个网址,你可以找到他全部超过3,000篇的作品。他经常与数百位朋友、同事通信——不是使用电子邮件,而是传统的信件。无论是写学术论文还是写信,他都坚持使用钢笔,而不是计算机。

        ;;;;Dijkstra最广为人知的是他的睿智、雄辩而一针见血的话语。他说:“计算机能不能思考?这个问题就好象‘潜水艇能不能游泳’一样。”

        当年轻的科学家问他如何选择研究课题时,他回答:“只做你能做的事。”在荣获图灵将之后的演讲中,他说:“作为一种工具,计算机使我们的文化起了浅浅的波澜,但也仅此而已;作为对人类智力的一种挑战,计算机掀起的轩然大波在人类历史上是史无前例的。”

        ;;;;Dijkstra提出了许多新概念、新术语,大大的丰富了计算机科学的语言。他提出的概念包括结构化程序设计、问题分解、同步、死锁、“哲学家晚餐”、最弱前提……以及著名的用于控制计算机进程同步的“信号量”。牛津英语词典收录了他在计算机科学环境中使用的“vector”和“stack”这两个词。

        ;;;;在他的科学生涯中,Dijkstra一直坚持学院派的高风亮节,不让自己的研究受到来自商业、管理、政治等等因素的影响。简单、优美而又说服力,这就是他的风格。在程序设计和数学领域中,他对“优雅”的一贯坚持激励了成千上万的人。他把自己的工作评价为“最高标准”,;并以此鼓励他的朋友做到同样的高度。

        另外,他还义无反顾地担当了苏格拉底的角色——城邦的牛虻。他一次又一次地指出时髦观点中存在的错误,;象牛虻一样刺激国家这匹“驽马”不断前进,和苏格拉底一样,他最重要的遗产就是那些未完地研讨、归纳了一半的理论和没有完成的探索。所有与他讨论、共事过的人,尤其是那些参加过他在艾恩德霍芬和奥斯汀组织的读书小组(著名的“星期二下午俱乐部”
        )的人,都从他身上获益匪浅。

        ;;;;Dijkstra是1972年图灵奖的得主——图灵奖常被称为“计算机科学界的诺贝尔奖”。

        他是荷兰皇家科学院的院士、美国国家科学院的院士,同时还是不列颠计算机协会的名誉会员。

        他还在1974年获得过美国信息处理学会联合会(AFIPS)颁发哈里·古德奖。

        在1982年获得电气电子工程师协会(IEEE)颁发的计算机先驱奖。

        在1989年获得美国计算机学会(ACM)为计算机科学教育做出突出贡献者而颁发的SIGCSE奖。

        雅典经济大学曾在2001年授予他名誉博士头衔。

        2002年,日本的C&C基金会对Dijkstra地评价是:“他对软件基础理论、算法理论结构化和信号机制进行了开创性的研究,为计算机科学奠定了坚实的基础。”

        让我们借用裴多给苏格拉底的悼词:“我们毫无疑问地宣称,在我们所知的与他同一时代的所有人中,他是最聪明、最公正、最优秀的。”

        Edsger;Wybe;Dijkstra引导了并且将继续引导这个星球所有的程序员,他的贡献和影响将与世长存。更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1983 Dennis M. Ritchie (ZT)
      本文发表在 rolia.net 枫下论坛Dennis M. Ritchie


      Citation
      For their development of generic operating systems theory and specifically for the implementation of the UNIX operating system

      Dennis M. Ritchie, 既然Ken Thompson是我的偶像,新闻组上人称DMR的Dennis M. Ritchie自然也是,毕竟两人共同缔造了UNIX,而Dennis几乎独力把C搞大(当然,C的前身是B,而B是Ken Thompson一手做出来的)。J 两人1983年分享图灵奖,是有史以来少数几个因工程项目得奖的工程师(本来是唯一的一对儿,但Alan Kay才因为SmallTalk得奖,所以就成了唯二的乐) 。一个人一生能做出一个卓越的系统已经不易,DMR的C和UNIX长盛不衰近30年,至今生机勃勃,DMR此生可以无憾的说。

      D爷爷也算有家学渊源:他老爸在AT&T贝尔实验室工作了一辈子,并在电路设计方面卓有成就,还出了本颇有影响的书The Design of Switching Circuits,据说在交换理论和逻辑设计方面有独到的论述。当然,D爷爷和他老爸是不同时代的人:他老爸的研究成形于晶体管发明之前,而D爷爷的工作离了晶体管就玩儿不转乐。:-D

      不要看D爷爷搞出了C,其实他最爱的编程语言是Alef,在Plan9上运行,支持并行编程。Alef的语法和C相似,但数据类型和执行方式都和C大大不同。说到语言,D爷爷对后来人有非常中肯的建议:抱着学习的目的来开发你自己的语言,不要冀望于它被众人接受。这个建议不光对语言开发有用,也适用于其它大型系统的开发。别的不说,DMR后来领导自己的团队在1995年和1996分别推出了Plan9和Inferno操作系统,又用多少人知道呢?其实,D爷爷当初也没想过C会风行世界。他开发C的初衷和Eric S. Raymond在Cathedral and Bazaar里阐述的一样,就是要消除自己对现有工具的不爽之处。谁知D爷爷无心插柳,C竟然受到众多程序员的狂热拥戴,连D爷爷自己都大惑不解。在一次采访中D爷爷说大概那是因为C的抽象程度碰巧既满足了程序员的要求, 又容易实现。当然C一度是Unix上的通用语言也是原因。但不管怎么说,D爷爷对编程语言出色的审美意识奠定了C广为流传的基础。

      最后八卦一下。D爷爷的业余爱好和NBA大牛Karl Malone一样:开卡车。不过D爷爷更喜欢开NASCAR,而KM独爱巨无霸。J D爷爷自称心中不供偶像,如果一定要说一个,那就是Ken Thompson了。现在Ken爷爷退休当飞机教练去了,而D爷爷当了贝尔实验室系统开发部的头,整日忙于开支票。他俩合作20年,屡屡创造历史。这段令人神往的佳话,也就长留你我心中乐。

      P.S., 很多人都以为Brian W. Kernighan是C的作者。其实BWK只是写了那本经典K&R C。据D爷爷说,他,Ken, 和Kernighan三人中,Kernighan最能写文章,他次之,而Ken写得最少;但说到编程,Ken爷爷才是当之无愧的老大。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 1983 Dennis M. Ritchie (ZT) (2)
        本文发表在 rolia.net 枫下论坛采访Dennis M. Ritchie (丹尼斯?里奇) -- By Manuel Benet

        (翻译:江雄, 译着玩的,有错请指正。:)

        有的人因为改变历史而出名,也有的人是因为创造历史。Dennis Ritchie就属于这种人。当我们中大多数人还在学走路的时候,他开发出使用最为广泛的C语言。这个对人类的贡献勿需多言。

        这还远不够。Dennis Ritchie和Ken Thompson开发了Unix操作系统,真正意义上的“操作系统”。没错,他创造了Unix。

        他在计算机和操作系统上的工作没有停止。他领导的研究人员开发出了Plan 9和Inferno系统。

        他的工作得到了无数计算机组织的承认:1974年因系统和语言方面的杰出论文获得ACM奖章;IEEE Emmanuel Piore奖章(1982),Bell实验室高级成员(1983);ACM图灵奖(1983);NEC C&C基金奖(1989); IEEE Hamming奖章(1990)等等。

        现在,Dennis M. Ritchie是新泽西州Murray Hill的贝尔实验室/朗讯科技的计算机科学研究中心、系统软件研究部主任。

        LF(采访者): 象孩子们希望成为超人一样,你是全世界许多C程序员和Unix爱好者的偶像。被成千上万Unix和C程序员崇拜是什么感觉?如果没有Unix或者C的话,完全无法想象现在我们的世界会是什么样子。当你创造C语言并开始Unix工作的时候,你想到过它会成为计算机科学的“未来”吗?

        Dennis: 这两个问题差不多,也是人们常常问到的。当然我和同事们受到的奖励和评价是令人愉快的,我们的确感觉到我们协助创造了一些真正有意义的东西。但我们真的没有料到它成其为“未来”,甚至没有意识到我们工作的最后影响。它源于“让我们做点有用的事”同时帮帮其它参与者这样的思想。

        记住这点很重要:虽然整个Unix和C或者C++很重要,计算机科技和真正产品的天地更加广阔。无论在编程语言的学术研究方向上还是富有的软件领域都是如此。

        LF: 如果说Unix是过去和现在的操作系统,C当之无愧地可以称为过去和现在的编程语言,尽管也出现了很多面向对象的语言。对C++、Java以及C和C++程序员之间常常出现的激烈争论你怎么看?

        Dennis: C++从C中获得很多东西,因为在C++之前C就被相当广泛接受,C++可以把C作为构造新语言的基础及其编译器的工具。C(令人羡慕而又招人怨恨地)表现为一种可移植的汇编语言,C++试图将它提升到面向对象的层次,成为更抽象的编程方法。(根据最近出现的标准)这两者都显得过于装饰性,堆积了不少小玩意儿。它们体现出一种实用主义,试图理解确实需要的东西。Java则明显是C++的后代,立即除去了C中和指针有关的东西,加进机器无关的目标码的想法(并非很新颖,但很合理)。现在它陷入Sun和Microsoft之间的较量中,(当然仍然存在装饰性强的问题),很难说它会怎么发展。

        LF: 提个假设性的问题:以现在的眼光来看,有了这么多年C编程的经验,如果你不得不重新设计C,你会有什么不同的考虑吗?

        Dennis: 设法(如果时间允许的话)坚持在ANSI/ISO标准中存在的一些东西:函数形参类型的完整说明,即1989年C标准中称作函数原型的东西。还有很多小细节显得过于零乱。例如,static关键字因被用于好几种目的而意思含混。对于语言声明部份的文法我还不很明确。在语言声明中使用的文法模仿了变量声明的做法。这引起了很多批评,但这样做还是有一定道理的。

        LF: 当C语言建立和完善地定义出来时,操作系统还在不断演化之中。更高速和更便宜的硬件也带来一些新的想法。在操作系统基础设计中的关键因素是什么?特别地,你对微内核和一体化设计方法持什么看法?

        Dennis: 我认为这方面并非一个很有意义的问题。我确实很倾向于在Unix(包括Linux)、Plan 9、Inferno中为应用程序提供的结构化、公用的名字空间和资源访问机制。在我看来,微内核的想法在实际中并不重要,至少对通用目的的操作系统基础是这样。实际上,微内核常常是为在其之上的宏观系统服务的。它可以是系统内部结构中有用的工具,但它本身并不能独立存在。当然(事情复杂起来了),也有些情形简单操作系统会用于小的工具设备,而不是一般性的用途,无论是桌面系统或者大型机。

        LF: UNIX现在已经是有很长历史的操作系统。它很多年前就出现了,打那时起,网络、硬件、服务和应用程序的能力和要求都起了巨大变化。面对当前和以后近期的用户需求,Unix眼下的局限性或弱点是什么?

        Dennis: 从基本系统API(系统调用)上看,没有本质的、技术上的局限性。当然在商业/政治问题上有很大的问题,表现为不同Unix商业卖主之间和几种“免费”的Unix(包括Linux和BSD)之间的明争暗斗。

        LF: 最近人们对千年虫问题和由此产生的Internet崩溃的可能非常关心。你觉得一些专家的这样的天命预言有根据吗?

        Dennis: 对此没什么好的见解,真的。在1999年12月31日23:59我不会在坐飞机,但因为我任何新年的时候附近都没有飞机,这实际上和千年虫没有关系。
        LF: 我们无法不提到Inferno,你现在工作中的操作系统。开发这样一个全新的操作系统,以及它自身的Limbo语言主要是出于什么样的原因?并且为什么有了JavaVM/Java,还要Inferno/Limbo?换句话说,Inferno要提供Java所缺少的什么东西?

        Dennis: Inferno是Phil Winterbottom和Rob Pike的创造物,它正好在Java出现之前开始。Java也有它的前身(内部名称叫Oak),但酝酿Inferno的时候还没有理由相信会出现Java热,并且尽管我们也知道Java,但它毕竟还未成型。我想这是一个奇怪的汇聚,一个古老的技术上的想法(一种用可移植虚拟机实现的语言)同时被Sun和我们复活了。也就是说,Inferno的想法源于操作系统技术中更有趣的一些东西(一种可以在原始、廉价、最低限度的硬件上工作的语言和系统能同样在Windows或Unix或Linux上作为应用程序运行)。同时Sun由于和巨大膨胀的WWW/浏览器市场挂钩更加紧密,也应该获得尊敬。

        LF: 在我们看来,Limbo作为一种编程语言的未来和Inferno的扩充和广泛化密不可分。把Limbo移植到其它操作系统有没有意义呢?会不会它的设计和目标太依赖于Inferno了呢?

        Dennis: 技术上,Limbo并不特别地依赖Inferno。现实中,它的确是依赖的,很简单,因为一个新的语言总是依赖于使用它的环境的。

        LF: 从你在贝尔实验室的经历看来,你似乎每时每刻都是在为你所喜爱的项目工作。我假定对Inferno也是如此。那么难道我认为你非常喜欢Unix和C设计会不对了吗?

        Dennis: 我确实喜欢我在贝尔实验室的工作(现在和以后)。

        LF: 我不可避免的要把你和所有为非盈利项目工作的人作个比较,因为他们也喜欢如此----虽然我相信如果有人为他们的免费工作支付薪水他们也不会拒绝。如果你不是在贝尔实验室,你会加入Linux或者类似的项目中吗?根据你多年的、在创新性的研究室的经验你对这些人怎么看?由于我们的杂志主要面向Linux用户,我不会忘了问个Linux的问题。首先,你对Linux的发展动力、以及很多公司开始为它开发软件的决定(例如贝尔实验室,Inferno也移植到了Linux上)持什么样的观点?

        Dennis: 让我一起来回答这些问题。我认为Linux现象是可喜的,因为它从Unix提供的基础中吸收了这么多东西。尽管有种种BSD系统和工作站、大型机厂商的正式产品,Linux可说是Unix直接派生出来的最健康的一种。当然,我不得不注意到,“免费源码”的Unix派生世界看来和商业领域里发生的和正在发生的一样,受着分裂和冲突的折磨。

        LF: 关于Linux的重大问题:你曾用过Linux吗?如果用过,你对它意见如何?

        Dennis: 恐怕我得承认,我实际上没有真正用过它----即依靠它来做我每天的工作。我自己的计算环境是Plan 9、Windows和Inferno的奇怪混合体。我非常钦佩Linux的发展和活力。偶尔人们也问我几乎同样的问题,但是出于一种希望得到这样的回答的姿态,希望我对Linux和其它传统公司的Unix的竞争表现出嫉妒或愤怒。一点也不。这两者我看都是Ken和我以及其它很多人很多年前产生的想法的继续。

        LF: 还有微软...你对该公司现在在桌面计算机上的垄断地位怎么看?过去科幻电影描绘了一幅人类生活被巨型机器所控制的图画,现实则是完全不同的另一种画面。计算机,在很多方面都被看作是一种简单设备。你为程序员着想开发了一个操作系统,在科幻电影的场景中生活过,想象到过计算机的实际情形,你怎么预见未来的计算机时代呢?你认为Inferno和Linux在其中处于什么样的位置?

        Dennis: 这是两个问题。微软的确对桌面系统有一定的垄断,但那不是世上计算机的唯一应用领域。提供软件的其它途径(如Linux),以及那些没有产生象Windows或浏览器大战那样火爆的新闻的计算机领域(如高性能计算、高可靠性计算、极小型计算)都会有一席之地。我相信Linux和Inferno都会兴旺的。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • C语言的一个爹的简历(ZT)
        本文发表在 rolia.net 枫下论坛Dennis M. Ritchie

        Dennis M. Ritchie is head of the System Software Research department in the Computing Sciences Research Center of Bell Labs / Lucent Technologies in Murray Hill, NJ.

        Dennis M. Ritchie是计算机研究中心系统研究部门的头目,该中心属于贝尔实验室/朗讯技术研究中心,位于新泽西默里山。

        I was born Sept. 9, 1941 in Bronxville, N.Y., and received Bachelor's and advanced degrees from Harvard University, where as an undergraduate I concentrated in Physics and as a graduate student in Applied Mathematics. The subject of my 1968 doctoral thesis was subrecursive hierarchies of functions.

        我生于1941年9月9日的纽约 Bronxville,我获得学士学位并且获得哈佛大学更高的学位,在那里我以肄业生资格学习物理,以研究生资格学习应用数学。1968年我的博士论文的内容是:函数的子递归层次。

        My undergraduate experience convinced me that I was not smart enough to be a physicist, and that computers were quite neat. My graduate school experience convinced me that I was not smart enough to be an expert in the theory of algorithms and also that I liked procedural languages better than functional ones.

        我的肄业生的经历使我意识到自己没有做一名物理学家的潜质,而那时计算机正是一个新兴的学科。我的研究生经历使我意识到我没有从事理论数学研究的潜质不可能成为那方面专家,还好,我对程序语言比对数学函数更感兴趣。

        I joined Bell Labs in 1967, following my father, Alistair E. Ritchie, who had a long career there. His most visible public accomplishment was as co-author of The Design of Switching Circuits, with W. Keister and S. Washburn; it was an influential book on switching theory and logic design just before the transistor era.

        1967年我加入追随我的父亲贝尔实验室,我的父亲Alistair E. Ritchie在那里有长时间的工作经历。他的被大家所了解的最大的成果是与W. Keister 及 S. Washburn共同著作《如何设计的开关电路》,它是晶体管时代之前的在开关理论和逻辑设计领域最具影响力书籍。

        Soon after, I contributed to the Multics project, then a joint effort of Bell Labs, MIT, and General Electric. I helped with a compiler for the BCPL language on the Multics machine (GE 645) and on the GE 635 under the GECOS system. Also, I wrote the compiler for ALTRAN, a language and system for symbolic calculation.

        不久后,我加入了Multics项目,那时由贝尔实验室、麻省理工学院和通用电器三家的合作项目。我负责多道处理机的BCPL语言和GE650的编译器,它们都是属于GECOS系统的。同样的,我也写了ALTRAN语言的代数编译器,那是用于符号计算机的一种语言和系统。

        Subsequently, I aided Ken Thompson in creating the Unix operating system. After Unix had become well established in the Bell System and in a number of educational, government and commercial installations, Steve Johnson and I (helped by Ken) transported the operating system to the Interdata 8/32, thus demonstrating its portability, and laying the groundwork for the widespread growth of Unix: the Seventh Edition version from the Bell Labs research group was the basis for commercial Unix System V and also for the Unix BSD distributions from the University of California at Berkeley. The last important technical contribution I made to Unix was the Streams mechanism for interconnecting devices, protocols, and applications.

        后来,我协助Ken Thompson做UNIX操作系统。在UNIX系统基本就绪并且在教育、政府和商业中得到一定程度的应用时,Steve Johnson和我(在Ken帮助下)开始将这个操作系统移植到Interdata 8/32上,通过这种方式证明其轻便性,基于UNIX快速的传播:贝尔实验室的第7版已经成为商业化UNIX的第五版和BSD UNIX的基础。我最近的对于UNIX的贡献是设备互联、协议和应用方面的流机制。

        Early in the development of Unix, I added data types and new syntax to Thompson's B language, thus producing the new language C. C was the foundation for the portability of Unix, but it has become widely used in other contexts as well; much application and system development for computers of all sizes, from hand-held to supercomputer, uses it. There are unified U.S. and international standards for the language, and it is the basis for Stroustrup's work on its descendant C++.

        在UNIX发展之前,我向Thompson的B语言中加入数据类型和新的句法,就这样产生了一种新语言——C。C是便携式UNIX的基础,并且它也在其它领域得到了广泛应用;计算机各方面的应用程序和系统发展,从手持设备到巨型机,都有对它的应用。有美国标准和国际标准的C语言,并且它是后来Stroustrup 写的C++语言的基础。

        Today, as a manager of a small group of researchers, I promote exploration of distributed operating systems, languages, and routing/switching hardware. The recent accomplishments of this group include the Plan 9 operating system, which was released in 1995, and the Inferno operating system, announced April 1996.

        现在,身为研究小组的经理,我至力于探索分布式操作系统、语言、路由/开关硬件。我们这个小组最近的成果有Plan9操作系统(1995发布)和Inferno操作系统(1996年4月发布)

        Awards include: ACM award for the outstanding paper of 1974 in systems and languages; IEEE Emmanuel Piore Award (1982), Bell Laboratories Fellow (1983); Association for Computing Machinery Turing Award (1983); ACM Software Systems Award (1983); C&C Foundation award of NEC (1989); IEEE Hamming Medal (1990). I was elected to the U. S. National Academy of Engineering in 1988. In April 1999 I received the U. S. National Medal of Technology. These were all awarded in conjunction with Ken Thompson.

        Ken's virtual coat-tails are long. I'm one of the few, besides Bonnie T., who has seen him wear a real coat (and even black tie) on more than one occasion.更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1983 Ken Thompson(ZT)
      本文发表在 rolia.net 枫下论坛Ken Thompson


      Citation
      For their development of generic operating systems theory and specifically for the implementation of the UNIX operating system

      Ken Thompson,C语言前身B语言的作者,Unix的发明人之一(另一个是Dennis M. Riche老大,被尊为DMR),Belle(一个厉害的国际象棋程序)的作者之一, 操作系统Plan 9的主要作者(另一个是大牛人Rob Pike, 前不久被google挖走了)。Ken爷爷也算是计算机历史上开天辟地的人物了。1969年还是计算机史前时代,普通人都认为只有大型机才能运行通用的操作系统,小型机只有高山仰止的份儿。至于用高级语言来写操作系统,更是笑谈。Ken爷爷自然不是池中物,于是他和DMR怒了,在1969年到1970间用汇编在PDP-7上写出了UNIX的第一个版本。他们并不知道,一场轰轰烈烈的UNIX传奇由此拉开了序幕。Ken爷爷在1971年又把Unix用C重写,于是C在随后20年成就了不知多少豪杰的梦想和光荣。

      Ken爷爷还有段佳话: 装了UNIX的PDP-11最早被安装在Bell Lab里供大家日常使用。很快大家就发现Ken爷爷总能进入他们的帐户,获得最高权限。Bell Lab里的科学家都心比天高,当然被搞得郁闷无比。于是有高手怒了,跳出来分析了UNIX代码,找到后门,修改代码,然后重新编译了整个UNIX。就在大家都以为"这个世界清净了"的时候,他们发现Ken爷爷还是轻而易举地拿到他们的帐户权限,百思不解后,只好继续郁闷。谁知道这一郁闷,就郁闷了14年,直到Ken爷爷道出个中缘由。原来,代码里的确有后门,但后门不在Unix代码里,而在编译Unix代码的C编译器里。每次C编译器编译UNIX的代码,就自动生成后门代码。而整个Bell Lab的人,都是用Ken爷爷的C编译器。:D更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 1983 Ken Thompson(ZT)(2) Ken Thompson的后门
        本文发表在 rolia.net 枫下论坛UNIX的创造人之一,Ken Thompson,在他的 Turing Award Lecture中,便由这个主题加以发挥,说了一些有趣的故事。C 是一个被拿来写操作系统的语言。写操作系统的人很难忍得住诱惑,不在系统里面装些后门的。想想看,如果我写操作系统时,偷偷在login 的部份加一段程序代码,使得全世界的这套操作系统只要看到我的account和密码就让我进去,给我root权限,这该是多爽呀。 但是我不能直接在 login 的 source code 里面这样写,否则一下就被人抓到了(既然 source code流通,就是要给人看的呀)。 该怎么办呢?就从compiler里面动手脚,称作patch1吧:在compiler中多加一道手续, 如果发现被compile的原始程序〞疑似〞在作login动作,就把它开个漏洞,让我进得去。

        但是这样也不见得行得通。Compiler以后也会改版,新版的compiler可能不是我在写。装系统的人也不见得用我的compiler。怎么办呢?于是我在compiler 的source code中作第二次手脚,称作patch2:如果这个compiler觉得在compile 的程序〞疑似〞另一个 compiler 的 source 的话,就加入上面的patch1和这个 patch2本身。

        好,现在操作系统推出了,CC1 是我写的内建compiler,其中有我动的两个手脚。现在某人在compile UNIX, 不得不用这个compiler。然而CC1 中已经有了 patch1,于是一旦compile到login, compile出来的login程序就被动了手脚。只要看到我的名字,就一定让我进系统,给我root权限。
          ,----------.    +---------------+    ,--------------.   
          | login |     | Compiled  |    | login   |   
          | source | =====> | by CC2   | =====> | Program  |
          | (clean) |     | patch 1作用 |     |(受感染了!)|
          `--------- ’    +----------------+     `-----------’
        既然 compiler CC1会作怪, 那么自己写 compiler 总可以了吧? 然而,C compiler还是得用C写,写好了之后,用谁来compile呢? 只有用CC1来compile。 CC1发现新写的CC2是一个compiler的source code,于是 patch2 就发挥作用了。 CC1会在CC2中也加入patch1和patch2。于是CC2也被〞污染〞了。
          ,------------.      +-------------+     ,------------------.
          | CC2  |      | Compiled |     | CC2     |   
          | source | =====>  | by CC1  | =====> | patch 2作用 |
          | Program |      | (clean)   |      |含 patch1,2 |
          `-----------’      +-------------+     `-------------------’
        如果再用CC2来compile一个正常的login程序,由于CC2中有了patch1,所以 compile出来的login程序也会有后门,让我任意的login;
          ,--------.     +---------------+     ,----------.
           | login |      | Compiled |     | login  |   
           | source |=====> | by CC2   |=====>  | Program |
          | (clean)|      |(patch 1,2) |     | (patched!) |
          `--------’      +--------------+     `--------------’
        如果用CC2 compile另一个compiler CC3,由于CC2中已经被加入了 patch2, CC3又会被污染,也就是说CC3这个compiler中还是会有patch1和patch2......如此一来,全世界的每一套UNIX都种下了这个后门,可以让我任意login!

        然而这些patch都只在binary档之中出现。CC2的source code一切正常,所以从source code完全看不出有什么不对劲呢!我们还可以进一步湮灭证据。一旦装好一套系统,公开的CC1 source code中不必有动过手脚的程序代码,只要让它被动过手脚的compiler编译就可以了。

        有着无辜的包装,事实上内容暗藏玄机的程序,称作〞特洛伊木马〞。 这个特洛伊木马的故事有趣吗?

        用C语言写C compiler,写出来的程序会是个什么样子呢? 举个例子,一个C compiler可能有一段前置处理程序在处理C字符串中的溢出字符。比如说,compiler 需要把如下的字符串:

        "Figure listings :\nFigure1\tA Complete Tree\n....."

        给转换成:

        Figure listings :<换行码>Figure1A Complete.....

        这段程序可能看起来像这样(为简单起见,这个程序从标准输入读进原始码,送到标准输出):

          if ((c=getchar())==’\’)
           switch (getchar()) {
            case ’n’ : putchar(’\n’); break;
            case ’t’ : putchar(’\t’); break;
                 :
          }
          else
           putchar(c);

        好象有点奇怪,是吗?明明用if和switch把溢出字符’\’以及后面的’n’,’t’, 分开了,在putchar的地方又送出’\n’, ’\t’。如果您见多了用某语言写自己的 compiler的情况,对于这种程序段落也就见怪不怪了更多精彩文章及讨论,请光临枫下论坛 rolia.net
        • 关于这个故事有另一个说法,
          这个版本的UNIX传出去之后,Berkley的叫兽们很快就发现了这个后门,重编译也解决不了,但叫兽们毕竟也不是吃白饭的,于是将编译器的源码编译为汇编代码再编译,就解决了这个问题。
          C代码编译为汇编代码的时候,没有插入后门,是为了避免让人一眼就看出破绽。而汇编代码到机器代码的翻译很简单,不依赖于原来的C编译器。这样编译一遍就除掉后门了
    • 1984 Niklaus Wirth Pascal 之父(ZT)
      本文发表在 rolia.net 枫下论坛Niklaus Wirth


      Citation
      For developing a sequence of innovative computer languages, EULER, ALGOL-W, MODULA and PASCAL. PASCAL has become pedagogically significant and has provided a foundation for future computer language, systems, and architectural research.

      Niklaus Wirth是著名的语言设计者 之一。凡是学过一点计算机知识的人大概都知道“数据结构十算法= 程序”这一著名公式。提出这一公式并以此作为其一本专著的书名的瑞士计算机科学家尼克劳斯·沃思(Niklaus Wirth)由于发明了多种影响深远的程序设计语言,并提出结构化程序设计这一革命性概念而获得了1984年的图灵奖。他是至今惟一获此殊荣的瑞士学者。

      Niklaus Wirth的母校苏黎世工学院(ETH),在欧洲甚至全世界都很有名气。1967年Niklaus Wirth回到母校,1968年升为教授,执教,直到1999年退休。在ETH,Niklaus Wirth发明了多种语言,特别是Pascal.

      1984年图灵奖获得者: 尼克劳斯·沃思
      ——PASCAL之父及结构化程序设计的首创者

      凡是学过一点计算机知识的人大概都知道“数据结构十算法= 程序”这一著名公式。提出这一公式并以此作为其一本专著的书名的瑞士计算机科学家尼克劳斯·沃思(Niklaus Wirth)由于发明了多种影响深远的程序设计语言,并提出结构化程序设计这一革命性概念而获得了1984年的图灵奖。他是至今惟一获此殊荣的瑞士学者。

      沃思1934年2月15日生于瑞士北部离苏黎世不远的温特图尔(Winterthur),其父瓦尔特是一位地理学教授。沃思小时就喜欢动手动脑,组装飞机模型是他的最大爱好。中学毕业以后,沃思进入在欧洲甚至全世界都很有名气的苏黎世工学院(ETH),1958年取得学士学位。之后他远渡大西洋到加拿大的莱维大学深造(Laval是和加拿大名城魁北克隔圣劳伦斯河相望的一座城市),于1960年取得硕士学位。之后他又一次迁移,到美国加利福尼亚,进入加州大学伯克利分校,于1963年获得博士学位。学成以后,沃思受聘到斯坦福大学刚刚成立的计算机科学系工作。著名的斯坦福大学门槛极高,怎么会看中了这个来自欧洲小国的毛头小伙子呢?原来在20世纪50年代末、60年代初的情况下,沃思的计算机经验和成就相当引人注目:在苏黎世工学院时,他曾听过瑞士的计算机先驱斯帕塞(A.P.Speiser,他曾出任IFIP的主席)的课,用过由斯帕塞开发的计算机ERMETH(虽然作为学生,机会并不多);在莱维大学时,沃思学了数值分析,用过 Alvac III E计算机(虽然这台计算机经常出故障而不能开机);在伯克利时,沃思先是有一台Bendix G-15计算机可用,后来又参加了为IBM 704开发 NELIAC语言编译程序器的科研小组。 NELIAC的全称是 Navy Electronics Laboratory International Algol Compiler,即美国海军电子学实验室国际 Algol编译程序语言,该语言用于数值计算和一些逻辑处理,其特点是用自己的语言写自己的编译程序,然后进行自编译,是一个类似于 Aled 58但具有开创性意义的语言。沃思在撰写博士论文时,Algol 60报告已经发表。 这是第一个清晰定义的语言,其语法是用严格公式化的方法说明的。当时已有一些学者认识到,清晰的规格说明对于可靠而有效的实现是必需的,但是并不充分:Aled 60报告中还存在一些缺陷和不足。沃思在和 Algol的设计者之一、荷兰人范·维京格尔藤(Andrian van Wijingaarden,他曾任阿姆斯特丹数学中心计算部主任,在开发Algol 68中提出了二级文法,又叫w文法以解决上下文有关这一难题。他曾启发1972年图灵奖获得者狄克斯特拉走上计算机科学之路)多次接触和讨论以后,决定对 Algol 60作进一步改进,并以此作为自己的博士论文课题。这就诞生了由沃思所设计的第一个语言——Euler。Euler虽然在实用性上考虑并不十分周到,但在学术上却非常优美,为编译器的系统设计创造了一个很好的基础。此外,它还对 Algo 60进行了若干扩充,主要是增加了表处理能力。正是由于以上原因,斯坦福大学看中了沃思。与此同时,IFIP也注意到了Euler语言,决定吸收沃思参加对Algol语言进行完善与扩充的工作小组。当时,这个小组中有两派,一派主张设计一个新语言,以便树立一个新的里程碑;另一派则觉得时间太紧,主张对 Algo 60进行适当扩充。沃思参加进去以后,自称同时属于这两派,并提交了一份建议书。这份建议书经过霍尔(Tony Hoars)等人的修改、完善以后获得通过,这就是Aigol W(W是沃思名字的首字母)。第二年,也就是1966年,Algol W在斯坦福大学的第一台 IBM 360上成功实现并正式应用。这中间还有一个小插曲:IBM 360当时只提供汇编语言和 FORTRAN语言,但沃思和他的学生都觉得这两者并不适宜于作为设计编译器的工具。于是,沃思用了两个星期时间写出了一个用来描写Algol编译器的新的语言的定义,然后用了4个月时间在宝来公司的B-5000计算机上完成了交叉编译程序,而沃思的一个学生则把这个交叉编译程序移植到 IBM 360上去。这些额外的工作极大地加快了 Algol W编译器的开发,同时催生了一个新的语言 PL 360。 PL 360虽然是作为辅助工具而设计、开发的,但后来却在许多地方获得应用,取得了意想不到的成功。

      Algol W及 PL 360奠定了沃思作为世界级程序设计语言大师的地位,一举成名。但沃思是一个具有强烈爱国心的人,成名后的他谢绝了斯坦福大学的挽留,于1967年回到祖国,先在苏黎世大学任职,但第二年就回到他的母校苏黎世工学院。在这里,他首先设计与实现了 PASCAL语言(Philips Automatic Sequence CAlculator Language的缩写),这是在 CDC 6600上开发成功的。 PASCAL在数据结构和过程控制结构方面都有很多创造。对于前者,除一般的整型、实型、布尔型数据外,PASCAL还增加了字符型、子域类型、记录结构类型、文件类型、集合类型和指针类型;对于后者,除保留了无条件转移的GOTO语句外,又增加了if-then-else、case、while、repeat和for等多种控制结构,还允许复合语句和处理记录变量的分量使用with语句这种编写形式。可以说,现代程序设计语言中常用的数据结构和控制结构绝大多数都是由PASCAL语言奠定基础的,因此它在程序设计语言的发展史上具有承上启下的重要里程碑意义。

      说来有趣,沃思开发PASCAL的初衷是为了有一个适合于教学的语言,并没有想到商业应用。但一经推出,由于它的简洁明了,它所提供的丰富的数据结构和控制结构为程序员提供了极大的方便与灵活性,也由于它特别适合于由微处理器所组成的计算机系统,竟然大受欢迎,广泛地流传开来。在C语言问世以前,PASCAL是风靡全球、最受欢迎的语言之一,创下了发行拷贝数最多的世界记录。单是沃思的一个学生菲力浦·凯恩(Phillipe Kahn),从 ETH毕业以后,在美国加利福尼亚州办了一个软件公司,就卖出了100多万个PASCAL拷贝,成为百万富翁。

      1971年,沃思基于其开发程序设计语言和编程的实践经验,在4月份的 Communications of ACM上发表了论文“通过逐步求精方式开发程序’(Program Development by Stepwise Refinement),首次提出了“结构化程序设计”(structure programming)的概念。这个概念的要点是:不要求一步就编制成可执行的程序,而是分若干步进行,逐步求精。第一步编出的程序抽象度最高,第二步编出的程序抽象度有所降低…… 最后一步编出的程序即为可执行的程序。用这种方法编程,似乎复杂,实际上优点很多,可使程序易读、易写、易调试、易维护、易保证其正确性及验证其正确性。结构化程序设计方法又称为“自顶向下”或“逐步求精”法,在程序设计领域引发了一场革命,成为程序开发的一个标准方法,尤其是在后来发展起来的软件工程中获得广泛应用。有人评价说沃思的结构化程序设计概念“完全改变了人们对程序设计的思维方式”,这是一点也不夸张的。1983年1月,ACM在纪念 Communications of ACM创刊 25周年时,从其 1/4个世纪发表的大量论文中评选出有“里程碑意义的研究论文” 25篇,每年1篇,沃思的这篇论文就是其中之一。

      PASCAL的成功也罢,结构化程序设计思想的巨大影响也罢,都没有停止沃思继续创造性的研究与开发工作。20世纪70年代中期,为适应并发程序设计的需要,沃思又成功开发了一个获得广泛应用的语言Modula。M0dula除了提供并发程序设计功能之外,另外一个重要特征是引进了模块概念(这也是这个语言叫做Modula的原因)。此外,它还引进了“进程”(process)这一和并发程序相联系而产生的重要概念。Modula语言还特别适合于书写系统程序。但是,比Modula具有更加重大得多意义的却是它的第二个版本Modula.2。这是 1976年,沃思再次赴美国,到 Xerox公司的 Palo Alto研究中心参与Alto计算机的设计与开发工作。Alto是世界上第一个具有图形用户界面的个人计算机系统(可惜Xerox公司没有把它商品化,而由Apple公司学去了它的技术而推出 Macintosh)。沃思回到瑞士以后,参考Alto的经验,设计、开发Lilith个人计算机系统。为了和Lilith的体系结构相配合,沃思决定在Modula的基础上开发新版本,作为整个系统的开发语言。Modula-2与Modula相比,语法更加简洁,更加强调界面设计,模块的可重用性更好。它共有3个编译单元,即程序模块、定义模块和实规模块。在定义模块(definition module)中,只给出那些和模块外部交往所必需的信息。例如,对模块内部的子程序说明而言,在定义模块中只给出子程序名、参数名及其类型等,而不给出子程序体本身,也就是说,在定义模块中只给出模块外部可见的信息。在实规模块(implementation module)中,则给出那些在模块外部不可见的信息,例如,在模块内部定义的子程序说明的子程序体。这样的安排既提高了可读性,又有助于分别编译。M0dula-2在优美性(elegance)和简洁性(simplicity)两方面都比Modula更进一步。Lilith的操作系统、图形软件包、数据库系统、网络协议套件、文件服务器等基本系统和大量应用模块全都是用M0dula-2开发的。目前世界上已经开发了近百个Modula-2的编译系统,北美和欧洲的许多大学已经用Modula-2代替PASCAL作为计算机系本科生的第一门程序设计课程。Modula-2的标准化工作则早在1984年就已由英国开始进行,ISO则于1987年对它进行标准化,并采用由IBM的维也纳实验室提出的VDM-SL和经过沃思本人加以扩充的BNF(即EBNF,见下)表达语言的语法与语义,在形式化方面达到了一个新的水平。在Lilith项目中,沃思坚持将计算机体系结构、语言、操作环境这三者统一起来考虑,实行集成化、一体化设计的成功经验是具有革命性的创举,从而使这个项目在计算机科学史上占有重要地位。

      近年来沃思致力于一个新的计划,即Oberon计划。Oberon是将程序设计语言和操作系统结合在一起的、面向单用户的个人工作站的一个系统。因为沃思认为,在因特网日益普及的情况下,今后联网的计算机主要将是个人工作站,因此如何使个人工作站功能更加强大、更加方便使用是一个十分重大的课题。沃思把这个计划取名为Oberon是寓意深长的,因为Oberon是希腊神话中的仙境之王和女神Titania的丈夫。沃思的目标是要使Oberon语言超越PASCAL和Modula,设计出的操作系统和编译器功能更加强劲。1992年他写了两本书向读者推荐Oberon(见后),可见其对这个计划的重视。

      除了程序设计语言之外,沃思在其他方面也有许多创造。为了定义和描述语言,沃思对著名的“巴科斯-诺尔范式”BNF进行了扩充,成为EBNF(Extended BNF)。我们目前所看到的许多语言的 BNF实际上是EBNF,不过人们往往忽略掉这个E字。和BNF一起出现的,还常常有一些看上去像铁路图那样的图形,称作“语法图”(syntax chart或 syntax diagram)或“铁路图”(railroad diagram),这也是由沃思所设计与发明的,这种图形标记法的描述能力等价于BNF,但当然更易于阅读与理解,更加直观。在语法图中,用圆圈表示终结符,用方框表示非终结符,用有向弧表示走向,图上一条通路就表示该语法结构的一种正确定义方法。语法图的4种基本构造方法如下。

      (1)若产生式为W→W1W2W3,则语法图如图1。


      (2) 若产生式为W→W1W2|W3a|bcW4 ,则语法图如图2。


      〔3〕若产生式为W→abW,则语法图如图3。

      (4)若产生式为W→ab|abW,则语法图如图4。


      对于较复杂的产生式,其语法图一般可通过上述4种语法图进行组合而得。

      在对上下文无关文法的研究中,一个很重要的问题是如何确定两个符号之间的优先关系。现在一般采用的办法也是由沃思和他的同事韦伯提出来的,就叫沃思-韦伯优先关系(Wirth- Weber precedence relation),或叫简单优先关系。它规定上下文无关文法 G中任意两个符号的优先关系如下。

      (1)X<Y,当且仅当有产生式 A→αXBβ,且有推导B+→Yr。

      (2)X=Y,当且仅当有产生式A→αXYβ。

      (3)X> Y,当且仅当有产生式 A→αBYβ,且有推导B+→rX及Y →*aδ。

      其中A、B为非终结符,X、Y为待定优先关系的两个任意符号,α、β、Υ和δ为由终结符和非终结符组成的任意符号串,可以是空串。a是终结符。

      沃思的学术著作很多,主要有如下几种,其中一些原版是用德文写的,翻译成了英文。

      《系统程序设计导论》( Systematic Programming: An Introduction,Prentice- Hall,1973。其德文版已出至第 5版)

      《算法十数据结构=程序》(Algorithms+ Data Structures= Programs,Prentice-Hall,1976)

      《算法和数据结构》(Algorithms and Data Structures, Prentice - Hall ,1986)

      《Modula-2程序设计》(Programming in M0dula-2,Spring6r,1988,第4版)

      《PASCAL用户手册和报告: ISO PASCAL标准》 (PASCAL User

      Manual and Report: ISO PASCAL Standard, Sprillger, 1991)

      《Oberon计划:操作系统和编译器的设计》( Project Oberon:the Design of an Operating System and Compiler,ACM Pr.,1992)

      《Oberon程序设计:超越Pascal和Modula》(Programming in Oberon: Steps beyond Pascal and Modula, ACM Pr,1992)

      《数字电路设计教材》(Digital Circuit Design for Computer Science Students:An Introductory Textbook, Spnnger, 1995)

      《编译器构造的原理和技术》(Theory and Techniques of Compiler Construction,Addison- Wesley,1996)

      ACM除了1984年授予沃思图灵奖外,1987年又授予他“计算机科学教育杰出贡献奖”。另一重要的国际学术组织IEEE也授予过沃思两个奖项: 1983年的 Emanual Piore奖和 1988年的计算机先驱奖(Computer Pioneer Award)。1992年,加州大学伯利分校命名沃思为“杰出校友”。

      沃思是在1984年10月于旧金山举行的ACM年会上接受图灵奖的。沃思发表了题为“从程序设计语言设计到计算机建造”(From Programming Language Design to Computer Construction)的图灵奖演说,回顾了自己在计算机领域所做的工作。演说全文刊载于Communications of ACM,1985年 2月,159- 164页,也可见《前 20年的 ACM图灵奖演说集》(ACM Turing Award Lectures——The First 20 Years:1966-1985,ACM Pr.),179-196页。沃思在演说中强调了程序设计语言简 性的重要意义,也讨论了它所需的硬件和软件环境(因为沃思一直很重视语言的实现问题)。他介绍了在设计Modula-2和Lilith中的经验,指出第一手经验和选择良好开发工具的无比价值。

      沃思现仍在苏黎世工学院任教,他的电子箱为:wirth @ inf.ethz.ch



      布莱兹·帕斯卡尔(Blaise Pascal,1623-1662)是法国十七世纪著名的思想家,一生体弱多病,只活了三十九岁,但在身后却为自己留下了高耸的纪念碑。他的主要著作是《外省通信》和《思想录》,前者常被看作是法国古典主义散文的奠基之作,后者则为哲学和宗教方面的探讨提供了丰富的源泉,成为人因思想而伟大的一个明证。

      《思想录》名言: 思想形成人的伟大。


      人不过是一根苇草,是自然界最脆弱的东西;但他是一根能思想的苇草。用不着整个宇宙都拿起武器来才能毁灭他;一口气、一滴水就足以致他死命了。然而,纵使宇宙毁灭了他,人却依然要比致他死命的东西更高贵的多;因为他知道自己要死亡,以及宇宙对他所具有的优势,而宇宙对此却是一无所知。

      能思想的苇草—我应该追求自己的尊严,绝不是求之于空间,而是求之于自己的思想的规定。我占有多少土地都不会有用;由于空间,宇宙便囊括了我并吞没了我,有如一个质点;由于思想,我却囊括了宇宙。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 单是沃思的一个学生菲力浦·凯恩(Phillipe Kahn),从 ETH毕业以后,在美国加利福尼亚州办了一个软件公司,就卖出了100多万个PASCAL拷贝,成为百万富翁。这个公司就是Borland, 他卖的应包括Delphi.
    • 好看. 应该是为计算机编年史的时候了. 请问发明SQL的人得过图灵吗? SQL养活了多少人呀!
      • ZT 关系数据库之父:EF Codd 1981年图灵奖获得者
        本文发表在 rolia.net 枫下论坛关系数据库之父-埃德加·考特

        2002年7月





        在数据库技术发展的历史上,1 9 7 0 年是发生伟大转折的一年。这一年的6 月,I B M 圣约瑟研究实验室的高级研究员埃德加·考特 (Edgar Frank Codd) 在Communications of ACM 上发表了《大型共享数据库数据的关系模型》一文。A C M 后来在1 9 8 3 年把这篇论文列为从 1 9 5 8 年以来的2 5 年中最具里程碑意义的2 5 篇论文之一,因为它首次明确而清晰地为数据库系统提出了一种崭新的模型, 即关系模型。 “关系”( r e l a t i o n ) 是数学中的一个基本概念,由集合中的任意元素所组成的若干有序偶对表示, 用以反映客观事物间的一定关系。如数之间的大小关系、人之间的亲属关系、商品流通中的购销关系等等。在自然界和社会中, 关系无处不在; 在计算机科学中, 关系的概念也具有十分重要的意义。计算机的逻辑设计、编译程序设计、算法分析与程序结构、信息检索等,都应用了关系的概念。而用关系的概念来建立数据模型,用以描述、设计与操纵数据库,考特是第一人,因此他被自然地称为“关系数据库之父”。

        由于关系模型既简单、又有坚实的数学基础, 所以一经提出, 立即引起学术界和产业界的广泛重视,从理论与实践两方面对数据库技术产生了强烈的冲击。在关系模型提出之后,以前的基于层次模型和网状模型的数据库产品很快走向衰败以至消亡,一大批商品化关系数据库系统很快被开发出来并迅速占领了市场。其交替速度之快、除旧布新之彻底是软件史上所罕见的。基于7 0 年代后期到8 0 年代初期这一十分引人注目的现象,考特于 1976年被授予 IBM 名士(IBM Fellow)称号并于 1 9 8 1 年获得了计算机科学领域的最高奖项-图灵奖。在接受图灵奖时,他做了题为“关系数据库:提高生产率的实际基础”的演说。(刊于1982 年2 月的 C o m m u n i c a t i o n s o f A C M 第1 0 9 至第1 1 7 页,或见《A C M图灵奖演说集》第3 9 1 至第4 1 0页。) 2002年,《福布斯》杂志评选考特创建的关系数据库模型是过去 85 年中最重要的创新之一。

        考特原是英国人,1 9 2 3 年8 月1 9 日生于英格兰中部的港口城市波特兰。第二次世界大战爆发以后,年轻的考特应征入伍在皇家空军服役,1 9 4 2 至1 9 4 5 年期间任机长,参与了许多重大空战,为反法西斯战争立下了汗马功劳。二战结束以后,考特上牛津大学学习数学,于1 9 4 8 年取得学士学位以后到美国谋求发展。他先后在美国和加拿大工作,参加了I B M 第一台科学计算机7 0 1 以及第一台大型晶体管计算机 S T R E T C H 的逻辑设计,主持了第一个有多道程序设计能力的操作系统的开发。他自觉硬件知识缺乏,于是在6 0 年代初,到密歇根大学进修计算机与通信专业( 当时他已年近4 0 ) ,并于1 9 6 3 年获得硕士学位, 1 9 6 5 年取得博士学位。这使他的理论基础更加扎实,专业知识更加丰富。加上他在此之前十几年实践经验的积累,终于在1 9 7 0 年迸发出智慧的闪光,为数据库技术开辟了一个新时代。

        由于数据库是计算机各种应用的基础,所以关系模型的提出不仅为数据库技术的发展奠定了基础,同时也成为促进计算机普及应用的极大推动力。在考特提出关系模型以后,I B M 投巨资开展关系数据库管理系统的研究,其“S y s t e m R”项目的研究成果极大地推动了关系数据库技术的发展,在此基础上推出的D B 2 和S Q L 等产品成为I B M 的主流产品。S y s t e m R本身作为原型并未问世,但鉴于其影响,ACM还是把1988 年的 “软件系统奖”授予了S y s t e m R开发小组( 获奖的6 个人中就包括1 9 9 8 年图灵奖得主J . G r a y )。这一年的软件系统奖还破例同时授给两个软件,另一个得奖软件也是关系数据库管理系统,即著名的I N G R E S 。

        1 9 7 0 年以后,考特继续致力于完善与发展关系理论。1 9 7 2 年,他提出了关系代数和关系演算的概念, 定义了关系的并、交、投影、选择、连接等各种基本运算, 为日后成为标准的结构化查询语言(S Q L )奠定了基础。

        考特还创办了一个研究所(关系研究所)和一家公司(C o d d & A s s o c i a t i o n s),他本人是美国国内和国外许多企业的数据库技术顾问。1 9 9 0 年,他编写出版了专著《数据库管理的关系模型: 第二版》, 全面总结了他几十年的理论探索和实践经验。

        考特于 2003 年 4 月 18 日逝世,享年 79 岁。他的功绩会被历史永远纪录。更多精彩文章及讨论,请光临枫下论坛 rolia.net
        • 谢! 再小声问一句: CUBE和MDX(Multidimensional Expressions)是谁发明的? 我个人觉得发明者也该得图灵奖, 这些东东大大地提高了数据库的查询效率.
        • 谢谢nealzhao为我交了一天功课, 关于Codd我在加点作料(ZT)
          在Codd的理论公开之后,并没有立即被IBM所采纳。IBM已经对一个称为IMS的层次型数据库进行了大量投资,因而它让其他公司和企业家去考虑如何进一步发展Codd的理论。其中的领袖人物是拉里o埃利森,他在1977年与Ed Oates和Bob Miner一起研制了世界上第一个商用关系型数据库管理系统,在此过程中,创办了一个公司,后来成为Oracle公司。其余要说的就是数据库的历史了.
        • Codd提出的RDBMS的12项准则 (ZT)
          本文发表在 rolia.net 枫下论坛Rule 1:

          The Information Rule
          All data should be presented to the user in table form. Last week's newsletter already discussed the basics of this rule.
          1、信息准则
          关系数据库中的所有信息都应在逻辑一级上用一种方法,即表中的值,显示的表示。

          Rule 2:

          Guaranteed Access Rule
          All data should be accessible without ambiguity. This can be accomplished through a combination of the table name, primary key, and column name.
          2、保证访问准则
          依靠于表名,主键和列名,保证能以逻辑的方式访问数据库中的每个数据项。

          Rule 3:

          Systematic Treatment of Null Values
          A field should be allowed to remain empty. This involves the support of a null value, which is distinct from an empty string or a number with a value of zero. Of course, this can't apply to primary keys. In addition, most database implementations support the concept of a nun- null field constraint that prevents null values in a specific table column.
          3,空值的系统化处理
          RDBMS支持空值(不同于空的字符串或空白字符串,并且不为零)系统化的表示缺少的信息,且与数据类型无关。

          Rule 4:

          Dynamic On-Line Catalog Based on the Relational Model A relational database must provide access to its structure through the same tools that are used to access the data. This is usually accomplished by storing the structure definition within special system tables.
          4,基于关系模型的联机目录
          数据库的描述在逻辑上应该和普通数据采用同样的方式,使得授权用户可以使用查询一般数据所用的关系语言来查询数据库的描述信息。

          Rule 5:

          Comprehensive Data Sublanguage Rule
          The database must support at least one clearly defined language that includes functionality for data definition, data manipulation, data integrity, and database transaction control. All commercial relational databases use forms of the standard SQL (Structured Query Language) as their supported comprehensive language.
          5,统一的数据字语言准则
          一个关系系统可以具有几种语言和多种终端使用方式(如:表格填空方式,命令方式等)。但是,必须有一种语言,它的语句可以表示为具有严格语法规定的字符串,并能全面的支持以下功能:数据定义,视图定义,数据操作(交互式或程序式),完整约束,授权,事物控制(事务开始,提交、撤销)。

          Rule 6:

          View Updating Rule
          Data can be presented to the user in different logical combinations, called views. Each view should support the same full range of data manipulation that direct-access to a table has available. In practice, providing update and delete access to logical views is difficult and is not fully supported by any current database.
          6,视图更新准则
          所有理论上可更新的视图也应该允许由系统更新。

          Rule 7:

          High-level Insert, Update, and Delete
          Data can be retrieved from a relational database in sets constructed of data from multiple rows and/or multiple tables. This rule states that insert, update, and delete operations should be supported for any retrievable set rather than just for a single row in a single table.
          7,高阶的插入,更新和删除
          把一个基本关系或导出关系作为一个操作对象进行数据的检索以及插入,更新和删除。

          Rule 8:

          Physical Data Independence
          The user is isolated from the physical method of storing and retrieving information from the database. Changes can be made to the underlying architecture ( hardware, disk storage methods ) without affecting how the user accesses it.
          8,数据的物理独立性
          无论数据库的数据在存储表示上或存取方法上做任何变化,应用程序和终端活动要都保持逻辑上的不变性。

          Rule 9:

          Logical Data Independence
          How a user views data should not change when the logical structure (tables structure) of the database changes. This rule is particularly difficult to satisfy. Most databases rely on strong ties between the user view of the data and the actual structure of the underlying tables.
          9,数据的逻辑独立性
          当基本表中进行理论上信息不受损害的任何变化时,应用程序和终端活动都要保持逻辑上的不变性。

          Rule 10:

          Integrity Independence
          The database language (like SQL) should support constraints on user input that maintain database integrity. This rule is not fully implemented by most major vendors. At a minimum, all databases do preserve two constraints through SQL. No component of a primary key can have a null value. (see rule 3) If a foreign key is defined in one table, any value in it must exist as a primary key in another table.
          10,数据完整性的独立性
          关系数据库的完整性约束必须是用数据子语言定义并存储在目录中的,而不是在应用程序中加以定义的。

          至少要支持以下两种约束:

          实体完整性:主键中的属性不允许为NULL ;

          参照完整性:对于关系数据库中每个不同的非空的外码值,必须存在一个取自同一个域匹配的主键值。

          Rule 11:

          Distribution Independence
          A user should be totally unaware of whether or not the database is distributed (whether parts of the database exist in multiple locations). A variety of reasons make this rule difficult to implement; I will spend time addressing these reasons when we discuss distributed databases.
          11,分布的独立性
          一个RDBMS应该具有分布独立性。分布独立性是指用户不必了解数据库是否是分布式的。

          Rule 12:

          Nonsubversion Rule
          There should be no way to modify the database structure other than through the multiple row database language (like SQL).
          12,无破坏准则
          如果RDBMS有一个低级语言(一次处理一个记录),这一低级语言不能违背或绕过完整性准则以及高级关系语言(一次处理若干记录)表达的约束。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • ZT SQL 之父 Don Chamberlin
        本文发表在 rolia.net 枫下论坛2003 年对于 Don Chamberlin 来说,可以说是收获之年:这一年他获得了 IBM 公司技术方面的最高荣誉 IBM 名士(Fellow)称号;获得了 ACM SIGMOD 颁发的创新奖;获得了母校 Harvey Mudd 学院的杰出校友奖; 特别是,他还获得了《软件研发》英文版《Dr. Dobb'sJournal》颁发的 Dr. Dobb's 程序设计杰出奖 (Excellence in Programming Award),与 Linus Torvalds、James Gosling、Anders Hejlsberg 等一起载入史册。

        Don Chamberlin 获得这些殊荣当然是无愧的:是他发起了数据查询的两次革命,他是 SQL 语言的创造者之一,也是 XQuery 语言的创造者之一。今天数以百亿美元的数据库市场的形成,与他的贡献是分不开的。

        Don Chamberlin 似乎天生与数据库、信息检索有缘:小的时候,家里的一本 100 多磅重的百科全书是他的最爱,在他看来,这大概是数据库的最早形式。作为地地道道的硅谷人,他的本科是在规模很小但是声誉很高的 Harvey Mudd 学院度过的,这个学校至今仍然保持每年从 1600 多名申请者中仅招收 100 多名学生的制度。

        在斯坦福大学获得博士学位以后,Chamberlin 加入了位于纽约的 IBM T.J.Watson 研究中心。那里汇聚了当时计算机界的大批精英,主要研究方向是操作系统。Chamberlin 一开始从事的项目是 System A,一年后,项目最终失败。当时担任项目经理的 Leonard Liu(后来曾担任 Cadence 公司首席运营官)很有远见地预见到数据库的美好前景,他转变了整个小组的方向。Chamberlin 从此如鱼得水,在数据库软件和查询语言方面进行了大量研究。他成了小组中最好的网状数据库 CODASYL 专家,整日徜徉在复杂指针和集合选择规则的海洋中。与此同时,20 世纪 60 年代晚期,在美国西海岸 IBM 圣何塞研究中心(Almaden研究中心的前身)工作的数学家 Edgar Codd 独自创造了关系数据库的概念。但是,由于这种思想对 IBM 本身已有产品造成了威胁,公司内部最初是持压制态度的。当然这也与 Codd 采用了太多数学方法(以谓词演算为基础),不容易理解有关。在 Codd 里程碑性的论文"A Relational Model of Datafor Large Shared Data Banks"以及许多重要的后续论文公开发表之后,IBM 研究中心从事数据库的研究人员中,还有不少人以怪异思想视之,或者半信半疑,或者完全摸不着头脑的,甚至有人做出如此轻蔑的评论:"这东西过十年再说吧。"

        一天, Codd 到 Watson 研究中心访问, 在讨论会上, 他几乎用一行语句就完成了类似于"寻找比他的经理挣得还多的雇员"这样的查询。"我的天!"Chamberlin 知道,这个查询用 CODASYL 来表示的话,可能要超过 5 页纸。这种强大的功能使 Chamberlin 醍醐灌顶,幡然醒悟,从此转向了关系数据库。

        在其后的研究过程中,富于程序员气质的 Chamberlin 相信,Codd 提出的关系代数和关系演算过于数学化,无法成为广大程序员和使用者的编程工具,这个问题不解决,关系数据库也就无法普及。因此他和刚刚加盟的 Ray Boyce 设想出一种操纵值集合的关系表达式语言-- SQUARE(Specifying Queries as Relational Expressions)。

        1973 年,IBM 在外部竞争压力下,开始加强在关系数据库方面的投入。Chamberlin 和 Boyce 都被调到圣何塞,加入新成立的项目 System R。当时这个项目阵容十分豪华,有 Jim Gray ,Pat Selinger,和 Don Haderle 等数位后来的数据库界大腕。

        System R 项目分成研究高层的 RDS(关系数据系统)和研究底层的 RSS(研究存储系统)两个小组。Chamberlin 是 RDS 组的经理。由于 SQUARE 使用的一些符号键盘不支持,影响了易用性,Chamberlin 和 Boyce 决心进行修改。他们选择了自然语言作为方向,其结果就是"结构化英语查询语言(Structured English Query Language,SEQUEL)"的诞生。当然,后来因为 SEQUEL 这个名字英国已经被一家飞机制造公司注册了商标,最后不得不改称 SQL。有趣的是,他们的野心很大,想借此实现非程序员也就是普通大众也能广泛应用计算机的梦想(当然,那时候还没有图形界面)。因此,项目组找来了一位语言学家,她跑到圣何塞州立大学,找了许多不懂计算机的大学生,教授他们 SEQUEL 和 SQUARE 两种语言,像白居易当年对老妪吟诗那样,寻找改进的方案。他们的梦想当然并没有实现,然而,SQL 的简洁、直观还是使它迅速成为了世界标准(1986 年ANSI/ISO),30 年后仍然占据主流地位。而经过了 1989、1992、1999 和 2003 年四次修订,当初仅 20 多页的论文就能说完的 SQL,如今已经发展为篇幅达到数千页的国际标准。

        1988 年,由于"革命性地改变了数据库系统行业的面貌",System R 和伯克利分校开发的竞争系统 INGRES 共同获得了 ACM 颁发的"软件系统奖",Chamberlin 是 9 位获奖者之一。

        此后,Chamberlin 曾一度顺应个人电脑的大潮,对桌面出版发生了兴趣。他领导了一个小组开发了一种文档编辑/格式化程序,名为 Quill。其中文档的逻辑视图是用 SGML 保存的。这是 Chamberlin 第一次接触标记语言。

        20 世纪 90 年代,Chamberlin 再次返回数据库世界,开始从事对象--关系数据库的开发,其成果在 DB2 中得到了体现。其间他曾撰写过一本专门讲 DB2 的书《A Complete Guide to DB2 Universal Database》(Morgan Kaufmann,1998)。在网络时代到来,XML 日益成为标准数据交换格式的时候,Don 看到了自己两方面研究经验--数据库查询语言和文档标记语言相结合的最佳时机。他成为 IBM 在 W3C XML Query 工作组的代表,并与工作组中两位同事 Jonathan Robie 和 Dana Florescu 一起开发了 Quilt 语言,这构成了 XQuery 语言的基础。而后者经过多年快速发展,即将成为 W3C 的候选标准。对于 Chamberlin 来说,XQuery 语言标志着自己"整个职业生涯中的又一个高峰。"他深信 Web 数据技术的发展将带来第二次数据库革命。

        Chamberlin 的学术成就,使他 1994 年当选为 ACM 院士,1997 年当选为美国工程院院士。他对于教育一直很有兴趣,多年来一直担任 ACM 国际大专程序设计竞赛(ICPC)的出题人和裁判。更多精彩文章及讨论,请光临枫下论坛 rolia.net
        • 附:Dr. Dobb's 程序设计杰出奖 从 1991 年起,每年《Dr. Dobb's Journal》都会将荣誉给予那些对软件开发的发展做出了重要贡献的人。这就是著名的 Dr. Dobb's 程序设计杰出奖 (Excellence in Programming Award)。历年的获奖者包括:
          1991 年:Alexander Stepanov,C++ 标准模板库(Standard Template Library,STL)的开发者。
          1992 年:Linus Torvalds,Linux,操作系统背后的关键力量。
          1993 年:Larry Wall,Perl 语言的作者。
          1994 年:James Gosling,Java 首席架构师。
          1995 年:Ronald Rivest,教授、作者和计算机安全专家,RSA 算法设计者之一,2002 年图灵奖获得者之一。
          1996 年:Gary Kildall,操作系统、程序设计语言和用户界面等领域的先驱。
          1997 年:Erich Gamma, Richard Helm, John Vlissides 和 Ralph Johnson,即 GoF,《Design Patterns: Elements of Reusable Reusable Object-Oriented Software》一书的作者。
          1998 年:Guido van Rossum ,Python 之父。
          1999 年:Donald Becker,Linux 联网功能开发者,Beowulf 项目的首席研究者。
          2000 年:Jon Bentley,计算机科学家,本刊英文版特邀编辑。
          2001 年:Anders Hejlsberg,Turbo Pascal 开发者,C# 和.NET 框架架构师。
          2002 年:Adele Goldberg 和 Dan Ingalls,Smalltalk 和面向对象语言先驱。
          2003 年:Don Chamberlin,SQL 语言和 XQuery 语言的开发者。
    • 1999 Frederick P. Brooks, Jr.(ZT)读过<<人月神话>>吧
      本文发表在 rolia.net 枫下论坛Frederick P. Brooks, Jr.


      Citation
      For landmark contributions to computer architecture, operating systems, and software engineering.

      ----------------------------------------------------------------------------------------

      Frederick Brooks传记

      20世纪最后一年也就是1999年的图灵奖,授予了年已69岁的资深计算机科学家布鲁克斯(Frederick Phillips Brooks, Jr.)。布鲁克斯这个名字在中国知之者不多,但在美国却是大名鼎鼎。因为他在60年代初只有29岁时就主持与领导了被称为人类从原子能时代进入信息时代标志的IBM/360系列计算机的开发工作,取得辉煌成功,从而名噪一时。以后他作为硬件和软件的双重专家和出色的教育家始终活跃在计算机舞台上,在计算机技术的诸多领域中都做出了巨大的贡献。从某种意义上说,对于布鲁克斯而言,图灵奖是一个“迟到的荣誉”
      布鲁克斯1931年4月19日生于北卡罗来纳州的杜哈姆。1953年从杜克大学毕业,取得学士学位以后,进入哈佛大学深造,1955年取得硕士学位,1956年取得博士学位。值得指出的是,布鲁克斯取得的是计算机科学的博士学位,是一位“正宗”的计算机博士,是世界上第一批获得计算机科学博士学位的少数学者之一。他的博士论文课题工作是在哈佛著名的计算实验室(Computation Laboratory)进行的。大家知道,40年代被称为MARKI的世界上第一台程序控制的机电式计算机ASCC(Automatic Sequence Controlled Calculator)就是由艾肯(Howard Hathaway Aiken,1900~1973)在这里设计,并获得IBM的支持而开发成功的。请大家注意,叫MARK的计算机有两种。除哈佛艾肯设计的ASCC被叫成MARK外,英国曼彻斯特大学由威廉斯管的发明人F.C.Williams和T.M.Kilburn等人研制的MADM计算机(1848年)也被叫成MARKI,这是一台用威廉斯管作存储器并可存储程序的计算机,有时也叫做“婴儿”机(Baby)。通常提到的MARKI指哈佛的那一台。布鲁克斯最终完成的博士论文题目为“自动数据处理系统的分析设计”(“TheAnalytic Designof Automatic Data Processing System”)。从博士论文开始,布鲁克斯的一生就与计算机结下了不解之缘。

      在哈佛取得博士学位以后,布鲁克斯进入IBM公司设立在纽约波凯普茜的实验室当工程师。这个实验室从50年代到80年代一直是IBM开发计算机的中心。布鲁克斯在这里参加了Harvest和Stretch计算机的开发,任体系结构设计师。这两个型号的计算机都引入了一些新技术,在50年代后期至60年代初期有很大影响,尤其是Stretch计算机,首创先行控制方式,最多可重叠执行6条连续的指令,后来被发展成流水线方式,因而被认为是世界上第一台流水线计算机。布鲁克斯在其中的创造性贡献是解决了程序中断系统的设计,在数据格式中出现不均匀的字符分布时如何设计其二进制代码等问题,并从而在1957年取得了他的第一个美国专利“程序中断系统”(Program Interrupt System,专利号3048332,与D.W.Sweenly共有),发表了他最初的两篇学术论文。

      1959年,布鲁克斯曾被调至IBM在约克郡高地的研究中心工作,但第二年又重新被调回波凯普茜的实验室,因为当时IBM内部在计算机的研发方向上产生了重大的分歧。1960年时,IBM的计算机生产线上的产品是8000系列,但遭到一些人的反对,其领头人是伊万斯。伊万斯虽然只是衣阿华州立大学电气工程系的一个本科毕业生,但1951年就加盟IBM,曾参与或主持过IBM701、7070、1410、7070等多种型号计算机的开发,已经积累相当丰富的知识和经验。他经过认真分析,认为主要继承IBM原有技术的8000计算机,即使研制成功并上市,过不了几年,即到1964年就会丧失生命力,缺乏市场竞争能力。因此他主张8000机下马,采用新的技术开发新的计算机,尤其是要开发新的操作系统。伊万斯的意见使IBM分裂成为两派,一派支持,一派反对,而反对派的领头人正是布鲁克斯!两派的争论和对立非常尖锐,又势均力敌,因为伊万斯的学历没有布鲁克斯高,但资历却比他老,双方的支持者人数也差不多。以小沃森(Thomas John Watson, Jr.)为首的IBM决策层于1961年5月担着极大的危险最后采纳了伊万斯的意见,是年秋宣布成立一个名为SPREAD(系统程序设计、研究、工程和开发,Systems Programming, Research, Engineeringand Development)的委员会作为“taskforce”(类似于我国过去经常采用的所谓“攻关领导小组”),由13人组成,主席为汉斯特拉(John w. haanstra),副主席为伊万斯,布鲁克斯是成员之一。作为争论中胜方的伊万斯冷静地分析了形势以后,做出了一个令人大感意外的决定,他亲自找到布鲁克斯,请布鲁克斯主持日后被称为IBM/360的这个新项目。伊万斯这一举动主要基于以下两点考虑,一是如果由他自己来主持360,那么原来反对他意见的另一派人很难团结在他的周围;二是涉及这样重大改革与创新的项目,应该让年轻人来挑头。他自己虽然当时也只有34岁,但布鲁克斯比他小5岁,更加年轻。难能可贵的是,布鲁克斯作为争论的负方,慨然接受了伊万斯的邀请,同意负责这个他曾经反对过的项目!这个故事很像我国京剧舞台上的“将相和”(虽然伊万斯并未“负荆请罪”)。伊万斯和布鲁克斯双方在这件事上所表现出来的明智、大度和勇气都十分令人钦佩和赞叹。其结果和效果就是整个IBM公司的职工果然团结起来,实现了痛苦而艰难,然而却是历史性的转变和飞跃。IBM/360的开发总投资5亿美元,达到美国研究原子弹的曼哈顿计划投资20亿美元的1/4。在研制期间,布鲁克斯率领着2000名程序员夜以继日地工作,单单360操作系统的开发就用了5000个人年。因此,当1964年4月7日,在IBM公司纪念其成立50周年的庆祝大会上宣布360系列计算机的时候,小沃森完全有理由声称“这是公司历史上宣布的最重要的产品”。确实,IBM/360以其通用化、系列化和标准化的特点,对全世界计算机产业的发展产生了如此深远的影响,以致被认为是划时代的杰作。而360的推出,也使IBM在短短两年时间内,即到1966年,其资本就增加到45亿美元,职工总数净增6万,达到19万,成为名副其实的“蓝色巨人”。到60年代末,360系列机的市场占有率达到15%,到70年代中期,超过了50%。各计算机生产厂商纷纷以360为榜样,推出各自的系列机,有的则直接采用360的操作系统,比如著名的Amdahl公司的所谓“插接兼容式”计算机(Plug Compatible Computer)就是这样。为此,伊万斯和布鲁克斯两人常常被并称为“IBM/360之父”。

      当然,IBM/360到今天早已是“昨日黄花”了。IBM公司在70年代就推出了370系列替代360,以继续保持其技术上的优势。我们之所以用了一定篇幅介绍360的故事,是因为其中不乏让我们的企业家、科学家和工程技术人员深思的一些问题。IBM/360的特点我们只简要介绍如下:它是集成电路的计算机,体系结构既适于事务处理,又便于科学计算;系列中各机型(规模由小到大,功能从弱到强,包括20、30、40、50、65、75等6个型号,后来扩充了25、85、91、195等型号)具有兼容性;有标准的输入输出接口和通用的输入输出设备,它们与中央处理器相对独立;软件既有兼容性又有可扩充性,从而可最大限度地保护用户的软件投资。这些特征大多都成为以后计算机设计与开发所遵循的基本原则。

      360成功以后,布鲁克斯离开IBM回到其故乡,为北卡大学(UNC)创建了计算机科学系,担任该系系主任长达20年(1964~1984年)。卸任以后仍在该系任教至今,因此他培养的学生很多,可谓“桃李满天下”。除了教学以外,他还致力于发展美国的计算机技术和计算机在国防等方面的应用,有许多社会兼职。1966~1970年,他是ACM全国委员会的委员;1973~1975年出任ACM体系结构委员会(所谓SIGCA)的主席;1977~1980年布鲁克斯在美国国家研究院计算机科学技术部任职;1983~1984年他是美国国防科学委员会人工智能攻关领导小组的成员,1986~1987年是上述委员会另一个攻关领导小组“计算机模拟和训练”的成员;1985~1987年他担任军用软件攻关小组组长。他的研究领域除了计算机体系结构、机器语言设计、软件工程、大型项目管理以外,还包括动态体系结构的可视化(如“走查”Walkthrough)、人机接口、交互计算机图形学等等,十分广泛。例如关于虚拟现实,涉及布鲁克斯曾参与领导攻关的计算机模拟和训练,他十分重视,1992年3月由美国国家自然科学基金会NSF主持的虚拟现实研讨会,就是由布鲁克斯等人倡议并在北卡大学召开的,这次会议对VR进行了定义并就其研究方向提出了详细建议,奠定了VR作为独立研究方向的地位。布鲁克斯在筹备及组织此次会议上做出了重要贡献。1987年布鲁克斯当选为美国工程院院士,他同时也是英国皇家学会和荷兰皇家科学与艺术院的外籍院士。

      布鲁克斯的著作不多,但影响都很大。1963年他和依费逊(Kenneth Iverson, APL发明人,1979年图灵奖获得者)合著了《自动数据处理》(Automatic Data Processing,Wiley)一书,这是该领域中最早的专著之一。1969年此书再版时有2个版本,其中一个是专门论述在IBM/360上的数据处理(书名为Automatic Data Processing,System/360Edition)。1975年,他把他历年来所写的有关软件工程和项目管理方面的文章汇集成书,书名为《人月神话》(The Mythical Man-Month: Essay on Software Engineering,Addison Wesley)。由于本书是他领导IBM/360软件开发经验的结晶,内容丰富而生动,成为软件工程方面的经典之作,出版20年之后,1995年又再版了一次。最近的一本专著是他与荷兰特文德理工大学(Twente Technical University,位于荷兰与德国接壤处的恩斯赫法)的勃芬夫教授(G. A. Blaauw)合著的《计算机体系结构:概念与发展》(Computer Architecture: Concept and Evolution,Addison Wesley, 1997)。勃芬夫是布鲁克斯在哈佛时的同学,后来又在IBM共事多年,曾一起开发过3个型号的计算机,这本书实际上是对计算机体系结构半个多世纪来发展变化的一个全面的回顾和总结。作者在书中风趣地把整个计算机家族叫做“计算机动物园”(Computer Zoo),对其中的主要成员逐一作了剖析。除了上述学术性著作外,1995年,他与苏泽兰特(I.E. Sutherland,“计算机图形学之父”,1988年图灵奖获得者)等还合编了一本书,书名是《Evolving the High Performance Computing and Communications Initiative to Support the National Information Infrastructure》,由National Academy Pr.出版,论述了有关高性能计算机计划及信息基础设施(也就是所谓“信息高速公路”)建设的一系列问题。

      在授予图灵奖之前,ACM在1987年曾授予布鲁克斯“杰出服务奖”(Distinguished Service Award),1995年曾授予他以纽维尔(A. Newell, 1975年图灵奖获得者,1992年去世)命名的Newell奖。加上这次的图灵奖,布鲁克斯成为继克努特(D.E. Knuth, 1974年图灵奖获得者)之后的第二位同时拥有ACM三个奖项的计算机科学家。IEEE也先后向布鲁克斯颁发三个奖项,即McDowell奖(1970年),计算机先驱奖(1982年)、冯·诺伊曼奖(1993年)。AFIPS在1989年授予布鲁克斯Harry Goode奖。数据处理管理协会DPMA1970年授予他“计算机科学”奖,并命名他为该年度的风云人物。1985年布鲁克斯因在开发IBM/360上的杰出贡献而荣获全国技术奖章(National Medal of Technology),同时获此殊荣的还有伊万斯和IBM的另一位功臣布洛克(Erich Bloch)。物理学界的富兰克林学会(Franklin Institute)也曾授予布鲁克斯Bower奖。更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 2004 Vinton G. Cerf (ZT)用TCP/IP吧?
      本文发表在 rolia.net 枫下论坛Citation
      For pioneering work on internetworking, including the design and implementation of the Internet's basic communications protocols, TCP/IP, and for inspired leadership in networking.

      -------------------------------------------------------------------------
      TCP/IP协议发明人G-Cerf:我为何放弃专利

        如果你是一个IT人,你可以不知道Vinton G. Cerf博士,但你不可能不知道TCP/IP,如果你不是一个IT人,你可以不知道TCP/IP,但你不可能不知道互联网,如果从1973年起,Vinton G. Cerf和他的伙伴开始将TCP/IP申请为专利的话,这个世界上的首富还会是比尔.盖茨吗?"全世界已经有超过10亿人在使用互联网." Vinton G. Cerf说,"坦率说,三十多年前研究TCP/IP的时候,我们没有想到这项技术会得到如此广泛的运用."

        Vinton G. Cerf就坐在眼前。

        这位被称为“互联网之父”的62岁的美国人,满头白发也掩盖不了他的活力与英俊。在谈话时,喜欢眯着浅灰色的眼睛看着你,显得非常专注;他喜爱做手势,语速快而具有感染力.“申请专利从实际的角度是行不通的,如果新技术不是无偿和免费的话,人们就会远离我们而去。” Vinton G. Cerf坚持将今天互联网成功的原因之一归结于他和Robert E. Kahn没有申请专利,把TCP/IP视为私有财产。

        1973年,Vinton G. Cerf和Robert E. Kahn在设计互联网的时候,做出一项重要决定,一定要让电脑和电脑之间的沟通敞开和透明;1975年,开始布设互联网的时候,两人一致决定要把这个礼物贡献给人们,让大家自由的分享。

        尽管当时世界上正处在冷战的高峰期,但值得庆幸的是,与Vinton G. Cerf和Robert E. Kahn合作的美国国防部并没有限制他们和其他地区分享技术。而他们也花了整整十年的时间推广这项新技术,用各种方式说服人们去尝试使用它.“互联网从诞生到现在已经35年了,巨大的变化在于,我们将几十年前的想法在不断的加以扩大,并广泛地去应用它。” Vinton G. Cerf说.作为美国MCI公司(世界上最早推动互联网商用的美国通讯公司,98年购买世通公司)主管技术战略的副总裁,Vinton G. Cerf说他更看重自己的科学研究工作。

        他说:“首先,我是一个科学家。” Vinton G. Cerf极度珍惜这个称号。当记者提到他所获得的科学界的一些荣誉时,Vinton G. Cerf甚至兴奋地展示他别在胸前的那枚红色的小勋章。那是1997年12月,克林顿总统为表彰Vinton G. Cerf和Robert E. Kahn为互联网的建立和发展所做的贡献而给他俩都颁发的美国国家技术勋章。在各种重要场合,他都会佩带它。

        “互联网一直面临斗争和挑战”

        Vinton G. Cerf说:“互联网一直面临斗争和挑战。”但他坚信,任何斗争和挑战都是能量累积和释放的一个过程。
        他说:“我们一直在克服这样或那样的障碍,好象在翻山越岭一样,爬到顶,然后落下来,再释放能量。”

        1968年,已经出现了一排人共享一台计算机。

        发展到1973年,美国计算机互相联系的网络有三个,第一个是美国研究用的网络,就是美国国防部用以联系美国有关研究机构的网络。第二个是增阻无线电实施移动通讯功能的网络。第三个是大西洋网络,用以美国和大西洋的联系。而Vinton G. Cerf和Robert E. Kahn从事互联网研究的初衷是将三个网合并。从73年到83年整整十年间,互联网并未得到大规模的使用;83年到93年是网络大爆炸过程,十年间用户翻了一倍。Vinton G. Cerf认为,一方面是,MCI公司开始起了推动作用,86年开始推出了光纤网络通讯;更重要的一方面是,从89年开始,美国允许用于高端研究的技术应用于商业用途。

        但是,“推广中各种斗争一直不断。” Vinton G. Cerf说。首先,在TCP/IP技术之前,人们已经有了互联技术(ARPA),尽管它不足以支持10万台计算机的互联,但使用老的ARPA技术的人必然会抵抗TCP/IP技术。Vinton G. Cerf和他的伙伴们用尽各种方法说服使用老技术的人们来尝试接受新技术。其次,和标准化组织ISO进行了长期的斗争与交涉。一开始标准化组织并没有接受TCP/IP技术,直到78年,才得到了标准化认可,其实,当时标准化组织也推出了一套开放式互联的架构。从83年到93年,Vinton G. Cerf和他的伙伴们,都在跟想使用标准化组织推出的互联架构的人做斗争。

        “在我们看来,这套开放式互联架构只是一大堆文件。” Vinton G. Cerf说,“在使用的过程中,是不可行的。没有实际的应用,市场也并未形成。”再者,层出不穷的新技术号称要取代TCP/IP,也不断有新的传输技术声称要取代互联网络传输技术。“但最终并没有实现。” Vinton G. Cerf说,“我们在发明和设计TCP/IP时,做得非常仔细。它可以架构在一些新技术上,例如ATM、异步传输之上,这样既可保住我们的体系,又可以从新技术当中吸取新优势,使得整个体系不断地完善。”那么,怎样才能使得这些新技术实现可持续性发展呢?Vinton G. Cerf认为,关键是要建立一种学术界、应用界、政府彼此合作的一种模式,互相支持。只有借助三者的帮助,才能使得新技术在发展的过程中不断地更新。事实上,目前对互联网功能关注热点是承载语音通讯,但在互联网上进行语音传输服务面临两大新问题:一是政府监管层面的挑战,二是经济利益层面的挑战。“只有克服这些新挑战后,才能通过互联网提供各种形式的通信服务,把互联网带入下一个新阶段。” Vinton G. Cerf说。而随着互联网的应用越来越广泛与普及,人们对其的依赖程度也越来越大。“这意味着我们应该在两个方面做得更好,一个是网络的安全,再一个是网络的可靠性。” Vinton G. Cerf说,“安全性与可靠性是迈向未来互联网最基本的两个门槛,否则这个架构将无法存活。”

        Vinton G. Cerf认为,互联网的能否进一步广泛运营,也取决于政府的策略与政策是否逐步细致与完善。比如说如果网上有批判的话,该由什么机构解决;在商业交易方面,如果双方产生了意见上纠纷的话,究竟谁来解决;还有比如说网上如果有金融方面交易的话,是不是应该收税,税应该付给谁。

        “我看好IPv6在中国的发展”

        “中国美丽神秘,令人感觉心旷神怡。” Vinton G. Cerf说,从1997年起,他五次来到中国,七年中,他亲身感受到了IT业应用在中国的迅猛发展 。“中国已经成为世界互联网领域中一个非常重要的角色。”在北京和上海的饭店中,Vinton G. Cerf随时可以享受到宽带上网所带来的便捷;而上海的摩天大楼和摩肩接踵的行人,更让Vinton G. Cerf感受到整个商业环境的蓬勃生机。

        “我认为中国应该尝试使用IPv6。” Vinton G. Cerf说。“而且,我看好IPv6在中国的发展。”一方面,中国是世界上使用互联网人数最多的国家之一,而潜在使用网络的人数将会更多。“中国的人口如此众多,如果每个中国人都给自己申请一个域名,三分之二的域名将被中国人占掉。” Vinton G. Cerf说。另一方面,中国比世界上任何国家和地区对于新技术、新想法的开创和使用有着更加浓厚的兴趣,而中国现在已经成为了世界上最主要的互联网制造基地。“例如我任董事的一家互联网公司就把所有的制造业务都交给了中国,在中国生产用于光纤网络发展的产品。” 更重要的是,2004年中国政府启动了下一代网络示范工程,将迅速推进下一代互联网的进程。而无论NGN,还是NGI都是基于IP。因此9月3日中国CNGI正式进入到了实施阶段,标志着大规模地促进IPv6进行应用,使IPv6商用具体化将成为可能。

        Vinton G. Cerf认为,IPv6使得我们在互联网上加载大量的东西,开拓更多的应用机会。机会一方面存在于小的电子设备上,另一方面是通过互联网管理和控制这种设备。“在未来,语音和视频传输将成为一种非常普通的功能组成部分,影响到绝大多数电信公司的运营模式。” vinton G. Cerf说,“但不普通的是它的传输工具,它使人们彼此互联。” “中国绝对有机会成为领先者,领跑者。” Vinton G. Cerf说。他认为,开新路是对IPv6应用的最好描述,比如小的设备,手机、PDA等。在这一点上,中国、日本、美国是站在同一起跑线上,而且中国的新用户非常多,规模化不会成为问题。另外,除了新的尝试,IPv6还可以在旧的应用模式上持续。比如e-mail,可以继续应用IPv6。

        不过,Vinton G. Cerf提醒中国,在真正进行市场推广过程中,IPv6也会遇到好多的问题,各个运营商之间的路由器是不同的,便会存在的对于路由器的标准化测试问题。“比如说华为,它能否和思科之间实现互通?” Vinton G. Cerf若有所思地望着记者。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • Vinton G. Cerf 简介(ZT)
        本文发表在 rolia.net 枫下论坛Vinton G. Cerf (温顿 &#8226;瑟夫) 简介
          Vinton G. Cerf博士是互联网基础协议——TCP/IP协议和互联网架构的联合设计者之一,是当今互联网的先驱,被誉为互联网之父。

          Cerf博士现任互联网名字和号码分配机构(ICANN)主席。ICANN成立于1998年10月,是一个集合了全球网络界商业、技术及学术各领域专家的非营利机构,是国际互联网域名和地址管理的权威机构。ICANN目前负责全球许多重要的互联网网络的基础工作,如互联网地址空间的分配、互联网协议参数的配置、域名系统与域名根服务器系统的管理等。他同时还兼任美国MCI公司技术战略高级副总裁。

          Cerf博士出生于1943年,童年时期就酷爱算术和科学,并于1965年在斯坦福大学获得了数学学士学位。在毕业后的两年间,他曾就职于IBM公司,并随后考取了美国加州大学洛杉矶分校的研究生院。求学期间,他潜心研究ARPANET协议,并取得计算机科学博士学位。

          1972,Cerf博士作为助理教授回到斯坦福大学,并任教至1976年。其间他与Robert Kahn一道领导TCP/IP协议的研发小组,为 ARPANET 成功开发了主机协议, 使ARPANET成为第一个大规模的数据包网络。Cerf博士与研发小组的成员因此也被誉为“互联网之父”。

          1997年12月,克林顿总统向Vinton G Cerf和他的合作者Robert E. Kahn授予了美国国家技术勋章,以表彰其为互联网的建立和发展所做的贡献。Cerf博士现正率领其团队的架构师和工程师从事先进的网络架构,包括基于互联网的多种解决方案的设计,为企业和消费者提供包括数据、语音和视频的综合服务。

          作为互联网的先驱,Vinton G. Cerf对互联网的发展有着深刻的认识。“随着互联网的日益普及,互联网已经渗透到人们生活的各个方面。今天,互联网网络规模正不断膨胀,人们对互联网应用的需求剧增。目前,互联网正面临越来越多的挑战,例如IP地址日益缺乏、网络安全问题突出、对移动的支持有限等。如何解决这些问题成为我们必须重视的课题。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 电脑间的谈判(ZT)
        本文发表在 rolia.net 枫下论坛人类的不同集团为了自身的利益要进行各种谈判。谈判之前,唇枪舌剑;

          谈判之中,剑拔弩张;谈判之后,握手言和。因为大家总要共同生存下去,所以最终的结果往往是各退一步,然后达成“协议”。

          电脑之间也要谈判。比如,美国陆军要实现电脑化管理,进行了招标,结果DEC公司中了标,陆军就买了大量DEC生产的电脑;随后,空军招标,结果IBM公司中标,空军使用的就是IBM电脑;海军当然也要招标,这次是Honewell中了标,海军就得用Honewell电脑。在60-70年代,还没有我们现在的PC(个人电脑)概念,大家用的都是大型机、中型机或者小型机等等。谁也不能说这些电脑有问题,他们在各自的系统里都运行得很好。可是有一天,国防部要想查看他们的系统,这才发现几个军种的电脑之间却不能很好地连接起来。

          尽管“所有电脑生来都是平等的”,但是这些电脑却不是生来就能相连的。

          究其原因,如果不是最初的设计者疏忽的话,更可能的还是生产者被各自狭隘的商业利益给束缚住了。

          在ARPANET产生之初,大部分电脑互相之间是不兼容的。在一台电脑上完成的工作,别想拿到另一台电脑上去用。要是想让硬件和软件都不一样的电脑联网,就更不可能。

          为了让这些“生来平等”的电脑之间能够分享成果,分享资源,就得在这些系统的标准之上,建立一种共同的大家都必须遵守的标准。这样才能让不同的电脑按照一定的规则进行谈判,并且在谈判之后能够“握手”言和。

          在确定今天互联网各个电脑之间的“谈判规则”的人当中,最重要的就是瑟夫。正是因为他的努力,才使我们今天各种不同的电脑之间能够互联。瑟夫本人也因此获得了“互联网之父”的称号。

          文滕·瑟夫和鲍伯·卡恩

          文滕·瑟夫(Vinton G.Cerf)小时候是个坚强而热情的孩子,高中加入了后备军官训练队。和许许多多爱出风头的小孩一样,瑟夫从小就喜欢标新立异,引起别人注意。在学校的时候,作为后备军官训练队的队员,他却经常不穿制服,而是穿着夹克,系一条领带,还提着一个不小的手提箱。这种装束虽然有时会受到某些人的白眼,但只要能换来女孩子们注意还是值得的。

          同时,瑟夫也是个极爱读书的人。在化学课上,他尽显自己的才华。然而对他来说,真正情有独衷的还是数学。

          那时,瑟夫的同学和朋友中有一个叫Steve Crocker的。当瑟夫还是中学生的时候,就被允许使用加州大学洛山矶分校的电脑。他和Steve经常在周末到那里去玩电脑。有一个星期天,他们照例来到电脑室,却发现门被上了锁。正当Steve打算回家的时候,瑟夫却让他蹲下,踩着他的肩膀从窗子爬了进去。从此,他们就再也不愁电脑室的门被锁上的问题了。

          瑟夫有一个好父亲。高中毕业后,父亲的公司给了他4年的奖学金到斯坦福大学去读书。既然最喜欢数学,他就选择了数学作为自己的专业。

          然而没过多久他就发现,最有魅力的还是电脑。

          “为电脑编程序是个非常激动人心的事。你建立一个自己的宇宙,而这个宇宙是由你来管理的。只要把程序编好,就可以让电脑做任何事情。这简直就象小孩堆沙子玩的沙箱,里面的每一粒沙子都在你的控制之下。”(《留住魔迹的地方》第139页)

          想当领袖的欲望可以在编写程序的过程中虚拟地实现,这绝对不止是瑟夫一个人爱上电脑的原因。

          1965年,瑟夫从斯坦福大学毕业,到洛山矶的一家IBM公司做系统工程师。而他的那位朋友Steve正在加州大学洛山矶分校读电脑专业的博士学位。当时,全美国没有几所大学有电脑方面的博士课程,最早提出“包交换”理论的Paul Baran就曾经在这里和Steve的论文导师Jerry Estrin一起工作过。

          由于天生听力不佳,瑟夫对人们通过听觉进行的交流有着独到的见解。他1966年结婚,而新娘的听力问题竟然比他更严重。据新娘介绍,在他们第一次午餐的时候,瑟夫谈起电脑就手舞足蹈,这种兴奋与后来一起看画展时找不到感觉恰好形成鲜明的对比。

          在洛山矶工作没多久,瑟夫就觉得自己的知识不够用,于是也到加州大学洛山矶分校攻读博士。当时,Estrin有一个DARPA的电脑研究课题,而这个课题同时也就成了瑟夫博士论文的题目。

          1968年秋天,DARPA在洛山矶分校成立了网络评测中心,原来Estrin的课题被转到了由Kleinrock领导的评测中心。这个中心每年的经费达20万美元,有40多个学生为中心工作。在这些学生中,理所当然地就有瑟夫。

          那时候,洛山矶分校的电脑系有一台Sigma 7电脑。尽管学校还有另外3台IBM 7094大型机,这些大型机比Sigma 7的功能强得多,但是指定研究生们用的就是Sigma 7。也许正因为此,有人把这台Sigma 7称作“小狗”。然而,这个速度慢,性能不那么可靠的“小狗”毕竟是给学生用的。正如后来瑟夫所说的那样,“无论如何,这是我们的小狗。”

          的确,后来(1969年秋),ARPANET的第一台电脑就是这条“小狗”。而大家的工作,就是在这台“小狗”和BBN公司提供的“接口信号处理机”之间,建立一种联系。

          瑟夫曾写过一篇著名的文章:“互联网是如何形成的”(http://www.u-aizu.ac.jp/~s102106/history/node2.html),对当时的情况作了非常生动的描写。

          在当时,学校里有一批年轻人对“网络评测计划感兴趣。除了瑟夫之外,还有两位年轻人也非常出色。一位是Michael Wingfield,是他在Sigma 7电脑上建立了第一个与IMP的接口。而David Crocker则是最早为ARPANET和互联网建立电子邮件标准的人。当然,也少不了在学校电脑中心工作的人参加,他的名字是:Robert Braden。

          此后不久,BBN公司的Bob Kahn(见右图)也来到加州大学洛杉机分校。是Kahn主持了后来对ARPANET的总体结构设计,为ARPANET的建成做出了巨大贡献。在那段难忘的时间里,通常是Kahn提出需要什么样的软件,而Vinton Cerf则通宵达旦地把那个软件给编出来。然后,他们又在一起测试这些软件,直到能够正常运行。

          这个Bob Kahn绝对是天才。他认准的事几乎没有不灵验的。比如,有的时候,大家认为某一种情况绝对不可能发生,而Bob Kahn偏认为一定会发生。结果还就是按Bob Kahn所说的那样发生了。时间一长,大家也就都信他的了。

          而Roberts则和Howard Frank一起在网络分析公司(Network AnalysisCorporation)设计和调试网络的拓扑结构和效率。

          就这样,由Kahn设计ARPANET的总体结构,由Roberts设计网络布局,由Kleinrock准备网络评测系统,ARPANET可以说是“万事具备,只欠东风”了。

          RFC:“征求意见稿”

          然而,事实上,开始的时候ARPANET的计划并不是一帆风顺的。有许多部门(比如AT&T)就认为这事根本就行不通。在搞电脑的这圈人中,也并不都接受这种计划。即使是提供资金的国防部高级研究计划处对此也没有成算。因此,他们一方面让实验公开进行而不予保密,另一方面还请了一批和这个计划没有任何功利关系的电脑方面权威来评估研究工作的进展。

          的确,参加研究的大多数都是一些还在读书的研究生,也许他们做梦也没有想到,正是他们的兴趣和爱好使他们加入了创造历史的行列。同时,由于他们都年轻,没有经验,也没有地位。因此,需要把自己的工作告诉别人,也需要听取别人的意见和建议。于是,他们发明了一种方式,把自己的想法和遇到的问题公开发表出来,引起大家讨论。1969年4月,当时还是研究生的Steve Crocker刊印出第一份著名的“征求意见稿”(RFC:Request ForComments),题目是“主机软件”。

          这份“征求意见稿”的意义极为重大,开了“互联网式的讨论”的先河。本来,互联网(尤其是开始的ARPANET)是军队的资金和学校的智慧相结合的产物。

          可是这种讨论既不是军队式的,也不是学院式的。美国大学的学术传统比较开放,通过刊印“征求意见稿”的方式把这种开放的传统带到了比较封闭的军队中来。

          所有人都可以看到“征求意见稿”,也都可以参加到讨论中去。而另一方面,美国大学的研究比较正统。有一套清规戒律。可是,由于这种刊印的方式不那么正式,内容也不那么正规,只是在“征求”,因此,也不完全象是学院式的讨论。

          而这种不那么正规的讨论也更加增添了开放的色彩。

          并且,这种方式还非常适合对问题的深入研究。每一份“征求意见稿”都会收到一些反馈回来的信息,如果反馈的意见足够多的话,又有可能产生新的“征求意见稿”。后来的许多与互联网有关的工作都继承了这样的方式。虽然第一份“征求意见稿”是印刷出来发给大家的,但是当ARPANET真正投入运行,人们可以方便地从网络上传输文件以后,这种方式更加受到大家的欢迎,也流传得更加广泛了。通过网络来传输“征求意见稿”,使得这种开放的讨论方式得到了更好的发挥。并且,由于这种开放性,也使互联网的影响更加扩大。

          这个刊印“征求意见稿”的传统一直坚持到现在,至今已发表了数千篇。几乎讨论过互联网中的所有问题和解决方案。我们通过这些文章就可以了解互联网技术的整个发展进程。而这些文章都可以从互联网上找到。我们甚至不必从互联网上把所有这些文章都取回来研究,哪怕是取回这些文章的目录,对方的服务器都会提出警告:取这个目录要花很长的时间,因为即使是目录也太长了!或许,我们不必做其它的研究,只要真正坐下来,好好读一读这些“征求意见稿”,就可以了解到美国人几十年来对互联网投入了多大的精力,做了多少工作。而且,要知道,其中的绝大多数文章都是在不计功利、不计报酬的情况下完成的。

          NCP:网络传输协议

          早在1965年,Larry Roberts和Thomas Merrill第一次将两种不同的电脑连接在一起之后,Merrill就把这时传送文件的方式称作“协议”(Protocol)。一个同事问他,为什么用“协议”这个词。他说,“我觉得这象是在搞外交。”

          正是在ARPANET的试运行过程中,才发现各个IMP连接的时候,需要考虑用各种电脑都认可的信号来打开通信管道,数据通过后还要关闭通道。否则这些IMP不会知道什么时候应该接收信号,什么时候结束。这也就是我们现在说的通信“协议”的概念。1970年12月,针对这一问题,由S.Crocker领导的网络工作小组(NWG)着手制定最初的主机对主机的通信协议。

          这个协议被称作“网络控制协议(NCP)。

          由于有了网络控制协议,ARPANET的运行就有了标准,网络的用户也就可以根据各自的需要,开发自己的应用软件了。

          从那时起,对互联网的研究一直遵循着理论与实践相结合的方式。既研究网络的基础原理,同时也开发对网络的应用。这个至关重要的传统一直保持到现在。

          也正因为这两方面的互相促进,使互联网既没有仅仅成为科学家实验室中的理论模型而不得推广,同时又使互联网的应用始终能够得到正确的理论指导。

          既然ARPANET工作良好,联入ARPANET的电脑也就日益多起来。也就是在这个时候,怎样让不同类型的电脑联结起来的问题就显得突出起来。换句话说,如何让这几十台结构不同的电脑按照共同的方式、共同的标准来联接,成了ARPANET的关键问题。实际上,这也是后来的互联网的关键问题。没有一个共同的标准,怎样才能“互联”?如果不能互联,哪来的互联网?

          可是,要建立这样一种共同的标准有多么不容易!要知道,这些电脑本来就被设计成不一样。我们甚至不必去理解各种大型机、小型机的运算原理,也不必去理解一个大型的网络是如何连接,只要看一看今天苹果电脑和IBM电脑之间的不兼容,看看不同软件之间的不兼容,看看甚至微软公司自己生产的同一种软件的各个版本之间的不兼容,就可以想象要把各种不同类型、不同型号的电脑和网络连在一起有多么困难。

          自从1972年10月份的国际电脑通信大会结束后,大家都在为如何设立这个“共同的标准”而开动脑筋。“信包交换”的理论为网络之间的联结方式提供了理论的基础,可是怎样让那些不同型号、甚至不同操作系统的电脑和网络按照同一个标准、同一种方式联结起来,让每一个电脑用户可以与网络上的任何电脑通信,并且还不必知道对方的电脑和操作系统是什么,更不用知道背后的技术原理,就不是一件容易的事。

          如前所述,1970年12月,S.Crocker在加州大学洛杉机分校领导的网络工作小组(NWG)曾经制定出“网络控制协议”(NCP)。他也正是一年多前写出第一个具有历史意义的“征求意见与建议(RFC)的人。开始,这个协议还是作为信包交换程序的一部分来设计的,可是他们很快就意识到关系重大,不如把这个协议独立出来为好。还给起了一个名字,叫做“网络之间”(Internetting)的程序。

          那个时候,天才的Kahn也为临时需要而开发过局部使用的“网络控制协议”。

          既然是局部使用,就不必考虑不同电脑、不同操作系统之间的兼容问题,因此也就简单的多。

          无论如何,“网络控制协议”不过是一台主机直接对另一台主机的通信协议,实质上是一个设备驱动程序。要想真正做到将许多不同的电脑、不同的操作系统连接起来,还有许多事情要做。首先得给每一台电脑分配一个唯一的名字,这样别的电脑才能把这台电脑给“认”出来。用专业一点的话说,就是要给网络上的每一台电脑定义一个“地址”。

          而且,Crocker和Kahn搞出来的“网络控制协议”也都没有纠错功能。要是在传输中出现了错误,他们的协议就规定网络停止传输数据。这次传输也就失败了。

          一开始的时候,那些“接口信号处理机”被用在同样的网络条件下,相互之间的连接也就相对稳定,因此没有必要涉及控制传输错误的问题,也很难想到这个问题。

          可是,随着联入ARPANET的电脑数量的增加,就需要有一种新的协议来管理网络之间的连接。“网络控制协议”(NCP)作为一个设备驱动程序来驱动“接口信件处理器”还可以;可是要想真正能够管理网络通信,还需要更加完善的协议。

          Kahn首先为设计这种新的网络通信协议,确定了四项基本原则(http://www.isoc.org/internet-history/):

          *“每一个独立的网络必须按自己的标准建立起来,当这个网络和互联网连接的时候,不需要在其内部做任何改动。

          *应该在最佳的状态下完成通信。如果一个信包没有到达目的地,最初发出信包的节点将很快再次发出该信包。

          *在网络之间进行互相连接的时候,将使用“黑匣子”。这里所谓的“黑匣子”后来被称为“网关”和“路由器”。将不保留通过网关的每一个信包的任何信息。

          由此,使网关变得简单,即使出现各种失误也避免在网关进行复杂的改编和恢复工作。

          *整个互联网不需要在操作的层面上有任何总体控制。”

          Kahn以前在BBN公司工作的时候就一直研究具有通信功能的操作系统原理,现在,这些研究正好用得上。BBN公司在1972年就把他的这些想法刊登在BBN公司的内部读物上,题目是:“操作系统的通信原理”(R.Kahn“Communications Principles for OperatingSystems”.InternalBBN memorandum,Jan.1972)。这些思想显然对最初互联网的总体设计和建设起了决定性的作用。

          但是,理论上认识到建立一种共同的协议的重要性是一回事,要真正建立具体的这样一个协议又是另一回事。首先,Kahn在自己研究的基础上,认识到只有深入理解各种操作系统的细节,才可能将建立起一个对各种操作系统普遍适用协议。这已经不是他一个人所能完成的了。从1973年的春天开始,Kahn请Vinton Cerf和他一起考虑这个协议的各个细节。

          TCP/IP:传输控制协议和互联网协议

          Vinton Cerf不仅参与过“网络通信协议”(NCP)的设计,而且对现有的各种操作系统的接口也非常了解。所以,Kahn把自己关于建立开放性网络的指导思想和Vint Cerf在NCP方面的经验结合起来,一起为ARPANET开发新的协议。

          而他们这次合作的结果,就是我们现在还一直在使用的“传输控制协议”(TCP)和“互联网协议”(IP)。

          从1972年11月开始,Vinton Cerf也获得了斯坦福大学电脑科学与电子工程的助教职位。这无疑是一个很好的机会。Vinton Cerf在那里组织了一系列的专题讨论。大家通过讨论,对建立一种新协议有了更加深刻的认识。当时参加这些专题讨论的学生后来有不少都成了专家。其中,Richard Karp写出了第一份TCP原代码;Jim Mathis也研究互联网的协议,后来为苹果电脑写出了专为苹果电脑用的传输控制协议:MacTCP;Derryl Rubin后来成了微软公司的副总裁;Ron Crane当时为Vinton Cerf管理斯坦福实验室的硬件,后来也到苹果电脑公司担任了一个重要职位。

          就这样,Vinton Cerf在斯坦福大学的实验室里完成了对TCP协议的初始设计工作。

          1973年9月,Vinton Cerf以主席的身份,在Sussex大学组织召开了“国际网络工作小组”(INWG)特别会议。在这次会议上,Vinton Cerf与Kahn提交了第一份关于TCP协议的草稿。这篇草稿以论文的形式于1974年5月在电气、电子工程研究院(IEEE)刊印出来,题目是:“分组网络互联的一个协议”(V.G.Cerf and R.E.Kahn,“A protocol forpacket network interconnection”IEEE Trans.Comm.Tech.,vol.COM-22,V 5,第627-641页,1974年5月)。同年12月,Vinton Cerf和Kahn关于第一份TCP协议的详细说明作为“互联网实验报告”正式发表。

          这时,ARPANET上已经连接了40个节点(NODES),一共45个网站。两年以前的1972年,在ARPANET上每天的数据流通量大约是1百万个信包,而这时已经达到每天二百九十万个信包。并且,还有一个节点通过卫星电路从加利弗尼亚州连到了夏威夷。挪威和英国也通过低速电缆连到了ARPANET上。

          在Winton Cerf和Kahn当时提交的报告中,还没有将“传输控制协议”(TCP)

          和“互联网协议”(IP)区分开来。所以他讨论的只是一个“传输控制协议”(TCP),而不是TCP/IP协议。该协议负责在互联网上传输和转发信包。Kahn开始的时候认为可以通过“传输控制协议”直接在ARPANET上传送信包。然而,这实际上只是一个“虚拟线路”模式(virtual circuit),而不是真正的“包交换”模式。这种模式在通常的远距离联入和传输文件的时候没有什么问题,但是在后来一些特殊的实验中证明,使用这种协议有时丢失信包的情况没有得到纠正。

          因此,他们认识到,应该建立两个不同的协议。一个是“传输控制协议”(TCP),另一个则是“互联网协议”(IP)。这也就是现在通常所说的:“TCP/IP协议”。

          实际上,这两个协议的任务是不同的。

          就象电影院散场的时候拥挤,而平常的时候则人少,网络中的通信量也会时大时小。通信量过大的时候,就会造成“溢出”,信号就无法传到目的地了。因此,在数据传输的过程中需要有一种共同的标准来检测网络传输中的差错。如果发现问题,就发出信号,要求重新传输,直到所有数据能够安全传输到目的地。

          这个协议就叫“传输控制协议”(TCP)。

          同时,就象寄信要有地址,打电话要有电话号码一样,网络中的每一台电脑也必须有自己的网络地址,否则别的电脑就找不到它。虽然在互联网之前,已经有各种网络出现,我们现在各个单位的内部也有不同标准、不同方式的局域网。

          要使所有电脑都能相连,就得有建立在各种局域网的地址标准之上的各个网络之间的联络标准。这就是所谓的互联网协议(IP)。

          互联网协议的任务是给互联网中的每一台电脑规定一个地址,这样,才可能在网络的众多电脑中对“这一个”电脑定位,其它电脑才可能对它进行访问。我们通常把由互联网协议规定的网络地址称为“IP地址”。

          如果说在互联网中多少还有一点管理,多少还有一点权威的话,也许这种管理就仅仅体现在对IP地址的管理上了。电脑不能象人那样,想起什么名字就起什么名字。在社会生活中,同名同姓至多引起一些笑话。而在网络中,如果不同的两台电脑有相同的地址,就无法给他们送信了。所以总要有一个机构给网络中的电脑起名──规定一个IP地址。

          当时的ARPANET还是一个相对来说比较小的美国国内的网络。本来只要用比较小的数字就可以定义了。值得庆幸的是,定义IP地址的人不仅“胸怀美国”,而且“放眼世界”,从一开始就把IP地址设计成32位的。前8位用来定义所在的网络,后24位则用来定义该主机在当地网络中的地址。

          当时,美国国防部一共签了三个合同来完成TCP/IP协议。一个合同给了斯坦福大学由Vinton Cerf领导的小组;另一个给了BBN公司由Ray Tomlinson领导的小组;还有一个则给了加州大学洛杉机分校PeterKirstein的小组。Vinton Cerf的小组捷足先登,首先制定出了经过详细定义的TCP/IP协议。经过不到一年的时间,这三个小组都独立地完成了对各自的TCP/IP协议的设计。

          1974年5月,ARPANET由美国国防高级研究计划处转交给国防通信处(DCA:DefenceCommunication Agency),也就是现在的国防信息系统处(DISA:Defence InformationSystem Agency),正式运行起来。

          DARPA从一开始就没有把ARPANET当作是唯一的目的,实际上,ARPANET只是长期计划中的一个部分。这个计划的开始是要建立三种不同的网络:一个是ARPANET,另一个是无线电信包网(Packet Radio),还有一个则是卫星信包网(Packet Satellite)。最后的任务是将这三个网络连接起来。

          当三个网络都已经相对成熟的时候,就可以进行网络之间的互联实验了。到1977年的7月,ARPANET上已经有了111台电脑,DARPA组织了第一次三个网络之间的互联。虽然这次实验已经超出了ARPANET,但仍然是由美国国防部提供资金。信包首先通过点对点的卫星网络跨越了大西洋到达挪威,又从挪威经过陆地电缆到达伦敦;然后再通过大西洋信包卫星网络(SATNET),经过SCPC系统,分别由Etam、西弗吉尼亚、Goonhilly DownsEngland、Tanum和瑞士的地面站传送再回到美国。全部路程要经过9万4千英里,比单纯在ARPANET上的800英里要长得多。

          令人不可思议的是,经过了9万4千英里的传输,竟然没有丢失一个数据位!

          要知道,在电脑上,每一个英文字母占一个字节(byte),而每一个字节通常是由7个数据位(bit,也就是“比特”)加上一个校验位构成的。这么远的距离能够如此可靠地传输数据,由此也证明了TCP/IP协议的成功。

          从1978年到1979年,军队系统对互联网技术表现出极大的兴趣。通过无线电信包系统和卫星信包系统完成的TCP/IP协议也日趋成熟。这需要进一步加强管理。

          于是,Vinton Cerf为国防高级研究计划处组建了“互联网设置管理处”(ICCB),帮助他们规划和执行TCP/IP协议的最新进展。这个机构由麻省理工学院的David Clark担任主席,其中有许多顶尖的研究专家,为TCP/IP的发展做出了贡献。

          后来,Barry Leiner又把这个机构改为互联网活动处(IAB),这也就是现在互联网协会的互联网计划处的前身。

          那时还不象现在。开始的时候,所谓电脑都是一些巨大的功能极强的计算机器。而设计TCP/IP协议的本来目的也是为比较大型的分时系统使用的。可是,在电脑网络发生一场革命的同时,电脑本身的革命也悄悄开始了。自从乔布斯在父亲的旧车库里制作出第一台电脑个人电脑以后,人们对“电脑”的理解在不断发生变化。随着“个人电脑”概念的深入人心,各种功能的电脑走进了办公室和家庭之中。这真是“旧时王谢堂前燕,飞入寻常百姓家。”

          因此,需要设计一种更加小型的、不那么复杂的“传输控制协议”来为个人电脑服务。麻省理工学院的David Clark带领他的研究小组首先论证了建立一种相对简单的“传输控制协议”的可能性。他们先为当时的一种个人工作站设计了“传输控制协议”,随后又为IBM的个人电脑设计“传输控制协议”。“麻雀虽小,五脏俱全”。经过时间的证明,这些协议虽然简单,但仍然能够很好地工作,并且能够与其它大型的“传输控制协议”很好地配合。

          “传输控制协议”不仅可以用于大型电脑和网络系统,而且也完全适用于个人电脑。这对广大的个人电脑用户来说,无疑是一个喜讯。因为,从此以后,个人工作站、个人电脑不再受到歧视,也可以象大型电脑一样加入到互联网中。这是我们大家现在从家里就可以通过电话线联入互联网的理论基础。

          随着80年代个人电脑开始大量进入家庭,互联网的用户迅速增长起来,TCP/IP协议也开始面临一系列新的问题。一个是如何使一般用户使用互联网地址(IP)

          的问题;一个是应用软件,尤其是主机软件的问题;还有一个就是如何从开始的“网络控制协议”(NCP)转换到“传输控制协议”和“互联网协议”(TCP/IP)

          的问题。

          首先是定义地址的方式问题。正如前面谈到过的,各种电脑是通过TCP/IP协议联入互联网的。“互联网协议”的标准格式由4个部分组成,每个部分至多有3个数字。因此,每部分的总数不可能超过256个。比如,中国邮电部的CHINANET在北京拨号入网服务器的IP地址就是:202.96.0.133。这种地址分成不同的等级。

          B级地址由IP地址的前两个部分组成,规定了当前使用网络的管理机构,用B级地址一共可以定义64万个地址。而C级地址则由IP地址的后两个部分组成,是当前所使用的电脑在这个网络中的地址。其中,IP地址的第三部分规定了当前使用的网络的地址,而最后一部分则规定了当前使用的电脑的地址。

          域名当专家们津津乐道这些IP地址的时候,普通人却对此很难有什么感觉。大家记电话号码已经很不容易,要想记住许多这种数字式的IP地址几乎是不可能的事。

          即使对于专家来说,用数字来定义IP地址也不是一个应用上的好主意。

          我们日常使用的是语言,而语言是由具有含义的单字组成的。因此,除了机器能懂的数字以外,我们还需要有另一种定义地址的方式。这种方式不应该是数字式的,而应该由具有含义、容易记忆的字母组成。并且,这种字母的方式应该和数字的方式完全等值,并且可以互换。每一个数字式的IP地址都有一个相应的字母式的地址;反过来,通过一个字母式的地址也可以查到相应的数字式的IP地址。也许对与专家来说,互联网上每台电脑的名字是一串数字,但是,对于一般人来说,则应该是相对容易记忆的字符。

          我们应该感谢USC/ISI的Paul Mockapetris,是他发明了这样的一种转换系统,使我们可以在不知不觉中使用自己熟悉的语言,让电脑自己把这种语言转换成电脑能懂的数字式的IP地址。这个系统被称作是“域名系统”(DNS:Domin Name System)。

          域名系统一般也是由不同的部分组成,而且不一定只是四个部分。每部分同样由“."(读做“dot”)隔开。比如,Chinanet的域名地址就是:ns.bta.net.cn,这是和202.96.0.133完全等值的。“牛津大学中国问题研究中心”的域名地址则是:cmcs.ox.ac.uk。这个地址也可以写成:centre-mordern-chinese-studies.oxford.ac.uk。

          由此可以很容易地看出,这些字母是有含义的。最后一位通常表示这个地址所归属的国家或机构。

          表示各种机构的地址名称通常有:

          org................组织

          mil................军队

          com............商业机构

          gov............政府部门

          edu............教育部门

          表示国家或地区的地址名称就很多了,比如:

          cn.................中国

          uk.................英国

          hk.................香港

          长痛不如短痛

          正是由于TCP/IP协议的出色表现,1980年,军队决定将TCP/IP协议作为军队推荐的协议来使用。不过,“上有政策,下有对策”,有人“推荐”是一回事,用不用则是另一回事。让人们改变过去的习惯去适应一种新的技术往往是困难的,仍然有一些单位继续使用NCP协议。

          幸好,国防部的官员也懂得“长痛不如短痛”的道理,既然TCP/IP协议与NCP协议相比有着明显的优越性,就应该果断地用TCP/IP来替换NCP,拖的时间越长,问题也就越多。军队就应该有雷厉风行的作风。为此,在1982年的时候,军队终于做出决定:整个ARPANET上使用的系统都必须从网络控制协议(NCP)转换到TCP/IP协议上来。这个决定同时也是向人们表示将ARPANET的协议从NCP转换到TCP/IP的选择已经成为定局。

          即使作出了这样的决定,要让大家同时都使用TCP/IP,仍然不是一件容易的事。这需要小心、谨慎、仔细地完成转变工作。经过精心的策划,选择了双管齐下的方针。他们开了两组通道:一组通道继续使用NCP协议,另一组通道则使用TCP/IP协议。这样就有可能让ARPANET暂时关闭某一个通道而只允许使用另一个通道。既起到了警告的作用,又不至于突然强行中断而影响工作。年中的时候,ARPANET将所有NCP协议的通道关闭了一整天。使用TCP/IP协议的单位当然没有问题,而继续使用NCP的单位则遭了殃,一下子收到了大量用户埋怨的信件。

          对于那些顽固不化的机构,暂停NCP被证明是一个好方法。当年秋天,ARPANET的NCP通道又被停了两天。这样,再有顽固的人,也很难坚持下去了。谁能受得了这种用用停停的局面呢?谁知道什么时候该连续停三天了呢?那些顽固坚持NCP的人,终于让自己的习惯服从了科学的选择。

          1983年的1月1日,被称为是互联网发展过程的一个“记念日”(flag-day)。

          因为,从这一天起,ARPANET永久性地停止使用“网络控制协议”,从此以后,在互联网上的所有主机之间有着共同的协议,这些主机的连接必须遵守同样的规则,这个协议或者说规则就是TCP/IP。

          我们在前面说过,互联网的理想,就是实现对所有电脑、对所有操作系统的“开放性”,使所有电脑都可以在互联网上共享资源。而这种理想的实现,在很大程度上应该归功于TCP/IP协议。正是由于有了这两个协议,才使互联网得到了如此巨大的发展,也正是这两个协议,使互联网上的通信得到了保证。

          1997年,美国授予当时发明和定义TCP/IP协议的Vinton G.Cerf和Robert E.Kahn“国家技术金奖”(http://www.sciam.com/0697issue/0697medal.html),无疑是对互联网的发展和作为互联网基础的TCP/IP协议的最佳褒奖。

          有了可靠的通信手段,当然是为了使用。然而,出乎美国国防高级研究计划处意料之外、同样也出乎设计互联网的那些电脑专家意料之外的是:在ARPANET上使用最为普遍,也最为有效的竟然是可以给私人之间通信的“E-mail”。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • good one - where did you find this chinese article? thx!
    • 2004 Robert E. Kahn(ZT) 另一个TCP/IP 之父
      本文发表在 rolia.net 枫下论坛Robert E. Kahn



      Citation
      For pioneering work on internetworking, including the design and implementation of the Internet's basic communications protocols, TCP/IP, and for inspired leadership in networking.

      ---------------------------------------------------------------------------

      Robert E. Kahn(罗伯特&#8226;卡恩)简介
        罗伯特-卡恩,现代互联网发展史上最著名的科学家之一,TCP/IP协议合作发明者,互联网雏形Arpanet网络系统设计者,“信息高速公路”概念创立人。美国国家工程协会(National Academy of Engineering)成员,美国电气与电子工程师IEEE学会(IEEE)fellow,美国人工智能协会(American Association for Artificial Intelligence)fellow,美国计算机协会(ACM) fellow,前美国总统科技顾问。

        罗伯特-卡恩目前在美国全国研究创新联合会(CNRI Corporation for National Research Initiatives)任主席。CNRI是罗伯特.卡恩于1986年亲自领导创建的,为美国信息基础设施研究和发展提供指导和资金支持的非赢利组织,同时也执行IETF的秘书处职能。

        罗伯特-卡恩1938年出身于布鲁克林的卡恩,纽约城市大学获电机工程学士,普林斯顿大学硕士和博士,之后被麻省理工学院聘为助理教授。1969年,卡恩参加阿帕网“接口信息处理机”(IMP)项目,负责最重要的系统设计。IMP就是今天网络最关键的设备——路由器的前身。1970年,卡恩设计出第一个“网络控制协议”(NCP),即网络通讯最初的标准;80年代中期,他还参与了美国国家信息基础设施(NII)的设计,NII后来被我们称之为“信息高速公路”。

        1997年,罗伯特-卡恩由于其对互联网发展的巨大贡献,被克林顿总统授予国家最高科技奖项“美国国家技术奖”。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 该写写BILL JOY了吧?国内一般只知道富得流油的小BILL,不知道这位伯克利的骄傲,Mr. Software! 他三年前接受LINUX JOURNAL的采访时还声称一个SUMMER就可以写出LINUX的kernel...
        • 谁是历史上最伟大的程序员?可能是THOMPSON,能加入竞选名单的可能还有BILL JOY 和 Anders Hejlsberg. 大家可以谈谈后两人。他们都影响了IT INDUSTRY 20年一上。
    • “图灵”趣话(ZT)
      本文发表在 rolia.net 枫下论坛“图灵”趣话



      对于每一个行业和领域来说,几乎都存在一两项令其领域内所有人视为“终极荣誉”的大奖,例如电影业的奥斯卡奖、新闻领域的普利策奖,数学领域的沃尔夫奖和费尔兹奖等等。随着计算机通讯业的迅猛发展,“图灵”这个词频频出现在各个场合,尤其是去年比尔.盖茨携微软高层人员来华一行,期间多次提到“图灵奖”一词,而且大家对获得该奖项的人士更是恭敬有加,好奇之余,我便查阅资料,不想却发现了许多趣事,于是写来与大家分享。
        “图灵(Turing)奖”是美国计算机协会(ACM,Association for Computer Machinery)干 1966年设立的,专门奖励那些对计算机科学研究与推动计算机技术发展有卓越贡献的杰出科学家。设立的初衷是因为计算机技术的飞速发展,尤其到20世纪60年代,其已成为一个独立的有影响的学科,信息产业亦逐步形成,但在这一产业中却一直没有一项类似“诺贝尔”、“普利策”等的奖项来促进该学科的进一步发展,为了弥补这一缺陷,于是“图灵”奖便应运而生,它被公认为计算机界的“诺贝尔”奖。

                  “图 灵”为 何 如 此 幸 运

      不少人梦寐以求的国际计算机的最高奖项——图灵奖,为何它如此幸运,真是说来话长。
        阿兰·图灵(Alan Turing),1912年6月23日出生于英国伦敦,他被认为成二十世纪最著名的数学家之一,谁也没有想到他的名字会和计算机产业挂钩。
         20世纪的数学界正在热烈的讨论本世纪最伟大的科学发现之一 ——昆特.哥德尔的不完全性定理,在那以前,数学家们总认为,一个数学问题虽然要找到答案也许会很困难,但理论上总有一个确定的答案,一个数学命题,要么是真的,要么是假的。而哥德尔的不完全定理指出:在一个稍微复杂一点的的数学公理系统中,总存在那样的命题,我们既不能证明它是真的,也不能证明它是假的。数学家们大吃一惊,发现以往大家认为绝对严密的数学中,原来有令人如此不安的不确定性。每个逻辑学家都在苦苦思索,试图为陷入了危机的数学找到一条出路,这些逻辑学家包括当时在剑桥的贝特朗.罗素( Bertrand Russell ) 、阿尔弗雷德.怀特海(Alfred Whitehead)、路德维格.维特斯根坦 ( Ludwig Wittgenstein) 等著名的逻辑学家。这时的图灵正在剑桥求学,他也同样为此问题陷入了困境。
        1936年,图灵作出了他一生最重要的科学贡献,他在其著名的论文《论可计算数在判定问题中的应用(On Computer numbers with an Application to the Entscheidungs -problem)》一文中,以布尔代数[i]为基础,将逻辑中的任意命题(即可用数学符号)用一种通用的机器来表示和完成,并能按照一定的规则推导出结论。这篇论文被誉为现代计算机原理开山之作,它描述了一种假想的可实现通用计算的机器,后人称之为“图灵机”。
        这种假想的机器由一个控制器和一个两端无限长的工作带组成。工作带被划分成一个个大小相同的方格,方格内记载着给定字母表上的符号。控制器带有读写头并且能在工作带上按要求左右移动。随着控制器的移动,其上的读写头可读出方格上的符号,也能改写方格上的符号。这种机器能进行多种运算并可用于证明一些著名的定理。这是最早给出的通用计算机的模型。图灵还从理论上证明了这种假想机的可能性。尽管图灵机当时还只是一纸空文,但其思想奠定了整个现代计算机发展的理论基础。
        1945年,图灵被调往英国国家物理研究所工作。他结合自己多年的理论研究和战时制造密码破译机的经验,起草了一份关于研制自动计算机器(ACE:Automatic Computer Engine )的报告,以期实现他曾提出的通用计算机的设计思想。通过长期研究和深入思考,图灵预言,总有一天计算机可通过编程获得能与人类竞争的智能。1950年10月,图灵发表了题为《 机器能思考吗?》的论文,在计算机科学界引起巨大震撼,为人工智能学的创立奠定了基础。同年,图灵花费4万英镑,用了约800个电子管的ACE样机研制成功,它的存储容量比爱尼亚克[ii]大了许多。在公开演示会上,被认为是当时世界上速度最快、功能最强的计算机之一。图灵还设计了著名的“模仿游戏试验”,后人称之为“图灵测试”。该实验把被提问的一个人和一台计算机分别隔离在两间屋子,让提问者用人和计算机都能接受的方式来进行问答测试。如果提问者分不清回答者是人还是机器,那就证明计算机已具备人的智能(1993年美国波士顿计算机博物馆举行的著名的“图灵测试” [iii]充分验证了图灵的预言)。
        这让我想起前几年IBM公司研制的计算机“深蓝”与国际象棋世界冠军卡斯帕罗夫进行的那场人机大战,最终以“深蓝”战胜卡斯帕罗夫而宣告结束,让我们不得不佩服图灵的天才预言。
        现代计算机之父冯·诺依曼[iv]生前曾多次谦虚地说:如果不考虑巴贝奇[v]等人早先提出的有关思想,现代计算机的概念当属于阿兰·图灵。冯·诺依曼能把“计算机之父”的桂冠戴在比自己小10岁的图灵头上,足见图灵对计算机科学影响之巨大。

      毒 液 浸 透 苹 果,如 睡 之 死 渗 入 ……

      身为一名数学家, 图灵模型研制计算机的梦想在第二次世界大战的爆发中粉碎。当时,德国法西斯正对英伦三岛狂轰滥炸,图灵的祖国危在旦夕,怀着一腔报国热情,图灵前往英国外交部承担“超级机密”研究工作,即主持对德军通讯密码的破译工作。图灵便和历史上著名的布莱奇利公园以及加密电子机械装置ENIGMA联系在了一起。
        ENIGMA是德国发明家亚瑟.谢尔比乌斯(Arthur Scherbius)发明的一种加密电子器,它被证明是有史以来最可靠的加密系统之一,二战期间它开始被德军大量用于铁路、企业当中。英国第40局(英国政府负责破译密码的间谍机构)开始恐慌,因为出现了大量他们无法破译的电文。在整整13年里,英国人和法国人都认为ENIGMA是不可破译的。针对这一情况,40局新设了它的机构——英国政府代码及加密学校(GC&CS ,Government Code and Cipher School),总部坐落在白金汉郡的布莱奇利公园。在布莱奇利公园有一大批为破译ENIGMA作出卓越贡献的人们,图灵无疑是他们当中最值得叙述的一个。图灵发明了绰号为“炸弹” (Bombes)的解密机器,他被看成一位天才解密分析专家。战争结束,布莱奇利公园被关闭,“炸弹”被拆毁,所有战时有关密码分析和破译的档案资料都被销毁,直到1967年波兰出版第一本关于波兰破译ENIGMA方面的书,以及1974年温特伯坦姆写的《超级机密The Ultra Secret》一书出版,人们才知道图灵在分析解密方面的贡献。
        1938年迪斯尼公司著名的动画片《白雪公主和七个小矮人》上映,图灵也观看了这部影片,在后来的日子里,他的同事常常听见他哼电影中巫婆王后泡制毒苹果的台词:“毒液 浸透苹果如睡之死渗入……”而图灵的一生正是在这首歌词中结束。
        图灵在他生命的最后时光,没有机会看到自己被当作一个解密英雄来尊敬,相反,由于他同性恋的性倾向而倍受折磨。1952年因小偷入室行窃,图灵向警察报了案,但他却忘了向警察掩藏他和另一位男士同居的事实,同年他被警方逮捕,以“有伤风化罪”罪名遭到起诉,并被判为有罪。而这期间,他不得不忍受报纸媒体对他案件的公开全面报道。性倾向被公开,私生活曝光于大众,政府也取消了他情报部门的工作。他的脾气变的躁怒不安,性格阴沉郁悒。1954年6月8日,人们在图灵的寓所发现了他的尸体。他在自己的住处服用沾过氰化物的苹果而自杀。临死的前夜,也许图灵的耳边还回响着那首歌:“毒液浸透苹果如睡之死渗入……”
        迄今为止,作为计算机界“诺贝尔奖”的图灵奖已走过了36个春秋。40多位图灵奖得主均对计算机科学与技术的发展创新做出了杰出贡献。他们在珍惜自己所获崇高荣誉的同时,也深切怀念阿兰·图灵这位在计算机创新史上永放光芒的先驱。



      --------------------------------------------------------------------------------

      [i] 1854年,英国数学家乔治·布尔(George Boode)出版了名著《布尔代数》。书中用“真”、“假”两种逻辑值和“与”、“或”、“非”三种逻辑运算把形式逻辑归结为一种代数。

      [ii] “爱尼亚克”是世界第一台实用数字电子计算机,1946年2月15日在宾西法尼亚大学正式投入运行。

      [iii]该次测试评判员与封闭在密室的计算机或人进行15分钟的交谈,然后根据交谈的印象判断交谈对方是人还是计算机。其中“PC理疗3号” 让评判员误认为“他”是一名聊天高手,而另有两位评判员误将一位小姐指认为计算机。所以充分证明了图灵预言的正确性。

      [iv] 约翰·冯·诺依曼 ( John Von Nouma,1903-1957),美藉匈牙利人。提出了著名的"冯·诺依曼机"设想,其中心就是有存储程序原则——指令和数据一起存储.这个概念被誉为'计算机发展史上的一个里程碑",它标志着电子计算机时代的真正开始,指导着以后的计算机设计。

      [v] 查尔斯·巴贝奇, 英国人。 他写出了世界上第一部关于计算机程序的专著,他发明的解析机是现代电子计算机的雏形。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 啊?Turing死时才42岁?可惜了,可惜了,生得逢时,生得又不逢时。
    • 1987 John Cocke(ZT)
      本文发表在 rolia.net 枫下论坛John Cocke


      Citation
      For significant contributions in the design and theory of compilers, the architecture of large systems and the development of reduced instruction set computers (RISC); for discovering and systematizing many fundamental transformations now used in optimizing compilers including reduction of operator strength, elimination of common subexpressions, register allocation, constant propagation, and dead code elimination.
      --------------------------------------------


      1987年获奖的John Cocke,在Duke大学获数学博士学位。毕业后进入IBM公司工作,同时也在MIT和NYU的Courant研究所做过客座教授。主要贡献是发明了 RISC(reduced instruction set computers),大大改善了芯片的性能。

      John Cocke 在 1950 年加入 IBM 时的第一个任务是从事 Stretch 计算机 的研制。虽然这个系统的性能没有达到他当时所承诺的超过 IBM 704 大型机的 100 倍以上,但是其性能的确超过它 30 倍以上。这个系统倡导了很多方面的技术,例如:流水线,程序分支预测,多线程编程,内存保护,通用中断,8 位字节,等等。这些技术后来都在 IBM 的 System/360 产品线中采用,而且一直影响了目前市场上大部分芯片的发展。
      704 的后继者称为 Project X,它是 Stretch 的后继者 Project Y 的竞争对手。尽管 Project X 后来成为 IBM S/360 系列的大型机,而 Project Y 后来成为 ACS (高级计算系统),但是 IBM 的最初目的是要制造一台超级计算机。ACS 是 John 在 Stretch 之后又从事的项目,它也是 John 的下一个项目 801 的祖先。



      IBM 的 John Cocke 在实现复杂性领域并不是生手,他早就从事于 IBM Stretch 计算机的研究,IBM Stretch 计算机是 IBM 704 大型机的一个竞争对手,它的继承者是 ACS (高级计算机系统);而 704 的继承者是 S/360,二者也是竞争对手。



      他对指令集进行了拆分,并设计了一台只有当时同类计算机一半电路的机器,但是其运行速度却是同类计算机的两倍。快速的核心和更少的电路带来的不仅仅是性能的提升,而且功耗也更少(这对于现在的很多用户来说都是最重要的一个问题),成本也更低。这种体系结构称为 RISC(精简指令集计算机)。有些人喜欢称 RISC 为“load-store”,意思是想强调 RISC 计算机只有 100 多条指令(POWER 体系结构也是如此)。其他的 RISC 计算机并没有采用一套精简指令集,而是采用一组精简过的指令:CISC 的每条复杂指令都被拆分成更小的基本单元,然后再组合起来实现复杂指令的功能。

      无论如何,CPU 中的复杂性并没有简单地消失,而是转嫁到编译器中了。为了更好地实现这种功能,John Cocke 不仅成为编译器领域的专家,而且在编译器的优化方面特有专长。他在 RISC 和编译器优化方面的工作为他赢得了很多荣誉,其中包括 1987 年的图灵奖。


      就 IBM 801 而言,它从来都没有成为一个电话转换器。相反,IBM 801 后来成为第一个 RISC 芯片,在很多 IBM 的硬件产品中广泛采用 —— 曾经有一段时间,它作为一个微控制器和处理器甚至限制了其竞争对手 IBM 大型机的发展。

      RISC 体系结构在工作站和嵌入式市场中很快占据了主导地位,John Cocke 之后又转入其他项目的研究之中。在 20 世纪 80 年代,他有机会在一个后来被命名为“America”的项目中重新提炼 801 的设计,这个项目后来就成为 POWER 系列的芯片。之后的几年中,他甚至在 PowerPC 体系结构的开发中贡献了很大的力量。与 801 类似,PowerPC 也被设计成为可以在任何机器上运行的一个通用微处理器,它在从最高端到最低端的机器上都可以运行。

      现在,RISC 体系结构是惟一一种最通用的 CPU,它是很多平台的基础:从工作站到蜂窝电话,从视频游戏终端到超级计算机,从交通指示灯到桌面系统,从宽带调制解调器到自动加油站和防撞系统。甚至 x86 的制造商(他们在相当长的一段时间内都生产 CISC 芯片)也基于 RISC 体系结构研制了他们的第五代和第六代芯片,并将 x86 的操作码转换成 RISC 操作,以保持向后兼容。


      John Cocke 是世界上一个真正的 黑客,他永远改变了芯片设计和计算机世界。由于这一点,他获得了很多业界和国家的奖项,其中包括 Franklin 学院奖 和 1987 年的图灵奖。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • RISC微处理器(ZT)
        本文发表在 rolia.net 枫下论坛RISC微处理器

        对CISC机进行测试表明,各种指令的使用频度相当悬殊,最常使用的是一些比较简单的指令,它们仅占指令总数的20%,但在程序中出现的频度却占80%。复杂的指令系统必然增加微处理器的复杂性,使微处理器研制时间长、成本高。复杂指令需要复杂的操作,从而降低了机器的速度。

        70年代末,John Cocke提出精简指令的想法。80年代初斯坦福大学研制出MIPS机,为精简指令系统计算机(简称RISC)的诞生与发展起了很大作用。RISC机中采用的微处理器统称RISC处理器。MIPS R3000、HP-PA8000系列,Motorola M88000等均属于RISC微处理器。它们的指令数目只有几十条。RISC微处理器不仅精简了指令系统,还采用超标量和超流水线结构,大大增强了并行处理能力。1987年Sun Microsystem公司推出的SPARC芯片就是一种超标量结构的RISC处理器。而SGI公司推出的MIPS处理器则采用超流水线结构,这些RISC处理器在构建并行精简指令系统多处理机中起着核心的作用。它们都是当今UNIX领域64位多处理机的主流芯片。

        RISC微处理器取得成功的诀窍之一是由于指令集简化后,流水线以及常用指令均可用硬件执行;诀窍之二是采用大量的寄存器,使大部分指令操作都在寄存器之间进行,提高了处理速度;诀窍之三是采用缓存-主存-外存三级存储结构,使取数与存数指令分开执行,使处理器可以完成尽可能多的工作,且不因从存储器存取信息而放慢处理速度。

        由于RISC处理器指令简单、采用硬布线控制逻辑、处理能力强、速度快,世界上绝大部分UNIX工作站和服务器厂商均采用RISC芯片作CPU用。如原DEC的Alpha 21364、IBM的Power PC G4、HP的PA-8900、SGI的R12000A和SUN Microsystem公司的Ultra SPARC II。这些RISC芯片的工作频率一般在400MHz数量级。时钟频率低,功率消耗少,温升也少,机器不易发生故障和老化,提高了系统的可靠性。如SGI的R12000A微处理器主要靠改进微处理器的体系结构来提高处理器的总体性能,使运行应用程序时速度加快。

        在RISC微处理器发展过程中。曾产生了超长指令字(VLIW)微处理器,它使用非常长的指令组合,把许多条指令连在一起,以增加运算速度。在VLIW微处理器中多个功能部件用一组寄存器相连,以支持多功能并行执行。VLIW处理器的基本模型是标量代码的执行模型,使每个机器周期内有多个操作。有些RISC处理器中也采用少数VLIW指令来提高处理速度。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 深入浅出之CPU原理(上)
        本文发表在 rolia.net 枫下论坛本文希望以比较通俗的语言深入介绍一下CPU的原理。

        一、 指令系统

        要讲CPU,就必须先讲一下指令系统。指令系统指的是一个CPU所能够处理的全部指令的集合,是一个CPU的根本属性。比如我们现在所用的CPU都是采用x86指令集的,他们都是同一类型的CPU,不管是PIII、Athlon或Joshua。我们也知道,世界上还有比PIII和Athlon快得多的CPU,比如Alpha,但它们不是用x86指令集,不能使用数量庞大的基于x86指令集的程序,如Windows98。之所以说指令系统是一个CPU的根本属性,是因为指令系统决定了一个CPU能够运行什么样的程序。

        所有采用高级语言编出的程序,都需要翻译(编译或解释)成为机器语言后才能运行,这些机器语言中所包含的就是一条条的指令。

        1、 指令的格式

        一条指令一般包括两个部分:操作码和地址码。操作码其实就是指令序列号,用来告诉CPU需要执行的是那一条指令。地址码则复杂一些,主要包括源操作数地址、目的地址和下一条指令的地址。在某些指令中,地址码可以部分或全部省略,比如一条空指令就只有操作码而没有地址码。

        举个例子吧,某个指令系统的指令长度为32位,操作码长度为8位,地址长度也为8位,且第一条指令是加,第二条指令是减。当它收到一个“00000010000001000000000100000110”的指令时,先取出它的前8位操作码,即00000010,分析得出这是一个减法操作,有3个地址,分别是两个源操作数地址和一个目的地址。于是,CPU就到内存地址00000100处取出被减数,到00000001处取出减数,送到ALU中进行减法运算,然后把结果送到00000110处。

        这只是一个相当简单化的例子,实际情况要复杂的多。

        2、 指令的分类与寻址方式

        一般说来,现在的指令系统有以下几种类型的指令:

        (1)算术逻辑运算指令

        算术逻辑运算指令包括加减乘除等算术运算指令,以及与或非异或等逻辑运算指令。现在的指令系统还加入了一些十进制运算指令以及字符串运算指令等。

        (2)浮点运算指令

        用于对浮点数进行运算。浮点运算要大大复杂于整数运算,所以CPU中一般还会有专门负责浮点运算的浮点运算单元。现在的浮点指令中一般还加入了向量指令,用于直接对矩阵进行运算,对于现在的多媒体和3D处理很有用。

        (3)位操作指令
        学过C的人应该都知道C语言中有一组位操作语句,相对应的,指令系统中也有一组位操作指令,如左移一位右移一位等。对于计算机内部以二进制不码表示的数据来说,这种操作是非常简单快捷的。

        (4)其他指令

        上面三种都是运算型指令,除此之外还有许多非运算的其他指令。这些指令包括:数据传送指令、堆栈操作指令、转移类指令、输入输出指令和一些比较特殊的指令,如特权指令、多处理器控制指令和等待、停机、空操作等指令。

        对于指令中的地址码,也会有许多不同的寻址(编址)方式,主要有直接寻址,间接寻址,寄存器寻址,基址寻址,变址寻址等,某些复杂的指令系统会有几十种甚至更多的寻址方式。

        3、 CISC与RISC

        CISC,Complex Instruction Set Computer,复杂指令系统计算机。RISC,Reduced Instruction Set Computer,精简指令系统计算机。虽然这两个名词是针对计算机的,但下文我们仍然只对指令集进行研究。

        (1)CISC的产生、发展和现状

        一开始,计算机的指令系统只有很少一些基本指令,而其他的复杂指令全靠软件编译时通过简单指令的组合来实现。举个最简单的例子,一个a乘以b的操作就可以转换为a个b相加来做,这样就用不着乘法指令了。当然,最早的指令系统就已经有乘法指令了,这是为什么呢?因为用硬件实现乘法比加法组合来得快得多。

        由于那时的计算机部件相当昂贵,而且速度很慢,为了提高速度,越来越多的复杂指令被加入了指令系统中。但是,很快又有一个问题:一个指令系统的指令数是受指令操作码的位数所限制的,如果操作码为8位,那么指令数最多为256条(2的8次方)。
        那么怎么办呢?指令的宽度是很难增加的,聪明的设计师们又想出了一种方案:操作码扩展。前面说过,操作码的后面跟的是地址码,而有些指令是用不着地址码或只用少量的地址码的。那么,就可以把操作码扩展到这些位置。

        举个简单的例子,如果一个指令系统的操作码为2位,那么可以有00、01、10、11四条不同的指令。现在把11作为保留,把操作码扩展到4位,那么就可以有00、01、10、1100、1101、1110、1111七条指令。其中1100、1101、1110、1111这四条指令的地址码必须少两位。
        然后,为了达到操作码扩展的先决条件:减少地址码,设计师们又动足了脑筋,发明了各种各样的寻址方式,如基址寻址、相对寻址等,用以最大限度的压缩地址码长度,为操作码留出空间。

        就这样,慢慢地,CISC指令系统就形成了,大量的复杂指令、可变的指令长度、多种的寻址方式是CISC的特点,也是CISC的缺点:因为这些都大大增加了解码的难度,而在现在的高速硬件发展下,复杂指令所带来的速度提升早已不及在解码上浪费点的时间。除了个人PC市场还在用x86指令集外,服务器以及更大的系统都早已不用CISC了。x86仍然存在的唯一理由就是为了兼容大量的x86平台上的软件。

        (2)RISC的产生、发展和现状

        1975年,IBM的设计师John Cocke研究了当时的IBM370CISC系统,发现其中占总指令数仅20%的简单指令却在程序调用中占了80%,而占指令数80%的复杂指令却只有20%的机会用到。由此,他提出了RISC的概念。事实证明,RISC是成功的。80年代末,各公司的RISC CPU如雨后春笋般大量出现,占据了大量的市场。到了90年代,x86的CPU如pentium和k5也开始使用先进的RISC核心。

        RISC的最大特点是指令长度固定,指令格式种类少,寻址方式种类少,大多数是简单指令且都能在一个时钟周期内完成,易于设计超标量与流水线,寄存器数量多,大量操作在寄存器之间进行。由于下文所讲的CPU核心大部分是讲RISC核心,所以这里就不多介绍了,对于RISC核心的设计下面会详细谈到。

        RISC目前正如日中天,Intel的Itanium也将最终抛弃x86而转向RISC结构。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 深入浅出之CPU原理(中)
        本文发表在 rolia.net 枫下论坛二、CPU内核结构

        好吧,下面来看看CPU。CPU内核主要分为两部分:运算器和控制器。

        (一) 运算器

        1、 算术逻辑运算单元ALU(Arithmetic and Logic Unit)

        ALU主要完成对二进制数据的定点算术运算(加减乘除)、逻辑运算(与或非异或)以及移位操作。在某些CPU中还有专门用于处理移位操作的移位器。

        通常ALU由两个输入端和一个输出端。整数单元有时也称为IEU(Integer Execution Unit)。我们通常所说的“CPU是XX位的”就是指ALU所能处理的数据的位数。

        2、 浮点运算单元FPU(Floating Point Unit)

        FPU主要负责浮点运算和高精度整数运算。有些FPU还具有向量运算的功能,另外一些则有专门的向量处理单元。

        3、通用寄存器组

        通用寄存器组是一组最快的存储器,用来保存参加运算的操作数和中间结果。在通用寄存器的设计上,RISC与CISC有着很大的不同。CISC的寄存器通常很少,主要是受了当时硬件成本所限。比如x86指令集只有8个通用寄存器。所以,CISC的CPU执行是大多数时间是在访问存储器中的数据,而不是寄存器中的。这就拖慢了整个系统的速度。而RISC系统往往具有非常多的通用寄存器,并采用了重叠寄存器窗口和寄存器堆等技术使寄存器资源得到充分的利用。

        对于x86指令集只支持8个通用寄存器的缺点,Intel和AMD的最新CPU都采用了一种叫做“寄存器重命名”的技术,这种技术使x86CPU的寄存器可以突破8个的限制,达到32个甚至更多。不过,相对于RISC来说,这种技术的寄存器操作要多出一个时钟周期,用来对寄存器进行重命名。

        4、 专用寄存器

        专用寄存器通常是一些状态寄存器,不能通过程序改变,由CPU自己控制,表明某种状态。

        (二) 控制器
          运算器只能完成运算,而控制器用于控制着整个CPU的工作。

        1、 指令控制器

          指令控制器是控制器中相当重要的部分,它要完成取指令、分析指令等操作,然后交给执行单元(ALU或FPU)来执行,同时还要形成下一条指令的地址。

        2、 时序控制器

        时序控制器的作用是为每条指令按时间顺序提供控制信号。时序控制器包括时钟发生器和倍频定义单元,其中时钟发生器由石英晶体振荡器发出非常稳定的脉冲信号,就是CPU的主频;而倍频定义单元则定义了CPU主频是存储器频率(总线频率)的几倍。

        3、 总线控制器

          总线控制器主要用于控制CPU的内外部总线,包括地址总线、数据总线、控制总线等等。

        4、中断控制器

          中断控制器用于控制各种各样的中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU处理。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 深入浅出之CPU原理(下)(ZT)
        本文发表在 rolia.net 枫下论坛深入浅出之CPU原理(下)

        (三) CPU核心的设计

        CPU的性能是由什么决定的呢?单纯的一个ALU速度在一个CPU中并不起决定性作用,因为ALU的速度都差不多。而一个CPU的性能表现的决定性因素就在于CPU内核的设计。

        1、超标量(Superscalar)

          既然无法大幅提高ALU的速度,有什么替代的方法呢?并行处理的方法又一次产生了强大的作用。所谓的超标量CPU,就是只集成了多个ALU、多个FPU、多个译码器和多条流水线的CPU,以并行处理的方式来提高性能。

          超标量技术应该是很容易理解的,不过有一点需要注意,就是不要去管“超标量”之前的那个数字,比如“9路超标量”,不同的厂商对于这个数字有着不同的定义,更多的这只是一种商业上的宣传手段。

        2、流水线(Pipeline)

          流水线是现代RISC核心的一个重要设计,它极大地提高了性能。

          对于一条具体的指令执行过程,通常可以分为五个部分:取指令,指令译码,取操作数,运算(ALU),写结果。其中前三步一般由指令控制器完成,后两步则由运算器完成。按照传统的方式,所有指令顺序执行,那么先是指令控制器工作,完成第一条指令的前三步,然后运算器工作,完成后两步,在指令控制器工作,完成第二条指令的前三步,在是运算器,完成第二条指令的后两部……很明显,当指令控制器工作是运算器基本上在休息,而当运算器在工作时指令控制器却在休息,造成了相当大的资源浪费。解决方法很容易想到,当指令控制器完成了第一条指令的前三步后,直接开始第二条指令的操作,运算单元也是。这样就形成了流水线系统,这是一条2级流水线。

          如果是一个超标量系统,假设有三个指令控制单元和两个运算单元,那么就可以在完成了第一条指令的取址工作后直接开始第二条指令的取址,这时第一条指令在进行译码,然后第三条指令取址,第二条指令译码,第一条指令取操作数……这样就是一个5级流水线。很显然,5级流水线的平均理论速度是不用流水线的4倍。

          流水线系统最大限度地利用了CPU资源,使每个部件在每个时钟周期都工作,大大提高了效率。但是,流水线有两个非常大的问题:相关和转移。

          在一个流水线系统中,如果第二条指令需要用到第一条指令的结果,这种情况叫做相关。以上面哪个5级流水线为例,当第二条指令需要取操作数时,第一条指令的运算还没有完成,如果这时第二条指令就去取操作数,就会得到错误的结果。所以,这时整条流水线不得不停顿下来,等待第一条指令的完成。这是很讨厌的问题,特别是对于比较长的流水线,比如20级,这种停顿通常要损失十几个时钟周期。目前解决这个问题的方法是乱序执行。乱序执行的原理是在两条相关指令中插入不相关的指令,使整条流水线顺畅。比如上面的例子中,开始执行第一条指令后直接开始执行第三条指令(假设第三条指令不相关),然后才开始执行第二条指令,这样当第二条指令需要取操作数时第一条指令刚好完成,而且第三条指令也快要完成了,整条流水线不会停顿。当然,流水线的阻塞现象还是不能完全避免的,尤其是当相关指令非常多的时候。

          另一个大问题是条件转移。在上面的例子中,如果第一条指令是一个条件转移指令,那么系统就会不清楚下面应该执行那一条指令?这时就必须等第一条指令的判断结果出来才能执行第二条指令。条件转移所造成的流水线停顿甚至比相关还要严重的多。所以,现在采用分支预测技术来处理转移问题。虽然我们的程序中充满着分支,而且哪一条分支都是有可能的,但大多数情况下总是选择某一分支。比如一个循环的末尾是一个分支,除了最后一次我们需要跳出循环外,其他的时候我们总是选择继续循环这条分支。根据这些原理,分支预测技术可以在没有得到结果之前预测下一条指令是什么,并执行它。现在的分支预测技术能够达到90%以上的正确率,但是,一旦预测错误,CPU仍然不得不清理整条流水线并回到分支点。这将损失大量的时钟周期。所以,进一步提高分支预测的准确率也是正在研究的一个课题。

          越是长的流水线,相关和转移两大问题也越严重,所以,流水线并不是越长越好,超标量也不是越多越好,找到一个速度与效率的平衡点才是最重要的。

        三、CPU的外核

        1、解码器(Decode Unit)

          这是x86CPU才有的东西,它的作用是把长度不定的x86指令转换为长度固定的类似于RISC的指令,并交给RISC内核。解码分为硬件解码和微解码,对于简单的x86指令只要硬件解码即可,速度较快,而遇到复杂的x86指令则需要进行微解码,并把它分成若干条简单指令,速度较慢且很复杂。好在这些复杂指令很少会用到。

          Athlon也好,PIII也好,老式的CISC的x86指令集严重制约了他们的性能表现。

        2、一级缓存和二级缓存(Cache)

          以及缓存和二级缓存是为了缓解较快的CPU与较慢的存储器之间的矛盾而产生的,以及缓存通常集成在CPU内核,而二级缓存则是以OnDie或OnBoard的方式以较快于存储器的速度运行。对于一些大数据交换量的工作,CPU的Cache显得尤为重要。

          好了,看到了吧,CPU其实也就这样,并不是很神秘。这篇文章的所有内容都不针对某一种CPU,而是适合于任何CPU,是一些最基本的CPU原理,希望能够对你有所帮助。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 1987 John Cocke (ZT)——RISC概念的首创者
        本文发表在 rolia.net 枫下论坛1987年度的图灵奖授予了IBM沃森研究中心老资格的研究员约翰·科克(John Cocke)。

        科克是从机械转到数学,又从数学转到计算机方向上来的学者。他生于1925年,1946年在杜克大学(Duke University)获得机械工程学士学位,干了几年实际工作以后,又回到母校读研究生,改攻数学,于1956年取得博士学位。之后,他进入IBM,从此开始了他的计算机生涯,并为IBM计算机市场的开拓和计算机科学技术的发展作出了巨大的贡献。由于他学过机械和数学,基础扎实,知识面广,加上兴趣广泛,善于动脑,他在IBM许多产品的设计、开发和技术问题的解决中都起过至关重要的作用,有众多的发明创造。在沃森研究中心,每当人们有疑难问题需要解决的时候,常常说:“找约翰讨论讨论去”。事实上,科克也总能提出有益的建议,因而受到同事的普遍敬仰和尊重。

        科克的贡献和成就首先是在高性能计算机的体系结构方面。科克是 IBM 2O世纪 60年代初推出的大型晶体管计算机,也是世界上第一个“超级计算机”(Supercomputer)型号STRETCH的技术负责人。STRETCH包含15万只晶体管,其速度比IBM上一个主流计算机型号 IBM 704快75倍。 STRETCH首创的灵活的寻址技术,指令提前执行(即流水线技术),差错校正码 ECC(Error Correcting Code)等至今仍被广泛使用着。STRETCH还首次采用了虚存技术,这是科克对计算机体系结构的第一个贡献。在1959年IRE-AIEE-ACM东部联合计算机会议上,科克在论文 The Virtual Memory in the STRETCH Computer中介绍了他的创新,从而开始在计算机界崭露头角。STRETCH共生产了8台,被洛斯阿拉莫斯(Los Alamos)国家实验室(这是研制出了世界上第一颗原子弹的著名原子能研究中心)等机构所使用。1971年STRETCH退役。

        随后,科克又参与了IBM/360的设计与开发工作。IBM/360的指令部件是由科克和考尔斯基(Harwood Kolsky)设计与实现的,在这个部件的设计中,他们把阿姆达尔(Gene Myron Amdahl)首创的流水线概念加以完善和发展,使之成为成熟的技术,而后被广泛应用。

        20世纪70年代中期,科克主持了一个801计算机项目,这个项目按IBM根据研制小组所在建筑物命名的传统,也被叫做“80号大楼”项目( Building 80 Project)。801计算机原是为每小时能处理 100万次呼叫的全数字电话交换机设计的专用机,但实现中被发展为一种具有小指令集,每个指令都是单地址,有固定格式,以流水线方式重叠执行,指令高速缓存和数据高速缓存分开并互相独立的一种超级通用小型机。科克设计这样一种计算机的主要依据是:根据统计,一般计算机的指令系统中,只有约20%的指令是经常使用的,它们占程序执行总指令数的80%,指令系统中其余SO%的指令则很少使用,只占程序执行总指令数的20%,这就是著名的“20%:8O%定律”。IBM 801的这种设计思想和体系结构引起加州大学伯克利分校的帕德森(D.Patterson)和斯坦福大学的亨乃西(J.Hennessy)的极大兴趣和重视,经过进一步研究、改进和发展,最后形成为一种崭新的计算机体系结构,即大家熟知的“精简指令集计算机”RISC(Reduced Instruction Set Computer)。因此,RISC这个名称虽然是由帕德森于 1980年出的,但学术界公认科克是RISC概念的首创者。目前,RISC机已成为计算机产业中一种最重要的产品结构,从SUN公司的SPARC到IBM公司的RS/6000到IBM、Apple和Motorola三家联合开发的Power 601 及其后的 Power 60x,无不都是 RISC机。

        除了计算机体系结构以外,科克在编译器方面也有很多重要贡献。实际上,RJSC技术的两大核心一是指令并行执行,另一就是编译代化。在高级语言编译器发展的初期,生成的目标代码大,执行效率低。科克对编译器的代码生成技术进行了深入研究,提出了~系列优化方法,如过程(procedure)的集成,循环(loop)的变换,公共子表达式(common snbexpression)的消除,代码移动(code motion),寄存器定位,存储单元重用,等等,从而使编译器的质量大大提高,使编译技术发展到一个新阶段。20世纪70年代初,科克的两部专著都是关于编译器技术的,都产生了重大影响。这两部专著分别是《程序设计语言及其编译器》(Programming Languages and Their Compilers:Preliminary Notes,Cowrant IMS,1970)和《各种变换的优化方法》(A Catalog of Optimizing Transformations,Prentice-Hall,1972)。

        此外,科克在磁记录技术,机器翻译的统计方法等方面也有过创造和发明。

        在获得图灵奖之前,科克于1985年获得过ACM的另一个奖项:Eckert-Mauchly奖,这个奖是1979年为纪念世界上第一台电子计算机二的两位设计者而设立的,主要用来奖励在计算机体系结构方面作出杰出贡献的科学家。 1990年 IBM公司授予科克“John E.Bertram奖”。1994年科克获IEEE的冯·诺伊曼奖。1991年和1994广科克分别获得美国全国性的技术奖章和科学奖章(National Medal of Technology以及 National Medal of Science)。

        不知什么原因,科克没有出席图灵奖颁奖仪式,而由他的同事佩尔特(A.pe1ed)代为领奖并致词。但科克发表了书面的图灵奖演说,题为“对科学处理器性能的探索”(The Search for Performance in Scientific Processors)。科克在演说中回顾了他一生追求高性能计算的历程,认为对计算机性能影响最大的三个因素是算法、编译器和机器组织。虽然他本人从事的是有关机器组织和编译器方面的研究工作的,但他认为这三者中,算法的改进是最重要的。佩尔特的致词和科克的书面演说全文刊于 1988年 3月号的 Communications of ACM,249-253页。更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 此非精华,何为精华?
      • YES. I think so.
        • :) 还是你的功劳大。
          • 那里.上次,这位网友批评我转的八卦文章是废话,我就记住他/她了.他/她转得 每日英语也是含金量不错.我很欣赏.真的.
            • 我也有无聊的时候,对不起,有时无聊贫两句也是顺便顶,不过还是掉下去了. :-)
              • 别在意.笑熬浆糊在加拿大混,就是光崇拜真理和知识了.信仰民主.我所有的狗屁不通的东西,都欢迎辩论.对事不对人嘛.握握手..
                • 我也是。。。握手。
      • 谢谢兄弟们捧场,谢谢版主,我是热爱这个行当,很幸运还能做着这个行当,我想讲的是我们和卖菜的还是有点区别的,再次感谢。
        • 屁屁虫不要看不起俺们卖菜的啊。:)俺们看见这些高科技就景仰,所以希望进精华。
          • 误解,误会,三人行必有我师,草民多出义士.
            生活的本质和人生的信念都应是一至的,我觉得我是一个很草根的人,但我是爱我的行当的,有人把做IT引为不齿,可能也是玩笑,我不是很以为然,也希望大家对我们多点了解。我这次也才知道Turing 是直的,有趣。另外每晚做点这种收集整理的工作,觉的比盲目的kill time好点,也算一种放松,当然还是感谢版主提供了这样一个场所给我们。
    • glad to see Vinton Cerf's name, the Internet pioneer or the Father (or at least Uncle ;))!
    • Prof Stephen Cook awarded Turing Award in 1982 is very nice. He laid the foundations for the theory of NP-Completeness.
      One of million dollars questions is coming from him. I once took his course. His teaching skill is great. He's also very nice.

      http://www.claymath.org/millennium/P_vs_NP/
    • 欢迎兄弟们把自己所知道的故事贴出来,谢谢。
    • Bill Joy, 前任Sun的首席科学家, 他应该没有拿Turing.(ZT)
      本文发表在 rolia.net 枫下论坛,当年在Berkeley时主持开发了最早版本的BSD。他还是vi和csh的作者。当然,Csh Programming Considered Harmful 是另一个话题乐。据说他想看看自己能不能写个操作系统,就在三天里写了个自己的Unix, 也就是BSD的前身。当然是传说了,但足见他的功力。另一个传说是,1980年初的时候,DARPA让BBN在Berkley Unix里加上BBN开发的TCP/IP代码。但当时还是研究生的B伯伯怒了,拒绝把BBN TCP/IP加入BSD,因为他觉得BBN的TCP/IP写得不好。于是B伯伯出手了,端的是一箭封喉,很快就写出了高性能的伯克利版TCP/IP。当时BBN和DARPA签了巨额合同开发TCP/IP Stack,谁知他们的代码还不如一个研究生的好。于是他们开会。只见当时B伯伯穿个T-shirt出现在会议室(当时穿T-shirt不象现在,还是相当散漫的哈)。只见BBN问:你怎么写出来的?而B伯伯答:简单,你读协议,然后编程就行了。最令偶晕倒的是,B伯伯硕士毕业 后决定到工业界发展,于是就到了当时只有一间办公室的Sun, 然后他就把Sparc设计出 来乐。。。象这种软硬通吃的牛人,想不佩服都不行的说。据Bill Joy的同事说,一般开会的时候B伯伯总是拿一堆杂志漫不经心地读。但往往在关键之处,B伯伯发言,直切要害,提出 漂亮的构想,让同事们彻底崩溃。对了,他还是Java Spec和JINI的主要作者之一。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 谈Bill Joy不能不谈Berkeley Unix 二十年历史之回顾(ZT)
        本文发表在 rolia.net 枫下论坛早期历史

        1973年11月,在Purdue大学召开的"操作系统原理研讨会"上,Ken Thompson 和Dennis Ritchie发表了第一篇关于Unix的论文。 当时California大学Berkeley分校的Bob Fabry教授也正好在会场上,他立刻对此发生了兴趣,并得到了一份操作系统的拷贝,准备在Berkeley分校进行实验。

        当时,Berkeley仅有大型的计算机主机系统在做一些批处理工作。因此这项事业的第一个定单是得到一台PDP-11/45计算机,以运行当时的Unix Version 4。 Berkeley的计算机系、数学系和统计系共同出资购买了这台PDP-11/45。 在1974年元月份,第四版本(Version 4)的Unix 磁带交付学校使用,学校当时指定当时上研究生的Keith Standiford将这个操作系统安装到了这台机器上。

        尽管身在Purdue的Ken Thompson没有参与在Berkeley安装这一操作系统,因为他要负责在其他地方的安装系统,但是在Berkeley安装的系统上出现了几次奇怪的系统崩溃,因此很快就需要像他这样富有经验的专家来帮助解决。 当时Berkeley仅有一台300-波特率的声频耦合式的调制解调器,且没有自动应答功能,所以Thompson需要事先通过电话通知机房的Standiford,让他将电话线插入调制解调器中。 通过这种方法,Thompson可以从新泽西州远程地对崩溃了的系统进行调试。

        许多次系统崩溃的原因在于磁盘控制器不能可靠地执行叠加搜索,与通常的文档搜索不同,Berkeley 的PDP-11/45计算机是Thomspson所遇到的首批在同一个控制器上有两个磁盘的系统之一! Thompson的远程调试也是后来延续的Berkeley和Bell实验室之间合作的第一个例子,Bell实验室的研究人员乐意助人,他们同意将他们的工作成果与Berkeley进行分享,这极大地加快了Berkeley软件的改进工作。

        尽管Unix很快就开始运行起来,而且很可靠,但Berkeley计算机系、数学系和统计系之间的冲突很快就导致了新的问题:数学系和统计系想运行DEC的RSTS系统。经过多次讨论后,他们达成了妥协,每个系可以有每班8个小时的时间运行计算机系统,即Unix运行8个小时后,再运行16个小时的RSTS。 为促进公平性,运行时间段的切换每天进行,因此第一天Unix从上午8点运行到下午4点,然后是从第二天的下午4点到第二天的午夜,接着是第三天的凌晨到上午8点。 尽管这个时间表异乎寻常,但是学习操作系统课程的学生们更喜欢在Unix系统上做项目,而不是在批处理机上。

        Eugene Wong教授和Michael Stonebraker教授都感到在批处理环境限制下的工作很别扭,因此他们的INGRES数据库项目成为第一组从批处理机移至Unix交互环境下开发的项目,但他们很快就发现了缺乏机器运行时间,而且在PDP-11/45上的需要在奇数小时才能进行工作的确让人忍受不了,因此在1974年的春天,他们购买了一台PDP-11/40以运行新的Unix Version 5。 随着1974年秋天第一个INGRES分发版的发行,INGRES项目小组成为计算机系中第一个发行软件的小组,在随后的六年中,他们一共交付了几百份INGRES磁带,大大地帮助了Berkeley在设计和建立真正系统领域树立起了良好的信誉。
        尽管INGRES项目组后来不再使用PDP-11/45,但对使用机器的学生来讲,仍然存在运行机器时间的不足,为了弥补这种缺陷,Michael Stonebraker教授和Bob Fabry教授,从1974年6月开始着手为计算机系购买两台供教学使用的PDP-11/45。 1975年初,钱已到位,但几乎在同时,DEC发布了PDP-11/70,一种显得比PDP-11/45更高档的机器,因此原本计划在1975年秋天购买两台PDP-11/45的钱转而购买了一台PDP-11/70。 PDP-11/70交付学校使用时,碰巧Ken Thompson决定作一年的休假。California Berkely分校是Ken Thompson的母校,Ken Thompson决定去Berkely分校当访问教授。 后来Thompson 同Jeff Schriebman与Bob Kridle三人一道在新安装的PDP-11/70上合作开发了后来的Unix Version 6。

        1975年的秋天,来了两位当时还不出名的研究生,他们是Bill Joy和Chuck Haley,两人立刻都对这一新的系统产生了兴趣,最初他们开始在一个Pascal系统上工作,该系统由Thompson在PDP-11/70机房调试时与机器集成在一起,他们扩展了并有效地改进了Pascal解释器,并使它成为学生们一个可选的一个编程系统,因为它具有极好的错误恢复机制和快速编译时间及运行时间(compile and execute time)。

        随着Model 33 teletypes被ADM-3屏幕终端所取代,Joy和Haley开始感到ed编辑器存在的局限性,他们从伦敦的Queen Mary学院George Coulouris教授那里得到了一个名为em的编辑器,并开始着手开发一种每次一行的编辑器,名为ex。

        1976年夏末,Thompson离开了Berkeley,而此时Joy和Haley开始对Unix的内核发生了浓厚的兴趣,在细心的Schriebman教授关照下,他们将来自 Bell实验室的经过了"五十次变化"磁带的修正和改进部分第一次成功地安装到了系统上。 他认真地研究了源代码,并建议完成几处小的改进,以在某种程度上解决内核瓶颈的问题?
        早期发行版本

        在人们对Pascal编译器上错误恢复工作感兴趣的同时,人们也开始提出了系统拷贝的需求。在1971年初,Joy完成恕?erkeley Software Distribution"的合并。 这个第一发行版包括Pascal系统,而且在Pascal源代码的一个难懂的子目录下,附上了编辑器ex。 过了一年,Joy作为发行组的秘书,寄出了大约三十份免费的系统拷贝。

        这时出现了一些ADM-3a终端,它们提供屏幕定址光标的功能,Joy最终开始编写vi,为Berkeley带来一种基于屏幕的编辑器,但很快他就发现自己遇到了麻烦。在学校里,经费捉襟见肘是常有的事,老的设备从不会立刻被替换掉,Joy没有进行优化和更新几个不同终端的支持工作,而是决定采用一个小的解释器以重画屏幕,从而加强屏幕管理,此解释器由终端特性描述所驱动,此项工作的后来的结果是产生了termcap。

        到1978年中期,软件发行版显然需要升级了,用户社团一直在不断扩大,在用户反馈意见的基础上,修改后的Pascal系统已明显变得更加健壮,并且它被分成了两个分支,以使其能运行在PDP-11/34s上,更新的结果就产生了"第二版Berkeley软件发行版",这一名称很快就被简称为2BSD,其中包含了增强的Pascal系统,vi和为几种终端而开发的termcap。 Bill Joy又一次单枪匹马地将各发行版集中在一起,回答用户的电话询问,并根据用户的反馈意见对系统中作了改进。过了一年,将近有75份磁带交付给了用户。 尽管Joy在随后的一年里转而工作于其他的项目,但是2BSD发行版的发行工作没有停止,而且越来越兴旺。 这一发行版的最后一版称为2.11BSD,这是一个完整的系统,至今仍运行在世界各个角落的几百台PDP-11上。

        VAX Unix

        1978年初,Richard Fateman教授开始寻找一台能够有较大地址空间的机器,以便他能继续在Macsyma 小组里的工作(最初开始于PDP-10上),那时刚问世的VAX-11/780满足了他的要求并且符合其财政预算,Fateman和其他十三个系里的同事共同提出了一份NSF提案,并将其他系的资金合并在一起,最终购买了一台VAX计算机。

        最初的VAX运行的是DEC的VMS操作系统,但系里已习惯使用Unix环境,并想继续使用Unix, 所以在VAX到来不久, Fateman得到了由Bell实验室的John Reiser和Tom London开发的将Unix移植到VAX的32/V的拷贝。

        尽管32/V在VAX机上提供了UnixVersion 7环境,但它不能很好地利用VAX硬件的虚拟内存能力,正象PDP-11系列中的早期机器一样,它是一种完全基于转换(swap-based)的系统。对于Berkeley的Mascsyma小组来说,缺少虚拟内存就意味着进程地址空间受限于物理内存的大小,在新的VAX机器上,最初物理内存为1 MB。

        为了减轻这个问题所带来的矛盾, Fateman与Domenico Ferrari教授进行了讨论,Domenico Ferrari教授是Berkeley系统委员会的成员,他开始调查让Fateman的小组为Unix写一个虚拟内存系统的可能性。Ferrari教授有一位学生,名叫Ozalp Babaoglu,他开始寻找一些关于在VAX机器上实现设置分页系统的方法。 由于VAX机缺少参照位(reference bits),因此他的工作变得非常复杂。

        当Babaoglu接近于完成他的第一个方法时,他与Bill Joy取得了联系,请Bill Joy帮助他理解Unix内核的复杂内容。 与Babaoglu的交流使Joy对其工作发生了兴趣,并帮助Babaoglu将代码集成到32/V中,后来又接着帮助进行调试工作。

        不幸的是,Berkeley仅有一台VAX机, 这台机器既要用于系统开发,又要用于一般的工作。因此,在圣诞节的假期后几个星期里,具有忍耐心的用户群体发现他们自己开始交替地登录到32/V和"虚拟VAX/Unix"系统上。他们在后一种系统上运行时有时会突然中止,几分钟后紧随着就出现了32/V登录提示信息。到1979年元月,大部分臭虫被解决,32/V便已被载入历史而废弃了。

        Joy看到32位的VAX很快会取代并淘汰掉16位PDP-11,于是开始将2BSD软件移植到VAX机器上,当时Peter Kessler和我移植了Pascal系统。Joy 移植了 ex和vi编辑器、C Shell和其它2BSD发行版中大量的小程序。1979年末,一个完整的发行版本被集成在一起。这个发行版本包括了虚拟内存内核,标准32/V实用程序,以及2BSD中的一些附加程序。1979年12月,Joy 首先发布了将近100份拷贝的3BSD,即Berkeley的第一个VAX发行版。

        Bell实验室的最后版本为32/V,以后来自AT&T的所有Unix版本,从最初的System III到后来的System V,都由注重稳定性的商业版本的不同组织管理。伴随着Unix的商业化,Bell实验室的研究员开始感到作为兴起的Unix研究的源头有些力不从心了。当研究社团继续修改Unix系统时,他们发现需要有一个组织能开发研究版。 由于Berkeley对Unix开发的介入很早,且具有发布基于Unix实用程序的历史,Berkeley很快步入并取代了先前Bell实验室的角色。

        DARPA 支持

        此时,在国防部高级研究项目署(Defense Advanced Research Projects Agency,DAPRA) 的规划者们的办公室里展开了一场对Berkeley工作起着重大影响的讨论,DARPA的早期成果之一是成功地建立了一个覆盖全国范围的计慊更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 现今大部分OS的SOCKET和TCP/IP的实现直接出自BSD,这也是BILL JOY被称为EDISON OF INTERNET的原因。他老人家读书时业余卖卖BSD的磁带,就一年曾收入25万。另外,传说中他一个WEEKEND就写出了VI,虽然他本人亲口否认了这个说法。
    • Anders Hejlsberg,微软.NET的首席架构师(ZT)
      ,编程语言设计和实现的顶尖高手。他一手做出了Turbo Pascal, 也是Delphi, J++(尤其是WFC),C#, 和.NET的主要作者。这些作品的名字足以为他立传。作为一个程序员,我在这样的大师面前实在无语。生子当如Anders的说。李维的<Borland传奇>里已详细讲述了Anders的传奇故事,我就不用费舌了。 Artima上有Anders谈C#的系列访谈 。MSDN上有一段Anders导游的录像 。有兴趣可以去看看牛人的丰采。
      • 因为怕link慢,我把<<Borland 传奇>>转过来.
        本文发表在 rolia.net 枫下论坛李维--Borland传奇
        李维声明
        以下的这篇文章内容是我个人的回忆以及看法,没有任何特别的偏见,许多的事情是根据我的记忆以及从许多人的诉说中得知的,也许内容不是百分之百的正确,不过我想这些内容有一定的可信度到是可以保证的。当然有一些事情确定的发生时间和顺序不一定都和我的记忆一致,不过我想大部份应该是相去不远的。当然各位如果知道确定的事件而我的记忆有误,那么我将非常欢迎您纠正我,我希望这些故事的经历能够一直陪我走下去,谢谢。

        一直想写一篇我个人在过去10多年来工作中经历的一些事情,以及看着一些我认为是伟大的工程师在这些日子中对于信息界的贡献。如果你和我的年龄差不多,那么你可能会对于这些内容很有兴趣,因为它们说明了当时许多软件的兴起和没落的过程以及原因。虽然这些事情已经距离我们很遥远了,但是我相信许多人仍然对于背后的故事有兴趣。如果你没有经历过那段美好的回忆,那么就把这些内容当成是一个有趣的故事来看吧。但是我想更重要的是让我们一起认识一些伟大的人物,我对于其中的许多人都非常的佩服,也非常的羡慕。我常常在想,如果我也有他们的环境,我是不是也能够和他们一样这么有成就呢?这些人对于以往都有重要的贡献,在未来也将仍然有重要的影响,因为他们都有一身不凡的技术。对于许多重要的人我都尽量的收集了他们的照片,让各位也能够看看这些优秀的工程师和杰出的人物。当然,如果各位也能够从这些内容中学习到失败的原因以及成功的经验,那么这篇文章就更有价值了。

        和Borland的缘由


        记得我在大学时第一个在PC上使用的软件便是SideKick,至今我仍然无法忘记这个让我津津乐道的软件,而Borland在当时也就是以SideKick成为全球知名的软件公司。不过Borland第一个奠立创业基业的软件却是我大二使用来交作业的Turbo Pascal。而Turbo Pascal也是第一个我听到关于Borland的有趣的故事

        当年Philippe Kahn (Borland的创使人)和Anders Hejlsberg到美国创业时,便由Anders以汇编语言撰写了Turbo Pascal的编译器,而Philippe则包办了Turbo Pascal其它的部份。在这两位人兄开发完Turbo Pascal之后,穷得快连登广告的钱都没有了。但是Philippe为了在Byte杂志(还记得这个著名的杂志吗?)刊登Turbo Pascal的广告,因此和Anders商量了一个方法,那就是一天他们约了Byte杂志的人到当时Borland的办公室讨论刊登广告的事情。

        当Byte的人到了Borland之后,Philippe,Anders和公司的助理小姐故意忙着接电话,接受Turbo Pascal的订单,并且告诉Byte杂志的人等一下。过了一阵子之后Philippe才进入房间向Byte的人道歉,说他们的Turbo Pascal受到市场的热烈欢迎,订单源源不断的到来,因此可能不需要在Byte杂志刊登广告了,接着Philippe向Byte的人展示Turbo Pascal这个产品。由于在当时的机器中Turbo Pascal能够在少少的RAM中常驻执行,又提供闪电般的编译速度,立刻让Byte杂志的人震惊在当场,凭着专业知识和丰富的经验,Byte的人也立刻知道这将是一个革命性的软件,因此马上希望Philip能够在Byte杂志刊登Turbo Pascal的广告,并且愿意以半价刊登。当然,Philip也立刻的答应了,于是一个革命性的软件Turbo Pascal终于在Byte杂志刊登出来了,售价49.99美元的Turbo Pascal立刻为Borland带来了大量的财富,Turbo Pascal也立刻的成为PC上除了基本的Basic之外最畅销的开发工具,也正式揭开了Borland影响PC开发工具10几年的序幕。

        在Turbo Pascal之后,Borland接着推出了SideKick这套软件,SideKick可以说是随后著名的内存常驻软件(TSR)的始祖,也是让Borland跨出开发工具界,让几乎所有PC使用者认识Borland的关键软件。当然SideKick也很快的成为了全球的畅销软件,继续的把Borland往顶尖的软件公司上推。

        而Turbo Pascal也成了我大二,大三撰写作业的最爱,几乎所有的作业都是使用Turbo Pascal完成的,当然其时Horowise的Data Structure这门课也是使用Turbo Pascal过关的,因此从那个时候开始我便非常喜欢Borland这家公司,慢慢的也开始对Borland有了特别的感情。

        大二时Microsoft也推出了Microsoft Pascal,但是它和Turbo Pascal的确是有一段差距,我使用了一次之后便把它丢到垃圾桶。稍后Borland也推出了Turbo Basic,我记得这个编译器非常的棒,编译速度就和Turbo Pascal一样,是一个非常有前途的产品。但是我不知道为什么它只有1.0,之后便和Microsoft Pascal一样消失了。我听说Microsoft和Borland互相交换条件,Microsoft不进入Pascal的市场,而Borland则退出Basic的市场。至于是不是真的我就不得而知了。

        在大二初次的接触到C语言,第一本阅读的书便是王兴隆先生写的C语言,也从此开始和C语言结下了渊源。平生第一个使用的C编译器便是Lattice C,不知道还有没有人记得。我还记得那个时候使用2个5又1/4磁盘抽换以便编译C程序的情景。稍后Borland终于推出了风行天下的Turbo C编译器,当然,从此之后Turbo C便成了不离身的工具,而Borland也藉由Turbo C这第三项畅销产品迈向了世界前10名的项尖软件公司。

        当完2年的兵之后,我在中研院首次使用了C++语言,第一个使用的C++编译器则是Zortech C/C++,这家公司稍后被Symantec收购成为Symantec C/C++的核心,这个故事稍后再说。后来Borland也推出了Turbo C/C++ 1.0这第一个C/C++编译器,但是在我和Zortech C/C++比较之后,还是觉得Zortech C/C++比较好,因此就继续使用Zortech C/C++。一直到Borland的Turbo C/C++ 2.0编译器推出之后,才逐渐成为C/C++语言的王者,而我也像以往一样把Zortech C/C++换成了Turbo C/C++。

        在1991年到Georgia Institute Of Technology念硕士时,终于使用自己的零用钱美金49.99购买了生平第一套的正版软件Turbo C/C++ 4.5,随后又购买了Borland Pascal。在毕业前的一个Quarter,Microsoft 推出了Microsoft C/C++ 6.0以及MFC 1.0,由于是第一个C/C++的Framework,因此也花了一些钱购买了一套以便了解MFC。但是在收到之后却很失望,因为Microsoft C/C++ 6.0仍然没有图形整合发展环境,还是在DOS下的整合发展环境,而且MFC 1.0以我的眼光来看又不好用,而且Microsoft C/C++ 6.0的C/C++最佳化编译器在其时是一个笑话,不但产生的程序代码效率不好,甚至会产生错误的程序代码,许多杂志也称Microsoft C/C++ 6.0是一个平庸的(Mediocre)产品。因此就把它丢在一边。在Microsoft C/C++ 6.0不久之后,Borland终于推了Borland C/C++ 3.0。而这套软件也开启了Borland雄霸C/C++编译器常达5,6年之久的序幕。

        Borland C/C++ 3.0推出之后由于拥有第一个在Window下的稳定的图形整合发展环境,而且它产生的最佳化程序代码也是Microsoft C/C++ 6.0望尘莫及的,因此很快的几乎所有的C/C++程序员转而使用Borland C/C++ 3.0。因此在那个时候有一个现象,那就是几乎所有的公用程序或是Shareware都是使用Borland C/C++开发的,许多硬件厂商的驱动程序也是使用Borland C/C++ 3.0来撰写的。

        1992年我取得Georgia Institute Of Technology的硕士学位之后最想进入的公司便是Borland和Microsoft,不过最后我还是决定回台湾工作。在此时Borland也进入了最巅峰的时期,因为Borland推出了Borland C/C++ 3.1。

        Borland在Borland C/C++ 3.0获得空前的胜利之后,并没有松懈下来,因为Borland知道Borland C/C++ 3.0还缺了一个最重要的胜利因子,那就是如同Microsoft的MFC一样的C/C++的Framework,因为Borland也看出了Framework将会是未来C/C++产品中最重要的一环科技。不过Borland此时面临了一个重要的十字路口,那就是到底要自己开发一个和MFC抗衡的Framework,还是要如何做。因为如果要自己开发Framework,那么势必要花上一些时间,但是Borland想趁Borland C/C++ 3.0如虹的气势再下一城,以便彻底击溃Microsoft C/C++。因此最后Borland决定向一家叫White Water的公司购买一套由这家公司开发的一个Framework,这套Framework便是后来鼎鼎大名的OWL的源流。而Borland也因为向White Water购买了这套Framework,因而也引进了一个日后非常重要的人物,那就是后来负责开发Delphi的一员大将 - Zack Urlocker。

        C/C++的光荣战役


        在Borland购买下White Water的C++ Framework之后,便更命为OWL(Object Window Library),并且很快的推出了以OWL 1.0为核心的Borland C/C++ 3.1。由于OWL比当时的MFC 1.0封装的更为完整和好用,再加入Resource Workshop可视化能力,以及Borland C/C++ 3.1自己最强劲的编译器和整合发展环境,因此立刻的风靡了全世界,其受欢迎的程度更是远远的超过了它的前一版本Borland C/C++ 3.0。

        由于Borland C/C++ 3.1的畅销,立刻让Borland在C/C++市场一举击溃了Microsoft C/C++,市场占有率超过了50%,是全球第一的C/C++产品,也把Borland推上了最高峰,成为全世界第三大的软件公司。

        很快的,我所工作的开发小组也立刻的以Borland C/C++ 3.1来开发系统,Borland C/C++ 3.1也是我使用过Borland最稳定的C/C++版本之一。也由于那个时候一天到晚都使用C/C++工作,因此就有了一些小心得。稍后我整理了一些东西便投稿到刚出刊不久的RUN!PC,也许是运气不错,RUN!PC很快的也注销了我的文章。就是这篇文章注销之后,台湾的Borland注意到了我,开始和我连络,并且从此展开了和Borland的互动。而Borland C/C++ 3.1也是第一套Borland免费送我的软件,当然代价就是希望我多写一些Borland产品的文章。

        接着Borland又计划推出Windows版的Borland Pascal,不过在Borland开发Borland Pascal For Windows 时,当时(现在也还是)最具盛名的Charles Petzold(我的第一本Windows 程序设计的书就是这位仁兄写的,相信许多人也是看他的书一路学来的)就说除了C/C++之外,Borland不可能做出能够在 Windows 下执行的Borland Pascal,不过很明显的,即使是Windows API的大师Charles也错了。Borland不但做出来了,而且Borland Pascal For Windows 还非常的畅销,当然Borland Pascal For Windows 也是后来Delphi的根基。

        当时的Borland可说是不可一世,不但产品大卖,而且日进斗金。Borland在Scotts Valley豪华的总部也是在那个时候由Philippe Kahn大手笔的花了一亿多美金搭建的(想想10年前的60多亿台币可以盖什么样的房子?)。不过也许是Borland太成功了,因此也开始让Philippe Kahn渐渐的养成了好大喜功,目中无人的态度,也种下了Borland开始走向衰退的因子。



        Borland 位于美国加州 Scotts Valley 总部


        不过在Borland最强盛的时期,当然也就是Microsoft最想痛宰Borland的时候,在这个时候发生了一个著名的事件和一个著名的虚拟人物。话说由于当时Microsoft的开发工具一直打不过Borland的产品,因此在Microsoft的开发工具刊物上便出现了一个作者不断的以文章嘲笑Borland,这个作者的笔名是Buck Forland。后来由于这位作者的文章内容以及他的笔名引起了当时Borland的不满以及大量Borland使用者的强烈抗议,因此稍后这位作者就突然的消失不见了。因此有许多人就推测这个作者应该是Microsoft的工程师,由于一直无法打败Borland的产品,脑羞成怒,因此才会以这个笔名来发泄。如果各位看倌到现在还摸不着头为什么这个笔名会引起轩然大波,那么请你试着把Buck Foland这两个英文字的第一个字母一对调就知道为什么了。现在各位是否会心一笑了?




        Philippe Kahn-Borland的创始人


        在Borland C/C++ 3.1大获成功之后,Borland却开始松懈了下去,并且开始走下坡。当然这有许多的原因,我所知其中最重要的原因有数项 :

        ■Philippe Kahn和当时Borland C/C++的产品经理闹翻了。这位Borland C/C++的产品经理的名字是Eugene Wang,他是一位非常聪明的中国人。他一手把Borland C/C++ 带到了世界第一的地位,并且在Borland C/C++ 3.1成功之后有了更伟大的想法,那就是 Eugene Wang 想在下一个Borland C/C++版本中完整的以OWL封装所有的Windows API,因为OWL 1.0虽然比MFC 1.0来得优秀,但是OWL的隐忧就是OWL尚未完整的封装所有Windows的API。此外Eugene还计划以OWL为核心,开发一个类似今日Borland C/C++ Builder的以可视化组件为开发方式的开发工具。请各位想一想,如果在当时Borland能够开发出这种C/C++开发工具,那么将会是一个多么可怕的产品,稍后Microsoft的Visual C/C++ 1.0只是能够在整合发展环境中自动产生MFC的程序代码就立刻的轰动了C/C++市场,造成了大量程序员转入Microsoft的阵营。即使是目前的Borland C/C++ Builder使用的Framework仍然是以Object Pascal以核心的组件Framework,而不是纯粹的C/C++程序代码。如果当时 Eugene Wang 能够做出他心中的下一版Borland C/C++,那么我想到现在Borland C/C++可能还是市场中第一的C/C++开发工具。不过很不幸的是,Eugene Wang 稍后和Philippe Kahn发生了争执,Eugene Wang 一气之下离开了Borland。而Philippe Kahn则认为Borland C/C++的地位已不可动摇,因此也没有想立刻的做下一版的Borland C/C++。这样一拖竟然浪费将近2年的时间。

        Microsoft Visual C/C++ 1.0在Borland C/C++ 3.1 2年之后推出,并且立刻获得市场好评。不但在编译器方面能够和Borland C/C++ 3.1相抗衡,在整合发展环境方面更大幅领先了Borland C/C++ 3.1,还能够自动产生MFC的程序代码,再也不是昔日的吴下阿蒙。直到此时Philippe Kahn才从梦中惊醒而急于开发下一代的Borland C/C++ 4.0,但是为时已晚,C/C++的开发工具市场从此就开始逐渐的被Microsoft蚕食了。

        Eugene Wang在离开Borland之后,立刻的被Symantec所网罗,稍后Eugene Wang也在非常短的时间之内为Symantec开发出了著名的Symantec C/C++。Symantec C/C++在当时被所有的技术刊物评比为拥有最棒的整合发展环境和最有创意的C/C++开发工具,从此可见Eugene Wang的功力。不过Symantec C/C++稍后也不敌Microsoft Visual C/C++,这个故事的原因在稍后四大C/C++编译器之争的段落中再详细的说明。

        我最后听说Eugene Wang跑去做生意了,并且在前几年写了一本教导科技人员如何面试的书籍。我,一直很痛心Borland失去了这么一位优秀的人材,我常想如果当初Eugene Wang没有离开Borland,那么历史就可能不是现在的这样了,Sign!!!

        ■Philippe Kahn大手笔的花了一亿多美金买下了Ashton-Tate公司和dBase。在当时许多人都批评Philippe Kahn做了不值得的事情,因为Ashton-Tate不值这么多钱。但是由于当时Borland多的是钱,因此Philippe Kahn也不多意。不过这并不是Borland走向逐渐走向衰败的主因,而是在Borland买下了dBase之后,并没有立刻积极的发展dBase For Windows,反而把dBase丢在一旁。这个原因便是当时Borland的另外一个和数据库有关的产品Paradox卖得也很好,因此Philippe Kahn并不急着打算开发dBase For Windows。不过Philippe Kahn忘记了一件事情,那就是当时在市场大量人口的dBase程序员需要一个好的Window版dBase,但是Philippe Kahn购买了dBase却不提供Windows 版的解决方案。因此当稍后Microsoft以极小的代价买下Fox这家公司,并且在数年之后推出FoxPro For Window,吸引了大量原先的dBase程序员以及Paradox的程序员之后,Philippe Kahn才警觉事情不对而充充忙忙的开发dBase For Windows。但是当dBase For Windows 推出之后,Microsoft早已推出了两个FoxPro For Windows 的版本,而占据了大部份的市场,dBase For Windows其势已不可为了。

        ■Microsoft开始向Borland挖角。由于Microsoft在许多的开发工具战役中一直被Borland打得灰头土脸。更何况Borland C/C++ 3.1几乎抢占了大部份的市场,因此Microsoft开始准备好好的对付Borland。但是由于其时Borland在编译器的技术领域领先了Microsoft数年之久,Microsoft无法在短时间之内赶上Borland,因此Microsoft决定使用最有效的方法立刻追上Borland技术,那就是直接挖角。因此稍后Microsoft的Visual C/C++小组有60%的成员是从Borland挖来的,这个举动不但立刻的让Borland流失了大量的优秀技术人才,也在数年之后造成了Borland控告Microsoft的导火线。不知道各位看到这里有什么感觉,或是没有感觉。不过我总是觉得Microsoft使用了不好的手段来竞争,并不是光明正大的击败Borland,而是使用了不公平的竞争手段。

        Philippe Kahn在这段时间不但让Borland C/C++被Microsoft Visual C/C++反败为胜,也痛失了几乎所有dBase的市场,更浪费了大量的金钱,和流失了大量的优秀人员。在这些重要的原因之下,Borland已经不可避免的开始走下坡了。

        我最后一次看到Philippe Kahn时是在1994年未于亚特兰大(Atlanta)参加国际Conference时,还和他打了一声招呼。后来Philippe Kahn离开了Borland,另外创立了StarFish这家公司,稍后StarFish也被Motorola并购。虽然Borland由于Philippe Kahn一些错误的决策而逐渐的从巅峰开始下降,但是Philippe Kahn也不愧为一个人物。因为Philippe Kahn能够和Bill Gates一直周旋数年之久,而同一时期的许多公司,例如Lotus都一一的被Microsoft所击败,因此Philippe Kahn还有一套的。此外Philippe Kahn也是唯一一个拥有工程师特性的Borland CEO,Philippe Kahn仍然重视技术产品和技术人员。但是Borland随后的CEO几乎都是Marketing,Finance或是Sales出身的人,这真让我怀念以往以产品和技术为优先的CEO了。

        看完了上面这段今人伤心的历史之后,再让我们看看当Borland在受到Microsoft Visual C/C++的强大冲击之后,如果思索反击之道。在这段期间也出现了令我敬佩的第一个Borland技术工程师,Carl Quinn。

        Carl Quinn在Microsoft Visual C/C++ 1.0推出之后,立刻奉命开发一个能够和MFC相抗衡的全新OWL,而Carl Quinn也是数年后JBuilder的JBCL Framework的灵魂开发人物。Carl Quinn不但负责开发OWL,也为Borland在组件Framework的技术领域立下了重要的贡献。由于Carl Quinn的投入,因此开启了OWL大战MFC,Borland C/C++缠斗Visual C/C++数年精彩好戏的序幕。

        Carl Quinn到现在我还记得和敬佩的人物,让我再一次的向他致敬,并且介绍他让大家认识。





        Carl Quinn-我第一个佩服的Borland工程师

        Borland C/C++的反击


        未完待续……

        --------------------------------------------

        火线全开

        Borland除了在开发工具市场和Microsoft热战之外,其时和Microsoft ,Lotus鼎足而立的Borland看到Microsoft和Lotus正在电子表格工具以及文书处理工具大战之暇,不思好好的集中资源开发新的开发工具和数据库工具(下一节会详说),也不甘寂莫的投入了大量的资源进入这个惨烈的市场。也许是当是Borland太有钱了,或是Philippe Kahn脑袋有问题,居然决定进入这个Borland陌生的市场,更何况在Borland投入时Lotus已现败象,市场已经慢慢的被Microsoft所一步一步的掌握了。

        Borland进入Office市场的第一个产品便是著名的Quattro Pro这个电子表格,虽然Quattro Pro是一个不错的产品,而且当时由Borland C/C++编译器所开发的Quattro Pro在执行效率上几乎是最好的,但是Borland没有想到使用电子表格的使用者是一般的办公室人员,这些人注重的是方便性和功能性,而不是最重视执行速度,这和开发人员是不一样的。Borland以开发者的心态来开发电子表格工具基本上是走错了方向。因此我记得在那段时间中,杂志评比Microsoft的Excel,Lotus的1-2-3和Borland的Quattro Pro时,在功能方面领先的都是Excel和Lotus,在执行效率方面领先的则是Excel和Quattro Pro。到了电子表格热战的未期1-2-3甚至比不上Quattro Pro,因此Lotus败走电子表格市场已是不可避免的结果了。

        不过Borland虽然赢了1-2-3,但是和Excel仍然有一大段的距离,Microsoft一统电子表格江山之势已不可摇,因此最后Borland在损失了大量的资源之后,Quattro Pro只能卖给Novell。除了Quattro Pro之外,Borland也投入了很多的资源秘密的开发一个代号称为Spring的文书处理程序准备和Microsoft的Word以及WordPerfect竞争,这可能是许多人不知道的。但是这个产品最后仍然无法问市而胎死腹中,在文书处理市场方面Borland不但浪费了时间,更虚掷了大量的资源。Philippe Kahn在Office产品方面消耗了Borland大量的金钱和时间,却落得铩羽而归,更连累了开发工具市场以及最有可能成功的数据库产品市场。

        另外一个和Borland无关的故事是关于Excel如何兴起的。话说当Lotus 1-2-3最盛的时期,Microsoft一直计觊觎这个市场,但是苦于无法开发一个能够和1-2-3相竞争的产品。有一次Lotus 1-2-3举办了一个Lotus 1-2-3的技术研讨会,由当时Lotus 1-2-3的首席工程师主讲。在Microsoft知道了这个技术研讨会之后,立刻派出了最好的程序设计师,在现场询问Lotus是如何开发1-2-3的并且也趁机询问这位首席工程师如何克服1-2-3在许多技术方面的难点,而这些困难处正是 Microsoft 的工程师无法克服的。

        当时在现场中Lotus的这位首席工程师虽然知道这些人是Microsoft派来的,而且询问的问题正是1-2-3许多关键的技术点。但是这位首席工程师凭借着多年开发经验,并且认为Microsoft不可能在短期之内追上1-2-3,因此就没有多做保留的回答了许多重要的问题。没有想Microsoft的这些程序员也是非常聪明的的人,在一经指点之后,立刻畅然全通,在短短的1,2个版本之后不但马上追上了1-2-3,在许多功能方面更是青出于蓝,1-2-3便逐渐失去优势了。我想这位1-2-3的首席工程师一定很后悔当时回答了关键的技术问题吧。

        结论 : 千万不要小看Microsoft,他是非常精于模仿的,也永远不要小看你的对手。

        数据库市场的失误


        当Borland全盛的时期,事实上也是发展数据库产品最好的机会。因为在当时Borland手握DOS最畅销的Paradox,又并购了Ashton-Tate而拥有世界大部份dBase的市场,后来又从 Digital 取得了真正的 RDBMS-InterBase,可以说是全世界数据库实力最雄厚的厂商。当时的 Oracle 和 Borland 比起来,简直是小巫见大巫,而 Sybase 更不知道在那里。如果当时 Borland 能够好好的掌握这个机会,并且极力发展数据库产品的话,那么现在Borland 就算不是世界第一的软件公司,也将是世界第二的软件厂商。

        可惜 Philippe Kahn 并没有看到这个在年代80未到90年代成长最快速的产品。说句笑话的是,如果当时Philippe Kahn的死对头Bill Gates早一点对 Philippe Kahn 说出Information At Your Finger-Tip』的话,那么 Borland 就可能是现在的 Oracle 了。

        说到数据库市场就不得不对 Microsoft 的眼光佩服,也可以看到Microsoft行销能力的强悍。当Microsoft以FoxPro For Window强占了开发者的数据库市场之后,又看到了一般使用者也需要使用简易好用的数据库管理工具。因此发展出了Access。但是当时在这种市场中,Paradox占有开发者的数据库大部份的江山,而一般使用者的数据库管理工具市场则由Lotus的Approach拔得先机。Microsoft为了扳回劣势,我还记得在当时Visual Basic 3的软件包中Microsoft附了一张优待卷,只要800新台币就可以买一套Access。这简直就是流血大拍卖,目标很明显,就是当时在市场中卖1万多元的Lotus Approach。果然,Microsoft此招一出,Approach便在市场被Access打得落花流水,很快的便失去了市场,也很快的退出了市场。从此一般使用者的数据库管理工具市场便逐渐由Access所取代。

        但是Borland并没有警觉到Access会继续的往开发者市场进功,因此仍然没有加紧在Paradox产品上开发,Borland总觉得以Paradox在市场的地位是无法轻易憾动的,而且Access的目标市场也不是Paradox的市场。但是Borland忘记了Microsoft非常散擅长模仿,因此在随后的Access版本中,Microsoft不断的为Access加入可程序设计的功能,因此也逐渐的吸引了一些Paradox入门使用者的市场,再加入FoxPro For Window又持续的强功开发者数据库市场,Paradox终于在背腹受敌之下也逐渐的败下阵来。虽然在未期Philippe Kahn已经对Paradox投下重兵,希望能够挽回Paradox的劣势,奈何时不我予,Paradox在奋斗了Paradox 6和Paradox 7的2个版本之后,终究难逃失败的命运。

        当时我看到Microsoft如何打击竞争对手时,我就和朋友开玩笑的说。Microsoft有天下无敌的3绝招,那就是『打不过你就模仿你(这让我想起电影秘密客(Mimic) ),再打不过就和你比流血,看谁流得久(这让我想起吸血鬼),最后如果再不行的话,那就挖光你的人(这让我想起电影 Other People's Money)』。Lotus就在Microsoft的前2个绝招下到地不起,而Borland还算是功力深厚的了,连中了3绝招,虽然不像Lotus和许多其它公司一样从此Bye-Bye,但也是受伤极重的了。

        ODBC和IDAPI之争


        当Microsoft在逐渐的击败他的竞争对手,并且拥有了大部份PC数据库市场之后,便慢慢的了解到掌握标准的重要性。此外Microsoft为了统一各应用程序之间不同资料的存取,因此开始制定存取资料的统一标准-ODBC。

        Microsoft更大的目的是为了准备和瞄准下一场的大战,那就是PC上的RDBMS产品。
        当然,Microsoft要一统资料存取的江山,Borland不同意,其时一心想从Microsoft扳回一城的IBM也不同意,而Novell更是害怕,因为Novell怕Microsoft成功之后,Netware会消失得更快。于是IBM,Novell和Borland以及一些其它的小厂便聚集在一起,决定也制定一套存取资料的标准接口来和Microsoft对抗,这个制定的资料存取标准便是IDAPI。此时也正式揭开了ODBC和IDAPI竞争的序幕。

        不过IBM,Novell和Borland的结合很快的就证明是失败的,因为就像稍后说明的一样,IBM在PC软件上的发展一直是三心二意,反反复覆,因此当IDAPI 1.0的规格出来之后,IBM这位老兄又失去了和Microsoft对抗的兴趣,于是就退出了IDAPI联盟。至于Novell就更不用说了,Novell对于和Microsoft一象是『说说可以,真打不行』,一定要找到一群厂商才敢和Microsoft对抗。Novell在眼看IBM推出之后,也马上不战而降,很快的就也退出IDAPI联盟,这个现象和稍后Novell对于和Borland秘密合作的Appware/AppBuilder计划如出一辙,都是虎头蛇尾,草草收场。

        在两个大ㄎㄚ临阵脱逃之后,Philippe Kahn仍然不畏惧Microsoft的竞争,还是以IDAPI 1.0的规格实作资料存取引擎,这就是我们现在使用的BDE/IDAPI和SQL Links的前身。当时IDAPI 1.0的功能规格比ODBC 1.0好得多了,我记得Delphi 1.0使用的BDE/IDAPI和SQL Links驱动程序也比当时慢得像乌龟的ODBC快上太多了。只可惜在IBM和Novell推出之后,其它的小厂也是一轰而散。因此Borland只能靠自己独自和Microsoft对抗。Borland能够以少量的资源一直对抗到Delphi 3的BDE/IDAPI才逐渐的被ODBC追过,也算是非战之罪了。怪也只能怪Borland意志不坚的盟友。当然由于IBM和Novell的行事做风是如此,在稍后许多能够和Microsoft一较长短的机会也因为如此而消逝,最后自食恶果,逐渐失去了PC的软件市场,再也无力和Microsoft抗衡了。

        现在呢Borland似乎记取了当时的错误, 正努力的在Linux上定义标准资料存取接口dbExpress, 我希望也祝福Borland能够成功.

        2004年3月10日 10:44更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 好贴!谢谢!
    • 1982 Stephen A. Cook(ZT)电话是416打头的.
      本文发表在 rolia.net 枫下论坛Stephen A. Cook


      Citation
      For his advancement of our understanding of the complexity of computation in a significant and profound way. His seminal paper, "The Complexity of Theorem Proving Procedures," presented at the 1971 ACM SIGACT Symposium on the Theory of Computing, Laid the foundations for the theory of NP-Completeness. The ensuing exploration of the boundaries and nature of NP-complete class of problems has been one of the most active and important research activities in computer science for the last decade.
      --------------------------------------------------------------------------

      Stephen A. Cook
      University Professor
      Department of Computer Science
      University of Toronto
      Toronto, Canada M5S 3G4
      Tel: (416) 978-5183
      sacook [at] cs [dot] toronto [dot] edu

      史提芬·A·古克(Stephen A. Cook)是計算機科學家,計算複雜性理論的重要研究者。

      1971年,在他的論文The Complexity of Theorem Proving Procedures,他整理了NP完備性的目標,亦產生了古克定理——布尔可滿足性問題是NP完備的證明。

      1982年,古克得到图灵奖。因為其論文開啟了NP完備性的研究,令這個範疇於之後的十年成為計算機科學中最活躍和重要的研究。

      古克現為多倫多大學的計算機科學和數學部門教授.

      其他的要多大的兄弟们写吧,是好是坏都行.更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 我上过Cook老头的课,人是真不错,课是真够难.他的网页上有他的讲义.从来不用课本
        • 给你贴点他的八卦
          本文发表在 rolia.net 枫下论坛———NP完全性理论的奠基人


          加拿大多伦多大学教授斯蒂芬.库克(Stephen Arthur Cook)因在计算复杂性理论方面的贡献,尤其是在奠定NP完全性理论基础上的突出贡献而荣获1982年度的图灵奖。但库克实际上是美国科学家,1939年12月14日生于纽约州布法罗(Buffalo),他的父亲是一名化学家,在著名的联合碳化物公司工作,同时在布法罗大学任教,有一份不错的收入。但库克的父亲喜欢农村的恬静生活和清新空气,因此在库克10岁时全家迁居到纽约州克拉伦斯的一个奶牛场。 在这里,少年库克可以与牛羊为伴,还学会了挤奶。在乡村中学,库克的数学成绩比较好,但那时他并没有梦想当数学家。库克的另一个爱好是下棋,这帮助他发展了逻辑思维能力。在克拉伦斯,当时出现了一位传奇式的英雄,那就是威尔逊.格莱特巴赫(Wilson Greatbatch),他发明了可植入式心脏起博器,挽救了世界上无数人的性命,使他远近闻名。库克对这位发明家也很敬仰和崇拜,暑假时曾到他手下去打工,帮他焊晶体管电路板。当时晶体管问世不久,是新鲜事物,库克对神奇的晶体管也很有兴趣,想当个电气工程师。1957年中学毕业后,库克离开克拉伦斯去上密歇根大学,专业是科学工程。一年级时他选了一门新开设的课程——程序设计,第一次接触计算机。作为作业,他编了一个Algol程序以验证哥伦巴赫猜想,在机器允许的范围内,每个大于3的偶数都是2个素数之和。这使库克开始对计算机科学发生兴趣。1961年库克获得学士学位以后,转入哈佛大学研究生院深造,第二年就取得了理科硕士学位。他接着攻读数学博士学位,原先的打算是研究代数学。然而这时他遇到了一些教师,对他产生了很大的影响,改变了他的兴趣和方向。首先是哈佛大学研究生院对新兴学科十分重视。虽然计算复杂性理论这一学科分支其时还处于萌芽与初创时期,它就邀请了这方面的一些先驱与奠基人,其中包括拉宾(M. Rabin,1976年图灵奖获得者)、哈特马尼斯(J. Hartmanis)和斯坦恩斯(R. Stearns,这两人是1993年图灵奖获得者)等人前来讲学或作报告。库克对他们所研究和探索的问题产生了极大的兴趣,从而把自己的研究也定在了这个方向。他的博士论文“论乘法的最小计算时间”(On the Minimum Computation Time for Multiplication)就是他涉足这一领域的初步尝试,但这个课题局限性太大,无法从中找出一般规律。这时,在哈佛大学应用科学研究所任教的美籍华人学者王浩的研究工作引起了库克的注意和启发了他。王浩是国际知名的数理逻辑专家和计算机科学家,他曾对图灵和计算理论进行深入研究并提出了图灵机的一种变形叫B机器(Bmachine)。B机器的特点是总共只有4条指令,机器不能自我修改,即不能抹去带上的记号。B机器比图灵机更加接近于实际机器,它能计算的函数正好是部分递归函数。当时王浩正致力于研究自动定理证明,即由计算机自己去证明定理,具体而言是证明谓词演算中的定理,这就涉及到可满足性问题(Satisfiable),即是否存在一个真假值的赋值,使得给定的公式成立。如果存在,那末就称这个公式是可满足的,否则就是不可满足的。一般谓词演算公式的可满足性问题,图灵早就解决了,他指出,甚至在无限的时间里,要想确定谓词演算中的某个公式是否可满足,在计算上都是不可能的。因此,王浩是从复杂性的角度去研究谓词演算的可满足性的。王浩的研究工作给了库克以极大的启发,他认识到,自动定理证明可以作为研究计算复杂性问题的一个很好的突破口。但是由于谓词演算涉及个体与群体,公式中包含所谓量词(quantifier),即全称量词all(universal quantifier, 用“V”表示)和存在量词exists(existential quantifier,用“З”表示),使研究变得复杂而困难。因此库克改从比较单纯和简单的命题演算公式的自动证明入手研究计算复杂性,果然获得成功:1971年5月,他在ACM于俄亥俄州的 Shaker Heights举行的第三届计算理论研讨会上发表了那篇著名的论文:“定理证明过程的复杂性”(The Complexity of Theorem Proving Procedures),在这篇论文中,库克首次明确提出了NP完全性问题,并奠定了NP完全性理论的基础,所谓“NP完全性”(NP-completeness)问题是这样一个问题:由于P =?NP问题难以解决,库克就另辟途径,从NP类的问题中分出复杂性最高的一个子类,把它叫做NP完全类。库克证明,任取NP类中的一个问题,再任取NP完全类中的一个问题,则一定存在一个确定性图灵机上的具有多项式时间复杂性的算法,可以把前者转变成后者。这就表明,只要能证明NP完全类中有一个问题是属于P类的,也就证明了NP类中的所有问题都是P类的,即证明了P=NP。库克的这一研究成果为研究P=?NP的科学家们指明了一条捷径和一个方向,不必再像大海捞针似地去盲目探索了。虽然科学家们沿着库克指明的这条“捷径”仍在艰难地前进,至今没有达到光辉的终点(P=?NP的问题至今仍未有结论),但学术界公认库克的NP完全性理论是对计算复杂性理论的一个重大贡献。库克的论文只证明了命题演算的可满足性问题是NP完全的,但在它的启发下,卡普(R. Kap,1985年图灵奖获得者)在第二年就证明了21个有关组合优化的问题也是NP完全的,从而加强与发展了NP完全性理论。

          库克在建立NP完全性理论时,为研究复杂性类之间的关系提出的方法,叫“复杂性归纳”(complexity reduction),用以比较问题的计算难度。库克所用的归约方法是多项式时间图灵归约,有时直接把它叫做库克归纳。其要点如下:假设所考虑的问题都已编码成字母

          表Σ上的语言(实例的集合)。设L1、L2是Σ上的两个语言,若存在以L2为oracle集的多项式时间图灵机M,其接受的语言为L1,则称L1多项式时间图灵机约到L2,记为L1≤prL2。这时,对X是否属于L1的判别可转化为至多|x|的多项式个元素是否属于L2的判别, 因此,l2εp便导致L1εp。从这种相对的意义上说,L1的计算不比L2难。≤Pr可以是定义在任何言类@上的一种二元前序关系,如果存在Lε@,对于任何L1ε@,都有L1≤PrL,则L就是@中(在多项式时间图灵归约下)“最困难的”,称其为@-T完全的。

          在库克归约的基础上,其化计算机科学家又用其化各种计算模型定义了其他一些复杂性归约,如多一归约、对数空间归约、r-归约、随机归约和真值表归约等。但库克归约仍然是最常用的归约方法之一。复杂性归约除了用于判定问题外,还可以用于函数和搜索问题。

          库克取得博士学位以后,在加州大学伯克利分校工作了几年,1970年转至多伦多大学。

          向库克颁发图灵奖的仪式是1982年10月25日在达拉斯举行的ACM年会上进行的。库克发表了题为“计算复杂性综述”(An Overview of Computational Complexity)的图灵奖演说,演说全面而系统地回顾了计算复杂性理论从萌芽到发展到成熟所走过的历程以及面临的新的挑战,还给出了上百篇有价值的参考文献,值得关心这一学科的人细细阅读。演说全文刊载于1983年6月的Communications of ACM, 400-408页,也可见《前20年的ACM图灵奖演说集》(ACM Tuning Award Lectures——The First 20Years:1966-1985,ACM Pr.),411-432页。

          库克的电子信箱为:

          sacook @ cs.Toronto.edu.ca更多精彩文章及讨论,请光临枫下论坛 rolia.net
          • 我现在还保留着他的讲义,不过真够难的.我的前修课拿A,到他那里头30分钟就被打懵了.人确实很好,而且他还多次获得undergrad每年一次颁发的best lecturer奖
            • 说到写作高手,不能不提Stephen A. Cook。他的文章当年就被我们的写作老师极力推荐,号称典雅文风的样本。库爷爷一头银发,身材颀长,总是面带谦和的微笑,颇有仙风道骨,正好和他的仙文相配的说。
    • 1988 Ivan Sutherland(ZT)
      本文发表在 rolia.net 枫下论坛Ivan E. Sutherland


      Citation
      For his pioneering and visionary contributions to computer graphics, starting with Sketchpad, and continuing after. Sketchpad, though written twenty-five years ago, introduced many techniques still important today. These include a display file for screen refresh, a recursively traversed hierarchical structure for modeling graphical objects, recursive methods for geometric transformations, and an object oriented programming style. Later innovations include a "Lorgnette" for viewing stereo or colored images, and elegant algorithms for registering digitized views, clipping polygons, and representing surfaces with hidden lines.


      电脑制图“大爆炸”

        1963年,伊凡.苏泽兰(Ivan Sutherland)在麻省理工学院发表了名为《画板》的博士论文,其互动式电脑制图的构想犹如给全世界投下了“一枚炸弹”。画板是一个实时的素描系统,使用者可以利用“光笔”,直接和电脑屏幕进行互动式交流。这个成就太伟大了,意义也极为深远,我们中的一些人,直到10 年后才开始领会它的全部价值所在。画板为我们带来了许多新概念,随便举几个例子,就可以说出动态图形、视觉模拟、有限分辨率、光笔追踪以及无限可用协调系统等等。画板可以说是电脑制图的“创世大爆炸”。   接下来的10年里,许多研究人员似乎对电脑制图的实时和互动层面失去了兴趣。相反,大多数人把创造力投入到脱机的,非实时的真实影像合成技术上。苏泽兰自己也稍稍偏离了原本的方向,转而研究图像逼真度,也就是要寻找能够让电脑像变得栩栩如生、刻划入微的方法。这种研究的重心完全放在阴影、明暗、反射、折射、隐蔽的物体表面等等诸如此类的问题上。绘制精美的国际象棋棋于和茶壶成了后画板时代的象征。   就在同一段时间里,我越来越觉得,人类如何能够简单而轻松地表述他们的图形构想,这是一个比机器能否合成如照片般逼真的影像重要得多的问题。在好的人机界面设计中,电脑应该能够理解不完整的,模糊不清的想法——这类想法常常会在任何一个设计的初始阶段出现——而不是只懂得那些以比较完整和连贯的方式表达的复杂化的,己成形的东西。在电脑上实时追踪手绘草图,为我提供了一个绝佳的领域,我得以在这一领域开展研究,把电脑制图作为一种动态更强的、互动性更好的而且表达能力更佳的媒介来加以理解,并推动这种媒介的发展。   我的一个至关重要的工作思想是,你必须了解一个人的绘图“意识”。如果一位用户慢慢地画了一条轻轻的、但似乎是有意画出的曲线,电脑会假定他或她就是要画这样一条曲线,但是假如用户很快画了一条一模一样的曲线,很可能他或她原本打算画的是一条直线,却不小心画歪了。假如我们只根据这两条曲线完成后的实际形状、而不是用户描绘线条时的状况来判断,那么这两条曲线看起来完全一样。但是,用户的绘图动作却显示出两种截然不同的意图。而且,由于每个人画画的风格都不相同,表现出来的绘图行为也会因人而异。因此,电脑必须学习掌握每个用户的绘图风格。   30年后,苹果公司的产品“牛顿”牌掌上型电脑(Newton)体现了同样的思想。它能根据使用者的书写风格,辨认出他的笔迹(尽管效果还不如人意)。那些花了较长时间在牛顿电脑上写字的人,似乎感觉更满意一些。   电脑辨认粗略绘出的形状及物体的潜力,使我对电脑制图技术的思考从线条而更多地转向了“点”。在一张草图上,线条之间的区域或被线条围起来的部分是最重要的部分,从中可以了解草图的意义。  就在这段时间里,施乐公司的帕洛阿尔托研究中心也发明了着重形状识别的电脑制图技术。在这种技术中,图像作为庞大的点的集合而被存储和显示,不规则区域在此过程中得到处理,变得规则起来。我们中的一些人当时得出结论,认为互动式电脑制图技术的未来将属于与电视相似的光栅扫描显示器,而不是 “画板”这类勾画线条的机器。光栅扫描系统能把在电脑存储器中存储的影像描绘在一个显示装置上,而在过去,则是靠把阴极射线管的电波水平和垂直地进行交叉扫描,如同用腐蚀法蚀刻一幅图画一样,电脑制图的基本元素过去一直都是线条,现在变成了像素。

        像素威力大

        就像比特是信息的原子一样,像素可视为图形的分子。(我没有把像素称为图形的原子咽为通常一个像素由不止一个比特来代表J电脑制图人员发明了“像素”这个词,它是由“图像”(picture)和“元素”(e1ement)两个词缩合而成的。   我们可以把一个图形想象成许多行和许多列像素的集合,就好像空白的填字游戏图一样。对于任何一个特定的单色图像(monochrome image),你都可以决定要用多少行和多少列来构图。你用的行和列越多,每个方块的面积就越小,图形的颗粒就~越精细,效果也就越好。想想看,假如你把这样的格子覆盖在一张照片上,然后给每一个方块依明暗度的不同标出一个数值,那么完成了的填字游戏图将会布满一串串数字。   假如图形是彩色的,每个像素就会带有3个数字,通常这3个数字要么代表红色、绿色和蓝色,要么代表亮度(intensity)、色调(hue)和色彩饱和度(saturation)。我们在小学里都学过,红色、黄色和蓝色,并不是三原色。加色三原色,也就是我们在电视机里看到的,是红色、绿色和蓝色;而减色三原色,也就是我们在彩色印刷品上看到的,是洋红(magenta)、青色(cyan)和黄色。它们都不是红色、黄色和蓝色。   如果画面是运动的,我们就对时间进行取样——就好像在电影中分出一个个画面一样。每个样本即为一幅画面,也就好比另外一个填字游戏图,如果将其罗列在一起,以足够快的速度连续播放,就会产生运动流畅的视觉效果。你平日很少见到动态图形,或者只能在小小的视窗上显示影像画面,原因之一就是很难快速地从存储器中取得足够数量的比特,然后以像素的形式把它们显示在电脑屏幕上(只有每秒产生 60——90幅画面,画面上的动作才会流畅,不再闪动不己)。在这方面,每天都不断出现速度更快的新产品或新技术。   像素的真正威力来源于它的分子本质。像素可以成为任何东西的一部分,从文字到线条到照片,无一不可。“像素就是像素”,道理就跟“比特就是比特”一样正确。只要有足够的像素,每个像素又有足够的比特(不管是黑白的还是彩色的),你都可以在目前的个人电脑和工作站上,获得非凡的显示效果。然而,这种基本的网格结构决定了,在具有很多优点的同时,它也必然存在一些缺陷。  像素一般需要庞大的存储容量。你用的像素越多,每个像素内含的比特数目越多,你也就需要越大的容量来存储它们。常见的全彩屏幕共有1000X1000个像素,需要容量为2400万比特的存储器。1961年,当我还在麻省理工学院读大学一年级时,存储器的价格大约是每个比特:美金。今天,2400万比特不过只值60美金,这意味着,尽管以像素为基础的电脑制图技术对存储容量的胃口很大,我们却多少可以把心放下。   仅仅在5年以前,情况还不是这样,人们为了省钱,尽可能减少每个画面所用的像素和每个像素需要的比特。事实上,在早期的光栅扫描显示器上,每个像素常常只占用一个比特,由此给我们留下了一个特殊的问题:锯齿状的图形(jaggies)。

      无法接受的锯齿图

        你是否曾经有过这样的困惑:为什么我的电脑屏幕上会出现一条条锯齿线?为什么金字塔的图像看起来仿佛歪歪扭扭的宝塔?为什么大写的E、L和T在屏幕上挺像样,而S、W和O则好像蹩脚的圣诞节饰物?为什么曲线看起来总像是中风病人画的一样?   个中缘由就在于,每个像素只用了1个比特来显示图像,结果就出现这种楼梯效应(staircase effect) 或称空间阶梯,只要硬件和软件生产商肯把更多的比特用在一个像素上,并且运用一点数字计算来解决这个问题,这一现象就绝对可以避免。   那么,为什么我们不让所有的电脑显示器都带有“防锯齿”功能呢?借口是这样会消耗大多的计算能力。 10年前,我们或许还会接受这个论点,即电脑的计算能力最好是用在别的地方;此外,当时用以防止锯齿现象的中间灰度技术还不像今天这么普遍。   不幸的是,消费者已经被训练得对锯齿图像习以为常了,我们甚至似乎已把这类图像变成某种吉祥物了,就好像60和70年代的图形设计人员经常用滑稽的磁性活字体来创造出“电子”的感觉一样。到了80 年代和90年代,设计人员又如法炮制,以夸张的、阶梯状的印刷体来表现“电脑化”。今天,无论是线条还是字符,都能达到完美丽流畅的印刷效果,别让任何人告诉你说这一点无法做到。

      目标背后的神奇

        1976年,美国高级研究计划署控制论技术中心软件部门的一位主任克瑞格.费尔兹(后任高级研究计划署署长),委托纽约一家电脑动画公司制作了一部电影,描绘一个叫做达尔玛拉的虚构沙漠小城的景象。这部动画片选择一架直升飞机的座舱作为观察点,这架直升机在小城上空盘旋,时而俯冲掠过街道,时而拉起俯瞰全城,时而走访社区邻里,时而又贴近观察建筑物。他们模仿的是《小飞侠》(Peter Pan)这部 电影,目的不是为了欣赏沙漠小城的景色和建筑,而是为了探索信息世界。其想法是:假定你设计了这个小城,而且好像松鼠储藏核桃一样,把数据储藏在特定的建筑物中,从而构筑了信息的邻里环境。随后、你可以乘坐魔毯,飞到你储存数据的所在,检索你所需要的信息。   古希腊诗人凯奥斯岛的西摩尼得斯(Simonides of Ceos,公元前556一468年)以非凡的记忆力闻名于 世。有一次参加宴会的时候,他刚刚被叫出宴会厅,大厅的房顶就整个坍塌,在这场横祸中惨死的宾客都肢体破碎、难以辨识,而西摩尼得斯却可以根据此前宾客所坐的位置加以指认。他的故事表明,把需要记忆的材料与头脑中的空间形象的许多特定的点联系起来,可以帮助我们回忆。西摩尼得斯使用这个技术以记忆长篇讲槁。他先把讲稿分成几个部分,每一部分都与一个神殿里的物体及其位置结合起来;等到发表演讲的时候、他重新造访脑海里的神殿,以井然有序和容易理解的方式,唤出他想表达的看法。早期到中国传教的耶稣会教士称这种过程为建构“心灵的殿堂”。   这些例子都牵涉到在三维空间里漫游,存储和检索信息的过程。有些人对此很在行;有些人则不然。  在二维空间里,我们大多数人都比较能干。想想你书架正面;的二维空间吧。要找任何一本书,你可能只要径直走到那本书“面前”就可以了。你也许会记得它的大小、颜色、厚度及装订方式。如果是你亲手把书放在“那儿”的,你当然会更清晰地忆起这一切。再杂乱的桌面、使用桌子的人都能对之了如指掌,因为可以说:杂乱是由他一手造成的。最糟糕的事情,莫过于叫来一位图书管理员,让他按杜威十进分类法(Dewey decima1 system)重新把书架上的书排列一遍,或找到一位女佣帮助你清理书桌。你会突然变得糊涂起来,不知道东西都放在什么地方了。   基于这类观察,我们开发了一种叫做“空间数据管理系统”的东西。空间数据管理系统包括了一个高及天花板、占据整面墙的全彩显示器,两台附属的桌面显示器;八度的音响;一把装满各种仪器的埃姆斯椅(Eames chair)以及其他各种装备。它为用户提供了如沙发般舒适的界面,用户可以在幻想中途巡于数据之中,从一个橱窗般大小的显示器向外凝视;也可以自由地伸缩或摇动镜头,以在一个虚构的二维空间“数据乐园”里神游。用户还可以沏览个人档案、通信、电子书、卫星图,以及各种崭新的数据形式,例如名演员彼得.福尔克(Peier Falk)在《神探科伦坡》中的表演片断,或是54000幅有关艺术和建筑的静态图片收藏。   “数据乐园”本身是由一组小图像构成的景观,每个小图像都表明了自己的功能或描绘了所代表的数据内容。例如,在一个台历图像背后可以弹出用户的日程表。如果用户驱动系统进入到一个电话图像中,空间数据管理系统就会开启一个电话程序并附上相关的私人电话号码本。“图标”(icon)就是这样诞生的。我们曾经半真半假地打算使用“标记”——同来描述这种小图像,因为icon在字典上的意思并不那么贴切,但icon一词还是流传下来。   这些邮票般大小的图像不光指明了信息内容或自身的功能,而且每个图像还拥有各自的“位置”。这就好比在书架上找书一样,当你想检索某样东西时,你可以直接走向它所在的地方,同时想起它的确切位置、颜色、大小,甚至它可能发出的声音。  空间数据管理系统大大领先于它产生的时代,直到10年后,个人电脑诞生,它的一些观念才成为现实。今天,所有的电脑都离不开图标,人们把垃圾桶、计算器和电话筒等图像当作屏幕上的标准配件。事实上,有些系统直接把屏幕称作“桌面”,唯一不同的是,今天的 “数据乐园”不会顶及大花板、占据整面墙,而是一股脑儿挤进了“视窗”之中。

      挤进视窗中

        有一种现象总是给我留下深刻的印象:聪明的产品命名,能够帮助产品大发利市,并给消费者带来完全不同的想象空间。当年IBM决定把它的个人电脑命名为pc 真是神来之笔。尽管苹果电脑比其早上市4年还多,pc的名称现在却已成为个人计算的同义语。同样地,当微软决定将其第二代的操作系统取名为“视窗”的时候,这聪明的一招,使这个名词从此永远归它所用;而实际上早在1年多前,苹果公司就开发出了更好的视窗,而且许多工作站生产商也已经广泛地使用了视窗。   视窗所以存在,是由于电脑屏幕很小。使用视窗后,无论在任何时间,都可以利用一个狭小的工作空间,同步进行不同的流程。《数字化生存》全书都是在一个对角线只有9英寸长的屏幕上写成的,没用任何纸张,当然出版商在编辑和制作过程中所需的纸张除外。对大多数人来说,使用视窗就好像骑自行车一样;你甚至都不记得自己学过骑车,你只是上来就用。

      给电视开扇窗

        视窗还有一个有趣之处:它暗示了未来电视的发展方向。在过去,美国比其他国家都更加强调,电视影像应填满整个屏幕。但是,这要付出额外的成本,因为并非所有的电影和电视片都被制作成相同的长方形格式。   事实上, 50年代初期的时候,电影业曾经有意识地朝宽银幕方向发展。当时出现了“全景电影系统”, “超级全视系统”,“超级全景技术系统”, 35毫米“全视系统”,以及我们今天仍在使用的“电影宽银幕系统”。这一发展是为了抑制早期电视的扩张。今天电视荧幕3:4的高宽比,源自于第二次世界大战之前的电影银幕规格,并不能与“电影宽银幕系统”相匹配,也就是说,过去40年来制作的大多数电影的格式都与电视不合。   欧洲的电视业者以所谓的“上下加框”的办法来解决荧幕高宽比的差异问题。他们把荧幕的上下两边都用黑框盖住,因此留下来的放映区域正好符合电影银幕的高宽比。通过牺牲一些像素,观众得以看到忠实地重现出原本的画面形状的影片。事实上,我认为“上下加框”的效果十分令人满意,而且这样做还有一个额外的优点:它在影像上下各自放置了一道鲜明的水平黑边,从而取代了电视机原本的弧形塑料边;否则的话,影像的界限就不会那么明确。   我们在美国则很少这么做。当我们要把电影转换成录像带时,采用的是“摇摄及扫描”(pan and sca- n)的做法,把宽银幕电影压缩为3:4的长方形。我们不是真的把影像压扁(尽管我们有时会压缩标题和工作人员名单字幕)。相反地,在转换过程中,当影片在机器中转动时(机器通常是一台飞点扫描器),操作员会以手控方式,把一个高宽比为3:4的窗口套在宽得多的电影画面上,借着上下左右调整移动该窗口,来捕捉每一幅电影画面中最直接相关的内容。   而有那么一些电影制作人,不同意这种做法,例如伍迪.艾伦,但是大多数人似乎都无所谓。这种“摇摄及扫描”的办法,在某些情况下会无可救药地失败,最好的例证之一就是《毕业生》(The Graduate)。 影片中有一场戏是达斯汀.霍夫曼与安.班克罗夫特各据银幕的一端,分别宽衣解带,操作员根本无法把他们俩同时放在录像带的同一幅画面中。   日本和欧洲一直都在推动发展一种更新、更宽的电视荧幕,这种荧幕的高宽比为9:16,而美国的高清晰度电视竞争厂商也胆小地尾随其后。然而,9 :16的高宽比实际上也许比3:4还要糟,因为所有现存的录像材料(其高宽比为3 :4)在放映的时候,都会在9 :16的荧幕左右两旁造成垂直的黑边,也就是所谓的幕布。幕布不仅比“上下加框”更难以达到视觉效果,而且,即使你想用“摇摄及扫描”的方法来补救,都做不到。   我们应当把高宽比作为一个变数。当电视有了足够的像素时,采取视窗方式具有非比寻常的意义。 10 英尺银幕与18英寸荧幕的收视经验开始合而为一。事实上,将来,当你拥有极高的显像分辨率和上及天花板、占满整面墙的超大显示器时,与小屏幕上的画面不同,你也许会把你的电视影像放在大屏幕上,就好像房间里的植物一样,成为室内装饰的一部分。整面墙都可以成为电视画面。更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1970 J.H. Wilkinson 代数特征值问题(ZT)
      本文发表在 rolia.net 枫下论坛J.H. Wilkinson


      Citation
      For his research in numerical analysis to facilitiate the use of the high-speed digital computer, having received special recognition for his work in computations in linear algebra and "backward" error analysis.

      -----------------------------------------------------------
      因在利用数值分析方法来促进高速数字计算机的应用方面的研究而获奖

      --数值分析专家和研制ACE计算机的功臣
      大家知道,计算机的应用有两大领域:数值应用领域和非数值应用领域。所谓数值应用,是指解各种方程和函
      数,求得它们的数值解,处理对象是数值数据;所谓非数值应用,主要指大家熟悉数据管理和数据处理,其他如
      过程控制、定理证明、推理等也属这一类,处理对象是非数值数据。早期的计算机由于尚未解决字母、字符的表
      示和没有大容量的存储器,只能用于科学与工程计算。非数值应用是在20世纪50年代中期发明了字符发生
      器(Character Generator)和磁盘存储器以后才逐渐发展起来的。在数值应用方面,计算机实际上只能做最简单的
      加、减、乘、除等四项运算,并不能直接解比如微分方程或求各种复杂的函数;遇到它们,要先由数学家利用各
      种数学变换方法把它们转变为一系列算术运算,这?quot;数值分析"或"计算方法"。由于20世纪五六十年代计算机以数值
      应用为主,因此1970年的图灵奖授予了一位在发展数值分析技术和方法方面作出了杰出贡献的数学家就不足为
      奇了,他就是英国皇家学会院士、著名的数值分析专家詹姆斯.威尔金森 ( James Hardy Wilkin -son,1919-1986 )。
      但令人惊奇的是, 这位数学家在建造由图灵设计的 ACE 计算机中竟然扮演了举足轻重甚至最关键的角色。

      威尔金森1919年9月27日生于英国肯特郡的斯特洛特(Strood, Kent)。 他的初等教育阶段是在位于伦敦东郊的
      罗切斯特的一所由著名的数学家约瑟夫.威廉姆松爵士(Joseph Williamson)创办的数学学校中度过的。 然后在剑
      桥最负盛名的"三圣学院"(Trinity College)接受了严格的教育,成绩出众,16岁时获得三圣学院的最高荣誉 --Trinity
      Major Scholarship,并因而免试进入剑桥大学。 1939年威尔金森获得一等荣誉奖章从剑桥毕业时年方19。 由于第二
      次世界大战,他毕业后进入剑桥数学实验室的军械研究所 (Armament Research Department ) 工作,研究与解决有关弹
      道方面的问题,开始对计算数学发生兴趣。 也是在那里,他遇到了他未来的终身伴侣、也在剑桥获得过一等
      荣誉奖章的女数学家维婀(H. N. Ware),他们于1945年结婚。

      战后, 他进入英国最著名的学术机构之一国家物理实验室NPL的数学部, 一半时间在台式计算机处工作,
      一半时间协助图灵设计计算机ACE。 关于ACE计算机的研制情况,我们在前面介绍图灵时已经简单提到过了,这
      里不再赘述。 需要指出的是,在图灵离开NPL,由威尔金森接手负责该项目后,威尔金森总结了前阶段设计与实
      施ACE的经验教训,果断地采取了两项措施,一是与工程小组加强联系、交流、沟通、合作,改变过去那种隔绝甚
      至对峙的局面,二是决定放弃原先过于庞大的计划和过于庞大的规模,改搞试验性的ACE,也就是Pilot ACE。
      当图灵离开NPL时,他设计的ACE已是"第八版",单是水银延迟线存储器就要用200根延迟线。威尔金森实事实是
      地估计了延迟线加工上的困难和它工作的不可靠性,决定将Pilot ACE退回到ACE"第五版"的基础上,把延迟线减少
      到32根,把整个机器的设计目标降到能用高斯消去法解8-10个联立线性方程。幸运的是,这时,原先负责工程的托马
      斯也离开了NPL,接替他的是老资格的无线电工程师考尔勃洛克(F. M. Colebrook), 他虽然对脉冲技术并不熟悉,
      却擅长项目组织,主动邀请威尔金森在内的4个高级设计师以半固定的方式参加电子学小组的工作,从而进一步
      密切了双方的关系。同时,新调来的电子学小组的技术负责人纽曼(E. Newman)是大战时参加过H2S机载雷达系
      统工作的专家,同威尔金森相处得也很好。这样,工程进展明显加快,1950年5月10日,Pilot ACE第一次正式试运行
      成功,1950年11月,NPL举行了隆重的"开放日"(Open Day),邀请新闻界和一批知名的VIP(Very Important Person)
      参观ACE,ACE成功地表演了三个程序:由参观者任意给出一个6位数,机器判定它是否是素数,如果不是素数,给出
      其一个因子;由参观者任意说出0-9999年中的任意一个日期,由机器给出这天是星期几;由机器跟踪光线通过一组
      棱镜后的偏振光。ACE计算机研制成功以后,由EEC公司(English Electric Company)批量生产了约30台,其商业
      名称为DEUCE。DEUCE和剑桥大学研制的EDSAC计算机一起,使20世纪50年代的英国计算机技术处于世界领先水
      平,能和美国平起平坐。第一台Pilot ACE现在在伦敦的肯辛顿蒲Р┪锕荼4妗⒄估馈?984年7月13日,在滑铁卢
      大学举行的一次国际学术会议期间,威尔金森接受了BYTE杂志安排的一次采访,详细回忆了ACE计算机诞生的过
      程,有兴趣的读者可参阅该刊1985年2月,177-194页,"一台计算机的诞生"(The Birth of a Computer)。

      当然,作为一名数学家,威尔金森的主要贡献还是在数值分析方面,尤其是在数值线性代数方面。1960年,他提出"
      向后误差分析法"(backward error analysis),成为数学误差理论中最基本的方法之一。向后误差分析是一种先验性估
      计,下面我们对它作一简要介绍。
      假设结果x由已知量(原始数据或先前已算出的量)a1, a2, a3,…,an经过基本算术运算确定,写成
      x = ? (a1, a2, a3, …, an)
      由于计算中产生舍入误差(rounding error),实际算出的值a与准确值x不同。向后误差分析法把舍入误差与导出
      a的已知量a1, a2, a3, …, an的某种摄动(即微小误差)联系起来,即对某个ai引进摄动量εi,使得由浮点运算得到等式:
      a = ? (a1 + ε1,a2 +ε2, a3 +ε3, … ,an +εn)
      再推出这些εi的界(εi不是唯一的,且无须求出εi的具体值),然后再利用摄动理论(Perturbation theory)
      估计最后舍入误差|x-a| 的界。
      向后误差分析是威尔金森20世纪60年代初在研究矩阵计算的误差时作了系统分析而提出的,目前是计算机上各种数值
      计算的误差分析手段。
      20世纪60年代,威尔金森在NPL组织开发了一个用以测试系统浮点运算能力的基准程序(Benchmark)叫Whetstone。
      Whetstone规模不大,对存储器容量要求较小,主要使用高速缓冲存储器,适用于评估小型的科学、工程应用系统。
      Whetstone除了可以测试机器的硬件性能外,还可以用来评估系统数学程序集,语言编译器及其处理效率,其测
      试结果用KWIPS(每秒执行1 000条Whetstone指令)或MWIPS(每秒执行1 000 000条Whetstone 指令)表示。1976
      年Whetstone 被作为英国的官方测试标准公布,已有Fortran、Pascal等多种版本,常被用作工作站的测试程序。

      1976年,威尔金森积极参与并推动成立了一个非赢利性的名为NAG的公司(Numerical Algorithms Group Ltd.)以开发
      和推广数值分析和统计分析的软件包,吸引了世界上许多大学和政府研究机构的专家共同合作。NAG已经为68种型号的计
      算机配备了Fortran库,Ade、pascal、C的通用数学库也已上市。NAG推出的Mark 15版数学库中已包括用户可调
      用的程序模块1 045个,是同类数学库中规模最大也最先进的一个,威尔金森在其中发挥了重要的作用。此外,在由美国
      阿尔贡(Argonne)实验室NATS(National Activity to Test Software)小组于1972年开发的EISPACK软件包计划中,威尔
      金森也曾经积极参与并贡献过力量,目前它是计算矩阵特征值最常用的数学库。


      威尔金森出版的几部数学专著,如《代数处理中的舍入误差》(Rounding Errors in Algebraic Processes, Prentice-Hall,1964),
      《代数特征值问题》(The Algebraic Eigenvalue Problem, Clarendon Pr.,1965.中译本由石钟慈等译,科学出版社出版),
      《自动计算手册卷2:线性代数》(Handbook for Automatic computation, Vol.2, Linear Algebra, Springer,1971,与C. Reinsch
      合著),都在学术界有很大影响,被视为经典和必备参考书。

      威尔金森从1946年进入NPL到1980年正式退休,为NPL服务长达34年,其间曾长期担任NPL的学术长官,并被命名为"有
      特殊贡献的首席科学长官"(Special Merit Chief Scientific Officer),这在英国的行政机构中是一个极高而极少被授予的
      荣誉称号。这除了由于其个人的学术上的造诣和贡献外,还由于他在NPL营造了一个浓厚而民主的学术空气,能使
      有才华的年青人脱颖而出,敢于创新。在很长时间里,NPL都是欧洲乃至全世界最有创新精神的研究所之一,也是水
      平最高的研究机构之一。例如,20世纪60年代在开展计算机联网技术的研究中,NPL的数据网络计划(Data Network
      Project) 中就率先采用了"包交换技术"(packet-switching),成为当今包括Internet在内的所有各种类型计算机网络信息传输
      的技术基础。把"报文分组"通俗而形象地叫做"包"就是NPL当时的自动化部的年青主任戴维斯(D. W. Davies)的创造。

      威尔金森除了获得图灵奖以外,还有许多荣誉与奖励。1963年剑桥大学授予他名誉博士学位;1969年他当选为英国
      皇家学会院士;1970年工业和应用数学会(SIAM)授予他冯.诺伊曼奖;1987年他获得美国数学会的Chauvenet奖。著名
      的美国阿尔贡国家实验室曾聘威尔金森为荣誉高级研究员并两次向他授奖。
      威尔金森在接受图灵奖时发表了题为"一个数值分析家的若干意见"(Some Comments from a Numerical Analyst)的演说,刊
      载于Journal of ACM,1971年4月,137-147页,也可见《前20年的ACM图灵奖演说集》(ACM Turing Award Lectures--The
      First 20 Years:1966-1985,ACM Pr.),243-256页。更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1966 A.J. Perlis ALGOL语言和计算机科学的"催生者(ZT)
      本文发表在 rolia.net 枫下论坛A.J. Perlis


      Citation
      For his influence in the area of advanced programming techniques and compiler construction.

      艾伦.佩利(Alan J.Perlis)由于在ALGOL语言的定义和扩充上所作出的重大贡献,以及在创始计算机科学教育,使计算机科学成为一门独立的学科上所发挥的巨大作用而成为首届图灵奖当之无愧的获得者。

      佩利1922年4月1日生于美国宾夕法尼亚洲的匹兹堡。在卡内基理工学院(现卡内基-梅大学)学的专业是化学,1942年毕业取得学士学位。因当时还处于二次世界大战期间,而且在珍珠港事件后美国已宣布正式参战,因此佩利被应征入伍,在空军服役。战后他进入加州理工学院研究生院继续深造,改学数学,于1947年取得硕士学位,然后又到麻省理工学院(MIT)攻读博士学位,于1950年取得该学位。1951年他在美国陆军军械部设在马里兰州的阿伯丁试验基地内的"弹道研究实验室"(冯.诺伊曼曾在该研究实验室当顾问)干了一年,然后回到母校MIT参加"旋风"(Whirlwind)计算机计划,为"旋风"编制程序。为了说明佩利参与"旋风"计划的意义,我们先简要回顾一下计算机诞生初期的发展历史。

      大家知道,世界上第一台计算机叫"ENIAC"(这是Electronic Numerical Integrator
      and Computer的词头缩写,意为"电子数字积分器和计算机",是宾夕法尼亚大学莫尔学院(Moore School)根据上述阿伯丁弹道研究实验室为各种火炮计算弹道、编制射击表的需要于1943年6月与联邦政府签订10万美元的合同而研制的。项目由约翰.莫奇利(John William Mauchly,1907-1980)负责逻辑设计,伊克特(John Presper Eckert, Jr, 1919-1995)负责电路设计。ENIAC是一台十进制并行计算机,能同时处理10个十进制数,采用电子管电路,时钟频率100000Hz,加法时间0.2 ms,乘法时间2.8 ms,是一个占地1 500 ft2 (约139m2),重30t,功耗150 kW的庞然大物,于1946年2月完成,未能参加第二次世界大战,但被洛斯阿拉莫斯(Los Alamos)国家实验室用于计算原子弹爆炸的突变问题,后来又曾用于阿伯丁的空军试验场,一直运行到1955年10月才停止工作。世人一直公认莫奇利和伊克特是ENIAC 的发明者,但后来在两家计算机公司的诉讼中,法院判定他们剽窍了约翰.阿塔那索夫(John Vincent Atanasoff,1903-1995)的构思和设计。这个涉及世界上第一台电子计算机的发明权案曾经轰动美国。但有趣的是,虽然阿塔那索夫确实曾在1941年把自己关于构思计算机的设想告诉过莫厅利,后者也确实因此受到启发而写出了有关论证报告并设计出了ENIAC,但社会舆论似乎并不支持法院的判决,现在一提到ENIAC,几乎众口一词地仍然说是莫奇利和伊克特发明的,没有人说是阿塔那索夫发明的,这对美国法院的判决真是一种讽刺。
      ENIAC虽然是世界上第一台电子计算机而被载入史册,但它不具备存储程序的能力,程序要通过外接电路输入。要改变程序必须改接相应的电路板,对于每种类型的题目,都要设计相应的外接插板。这不是理想的结构,不符合冯.诺伊曼早就提出的存储程序的设想。那末世界上第一台存储程序式计算机是哪一台呢?有此资料认为是前面曾经提到过的曼彻斯特大学的MARKI,但现在一般说法是英国剑桥大学威尔克斯(M.V.Wilkes,1967年图灵奖获得者)设计和完成于1949年5 月的EDSAC。实际上,最早开始设计与实施存储程序式计算机的还是莫尔学院的EDVAC(Electonic Discrete Variable Automatic Computer的词头缩写,意为"电子分离变量自动计算机"。这是1945年3月(当时ENIAC正在安装调试阶段),由冯.诺伊曼本人与莫奇利、伊克特等人经过两天会谈、讨论后制定的设计方案,采用电子管和半导体二级管,用水银延迟线作存储器,时钟频率1 MHz,字长32bit。由于ENIAC的原因,EDVAC的研制从1947年才开始,加上莫奇利和伊克特两人后来因故离开了莫尔学院,使工程遇到困难,1952年(有的资料说1951年)才完成,这才使威尔克斯的EDSAC"后来居上"(详见后面关于威尔克斯的介绍)。

      但不管EDSAC也好,EDVAC也好,都是串行计算机(serial computer),即数据的传送和运算是按位逐一进行的,这样的计算机运算部件少,运算也简单,但速度慢,不能满足某些应用的需要。那末世界上第一台存储程序式的并行计算机是哪一台呢?这就是前述"旋风"计算机。 "旋风"的主要设计者和研制者是MIT的弗里斯特(Jay Wright Forrest)。弗里斯特也是受军方委托,用风洞来研究飞机稳定性时根据数据处理的需要而设计"旋风"的。"旋风" 受EDVAC的影响采用存储程序方式,但鉴于处理飞机稳定性需要2 000条以上指令,必须 改串行为并行,但又要照顾机器体积不宜过大,因此设计成16位字长的并行计算机。"旋风" 的另一项创新是采用英国曼彻斯特大学威廉斯(Frederic Calland Williams,1911-1977)发明不久的阴极射线管作内存储器。 "旋风"的研制工作从1946年开始,1950年试运行成功。
      20世纪50年代冷战加剧的形势下,美国军方对"旋风"寄予极大希望,空军每年投资100万美元(试比较一下,ENIAC的总经费才10万美元),MIT也专门成立了著名的"林肯实验室",以弗里斯特原先的实验室为核心,研究"旋风"的军事应用。1951年,"旋风"与当时著名的SAGE(Semi-Automatic Ground Environment,即半自动地面防空系统,包括全美17个防区)首次实现连接,把位于卡德角的防空警戒雷达所载获的信息送到MIT,由"旋风"计算机进行处理、分析和存储。这是历史上计算机与通信相结合的先驱。弗里斯特还在20世纪40年代末和美籍华人科学家兼企业家王安(Wang An,1920-1990)几乎同时分别独立地发明了磁心存储器,并把它用在"旋风"中以代替阴极射线存储器,从而进一步大大提高了"旋风"的性能。

      佩利在"旋风"上工作到1952年9月。之后他来到普渡大学,在那里他创建了全美大学中的第一个计算中心,开创了在大学中建立计算中心的先河。他出任普渡大学计算中心的第一任主任。在他的努力下,计算中心先安装了一台IBM的CPC计算机(Card Programmed Calculator),以后更新为Datatron 205。佩利为之设计了称为IT(Internal Translator)的语言,并开发了IT的编译器。1956年佩利转到卡内基理工学院,"故伎重演",又推动该校成立了计算中心并出任主任,配置了IBM 650计算机。佩利把他在普渡大学开发的IT及其编译器移植到 IBM 650上,曾经在美国许多大学的IBM 650上被广泛采用。在IT的基础上,佩利和史密斯(J. Smith)、佐轮(H. Zoren)、伊万斯(A. Evans)等人一起为IBM 650设计与开发了新的代数语言和汇编语言。这些工作奠定了佩利作为计算机程序设计语言的先行者的地位。因此,当ACM于1957年成立程序设计语言委员会以便与欧洲的同行合作,设计通用的代数语言的时候,佩利被理所当然地看作是最佳人选而被任命为这个委员会的主席。1958年,在苏黎世举行的ACM小组和以当时联邦德国的应用数学和力学协会GAMM为主的欧洲小组的联合会议上,两个小组把他们关于算法表示法的建议综合为一,形成了Algol 58 (开始时的名称叫做"国防代数语言",即International Algebraic Language,简称IAL。后来改叫Algol 58)。在Algol 58的基础上,1960年1月在巴黎举行的有全世界一流软件专家参加的讨论会上,确定 了程序设计语言 Algol 60,发表了"算法语言Algol 60报告"。1962年又发表了"算法语言Algol60的修改报告"。Algol 60是程序设计语言发展史上的一个里程碑,它标志着程序设计语言由一种"技艺"转而成为一门"科学",开拓了程序设计语言的研究领域,又为后来软件自动化的工作以及软件可靠性问题的发展奠定了基础。而后像1967年出现的首次引进"类型"的概念,把数据和被允许施行于这些数据之上的运算结合为一个统一体,因而成为现代抽象数据类型的开端以及第一个面向对象的语言SIMULA 67,1971年出现的著名的PASCAL等
      语言,也都是在Algol 60的基础上加以扩充而形成的。Algol 60的主要特点有:
      1.局部性 首次引进局部性概念,既扩充了语言的表达能力,又可节省内存空间,提高
      程序的紧凑性。
      2.动态性 语言含有动态成分,从而明显提高了语言的表达能力(当然也相应增加了实
      现中的开销)。
      3.递归性 递归性的引进开拓了软件的研究领域,促进了软件的发展。
      4.严谨性 它的语法和语义均有严格的描述,特别是语法,采用了著名的巴克斯范式BNF, 结构清晰,理论严谨。
      在Algol 58 和Algol 60的形成和修改过程中,佩利都起了核心和关键的作用。佩利之所以荣获首届图灵奖,主要就是因为他在这方面的重大贡献。
      与此同时,在佩利的积极组织下,卡内基理工学院率先在大学生中开设程序设计课程。在此之前,有关程序设计的知识是作为"数值分析"课程内容的一部分予以介绍的。程序设计课的开设是计算机科学教育的开端。这引起了计算机的最大用户--美国国防部的重视,由它的高级研究计划署ARPA出面,出资资助对计算机科学及其教育立项研究,其结果是20世纪60年代中期首先在卡内基理工学院、斯坦福大学、MIT等少数几个大学建立起了计算机科学系和计算机科学研究生院,使计算机科学脱离电气工程、数学等学科而成为一门独立的学科。鉴于佩利在其中所起的巨大作用,佩利被称?quot;使计算机科学成为独立学科的奠基人"--A founding father of Computer Science as a separate discipline。而在卡内基理工学院(现卡内基-梅隆大学),佩利和西蒙(H. A. Simon)、纽厄尔(A. Newell),后二人是1975年图灵奖获得者,三人被称为"计算机系的三驾马车"。

      1971年,佩利离开了卡内基-梅隆大学,加盟新成立的耶鲁大学计算机系,曾数度出任系主任,为耶鲁大学计算机系的建设和发展作出了重大贡献。其间,1977-1978年,他曾在加州理工学院执教。因此,佩利可谓"桃李满天下",尤其是美国的第一批计算机科学博士生,绝大部分都是佩利的弟子。

      佩利也是计算机学术组织和学术交流活动的积极倡导者和组织者。1962-1964年他出任ACM也是由他倡议创办的,并在1958-1962年担任第一任主编。作为鸹学者,他经常到世界各国讲学或作报告,足迹遍及前苏联、丹麦、意大利、以色列、墨西哥、秘鲁、英国、荷兰、委内瑞拉……其中也曾两次到中国讲学。他也是"乒乓外交"后,最早(1972年7月)到中国访问的美国计算机科学家代表团的成员之一。

      佩利说过这样一句话:"任何名词都可以变为动词"(any noun can be verbed)。他的意思是说,任何远大的理想、志向、抱负和对新事物的追求,通过努力和不懈的实践,都是可以实现的。这是佩利总结自己的一生所形成的至理名言。


      佩利的主要著作有:
      《对程序设计语言的思考》(A View of Programming Languages, Addison-Wesley,1970)
      《计算机科学导论》(Introduction to Computer Science, Harper & Row,1972,1975)
      《软件可重用性》(Software Reusability,ACM Pr.,1989)

      最后这部书分两卷,第一卷:概念与模型(Concepts and Models),第二卷:应用与经验(Applications andExperience),是佩利与比格斯托夫(T. J. Biggerstaff)合编的。这是他生前的最后一部著作,反映了他晚年对软件工程的关心和重视。
      佩利1973年当选为美国艺术和科学院院士,1976年当选为美国工程院院士。除了获得图灵奖外,他还在1984年获得AFIPS的教育奖,曾被曾渡大学、滑铁卢大学等多所大学授予名誉博士学位。1990年2月7日,佩利因心脏病在康涅狄格洲的纽哈芬去世,享年68岁。
      佩利是在1966年8月举行的ACM第21届全国大会上被授予图灵奖的。佩利发表了题为"算法系统的综合"(The Synthesis of Algorithmic Systems)的演说(刊于杂志Journal of ACM, 1967年1月,1-9页,也可见《前20年的图灵奖演说集》(ACM Turing Award Lectures--The First 20 Years:1966-1985,ACM Pr.,5-16页)。佩利发表演说的1966年,编程还要通过专门设计的"编码纸"(coding sheet)和穿孔卡片进行。但佩利的眼光已经描向未来。他在强调指出图灵计算模型的重要意义以后,讨论了程序设计语言和系统下一步应朝哪些方向发展,包括更丰富的数据类型和数据结构,以及与之相联系的更丰富的操作等。佩利所指出的方向有些已被随后的研究与开发所实现,如LISP, Smalltalk,有些则至今有待进一步的研究.更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1967 Maurice V. Wilkes --世界上第一台存储程序式计算机EDSAC的研制
      本文发表在 rolia.net 枫下论坛Maurice V. Wilkes


      Citation
      Professor Wilkes is best known as the builder and designer of the EDSAC, the first computer with an internally stored program. Built in 1949, the EDSAC used a mercury delay line memory. He is also known as the author, with Wheeler and Gill, of a volume on "Preparation of Programs for Electronic Digital Computers" in 1951, in which program libraries were effectively introduced.
      -------------------------------------------------------------------------

      第二届(1967年)的图灵奖授予英国皇家科学院院士、计算技术的先驱莫里斯.威尔克斯(Maurice Vincent Wilkes ),以表彰他在设计与制造出世界上第一台存储程序式电子计算机EDSAC以及其他许多方面的杰出贡献。

      威尔克斯1913年6月26日生于英国中西部的达德利(Dudley),距 离著名的工业重镇伯明翰仅20 km 。由于威尔克斯从小就有严重的哮喘病,因此他父亲果断地把家迁到气候比较宜人的斯陶尔布里(Stourbridge ), 使威尔克斯的健康状况有了明显好转。 他在当地的爱德华四世普通中学完成了学业,培养了对于数学、物理和无线电的爱好。 当时无线电广播刚刚开始普及,威尔克斯对组装收音机十分入迷,很快成了这方面的一个"小专家", 取得了业余无线电操作员证书, 还为学校的广播站制造过一些设备。 1931年他进入剑桥的圣约翰学院,1934年以优秀成绩毕业。之后他获得一个研究课题的合同,进入剑桥著名的卡文迪什实验室工作。 这个实验室由于获得诺贝尔物理奖的人数最多而有"诺贝尔奖的摇篮"的美称。威尔克斯在这里完成了"关于甚长无线电波在电离层中的传播特性"的研究,并以此为题完成了博士论文,于 1938年10 月取得剑桥大学博士学位,而他的硕士学位是在当年年初才取得的。

      威尔克斯取得博士学位的时候,欧洲上空已布满了战争的阴云,英国已开始准备对付希特勒的进攻。因此,威尔克斯很快被吸收到研制侦察潜水艇、军舰和飞机的雷达设备的项目中去。大战期间,威尔克斯辗转于法国北部的敦刻尔克(1940年法国陷落时30万盟军大撤退的地方),英国的剑桥、佩特斯哈姆、马尔文等地,参与或主持过10cm 雷达,GL MarkI、II、III以及OBOE的研制,其中OBOE是"将轰炸机引向轰炸目标的导航"的英文缩写。采用这种导航技术时,飞行员不需要看地图,只需按地面发来的简单指令飞行。这种系统在地面有一“猫站”,一个"鼠站"。猫站的作用是用信号通知飞行员在一个大的圆弧线上飞行,轰炸的目标就在圆弧线上。若飞机没有到达圆弧线,猫站就发"点"信号,指示飞行员往外飞;若飞机飞出圆弧线,猫站就发"划"信号,指示飞行员往回飞。这样沿圆弧线飞到目标上空时,鼠站就发出信号,飞行员只管投弹就行。完成任务后猫站再以同样方式将飞机引导回基地。这种导航技术在二战中最受盟军飞行员欢迎。

      战后,威尔克斯回到剑桥大学,担任数学实验室(后改名计算机实验室)主任。1946年 5月,他获得了冯.诺伊曼起草的EDVAC计算机的设计方案的一份复印件。EDVAC是Electronic Discrete Variable Automatic Computer的缩写,是宾夕法尼亚大学莫尔学院于1945年开始研制的一台计算机,是按存储程序思想设计的,并能对指令进行运算和修改,因而可自动修改其自身的程序。但由于工程上遇到困难,EDVAC迟至1952年才完成,造成"研制开始在前,完工在后"的局面,而让威尔克斯占去先机。威尔克斯仔细研究了EDVAC的设计方案,8月又亲赴美国参加了莫尔学院举办的计算机培训班,广泛地与EDVAC的设计研制人员进行接触、讨论,进一步弄清了它的设计思想与技术细节。回国以后,威尔克斯立即以EDVAC为蓝本设计自己的计算机并组织实施,起名为EDSAC(Electronic Delay Storage Automatic Calculator,但有的文献写成Electronic Discrete Sequential Automatic Computer)。EDSAC采用水银延迟线作存储器,可存储34 bit 字长的字512个,加法时间1.5 ms,乘法时间4 ms。威尔克斯还首次成功地为EDSAC设计了一个程序库,保存在纸带上,需要时送入计算机。但是EDSAC在工程实施中同样遇到了困难:不是技术,而是资金缺乏。在关键时刻,威尔克斯成功地说服了伦敦一家面包公司J. Lyons & Co.的老板投资该项目,终于使计划绝处逢生。1949年5月6日,EDSAC首次试成功,它从带上读入一个生成平方表的程序并执行,正确地打印出结果。作为对投资的回报,Lyons公司取得了批量生产EDSAC的权利,这就是于1951年正式投入市场的LEO计算机(Lyons Electronic Office ),这通常被认为是世界上第一个商品化的计算机型号,因此这也成了计算机发展史上一件趣事:第一家生产出商品化计算机的厂商原先竟是面包房。Lyons公司后来成为英国著名的"国防计算机有限公司"即ICL的一部分。

      EDSAC的成功当然不在于它能生成平方表。还在试运行期间,它就完成了一系列重大任务,向世人展示了计算机的巨大潜力。著名的数学家屯臣蒲Ъ曳菩更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1969 Marvin Minsky(ZT)--"人工智能之父"和框架理论的创立者
      本文发表在 rolia.net 枫下论坛Marvin Minsky

      Citation
      The citation for this award winner is not currently available.

      ------------------------------------------------------

      和麦卡锡(J. McCarthy)一起在1956 年发起"达特茅斯会议"并提出人工智能(artificialintelli- gence)概念的计算机科学家马文.明斯基 (Marvin Lee Minsky) 被授予了1969年度图灵奖。这是第一位获此殊荣的人工智能学者。其后,麦卡锡(1971年),西蒙(H.A.Simon)和纽厄尔(A. Newell ,1975年),费根鲍姆(E. A. Feigen-baum)和劳伊.雷迪(Raj Reddy ,1994年)等5名人工智能学者先后获奖,在至今获图灵奖的40名学者中占了近1/6,可见人工智能学科影响之深远。

      明斯基1927年8月9日生于纽约市。他的父亲是一名眼科医生,同时又是一位艺术家。他的母亲则是一个活跃的犹太复国主义者(真是有趣的巧合:麦卡锡的母亲是来自立陶宛的犹太人,活跃的女权主义者)。小学和中学,明斯基上的是私立学校,对电子学和化学表现出兴趣。他的活动范围基本上是知识分子阶层。1945年高中毕业后明斯基应征入伍,在芝加哥北边的大湖海军培训中心(Great Lakes Naval Training Center)和其他约120名新
      兵一起接受了训练。按明斯基本人后来的说法,这是他第一次,也是最后一次和非学术界的人员混在一起。退伍后,1946年他进入哈佛大学主修物理,但他选修的课程相当广泛,从电气工程,数学,到遗传学等涉及多个学科专业,有一段时间他还在心理学系参加过课题研究。当时流行的一些关于心智起源的学说与理论使他难以接受,比如新行为主义心理学家斯金纳
      (Burrhus Frederic Skinner,1904-1990)根据一些动物行为的事实提出理论,把人的学习与动物的学习等同起来,明斯基就不以为然,并激发了他要把这个困难问题弄清楚的决心。后来他放弃物理改修数学,并于1950年毕业,之后进入普林斯顿大学研究生院深造。二次世界大战以前,图灵正是在这里开始研究机器是否可以思考这个问题的,明斯基也在这里开始
      研究同一问题。1951年他提出了关于思维如何萌发并形成的一些基本理论,并建造了一台学习机,名为Snarc。

      Snarc是世界上第一个神经网络模拟器,其目的是学习如何穿过迷宫,其组成中包括40个"代理"(agent ,国内资料也有把它译为"主体"、"智能体"的)和一个对成功给予奖励的系统,基于agent的计算和分布式智能是当前人工智能研究中的一个热点,明斯基也许是最早提出agent概念的学者之一。Snarc虽然还比较粗糙和不够灵活,毕竟是人工智能研究中最早的尝试之一。在Snarc的基础上,明斯基综合利用他多学科的知识,解决了使机器能基于对过去行为的知识预测其当前行为的结果这一问题,并以"神经网络和脑模型问文,1954年取得博士学位,学成以后,他留校工作3年,其间他与麦卡锡、香农等人一起发起并组织了成为人工智能起点的"达特茅斯会议",在这个具有历史意义的会议上,明斯基的Snarc,麦卡锡的α-β搜索法,以及西蒙和纽厄尔的"逻辑理论家"(Logic Theorist)是会议的三个亮点。1958年,
      明斯基从哈佛转至MIT,同时麦卡锡也由达特茅斯来到MIT与他会合,他们在这里共同创建了世界上第一个人工智能实验室。

      明斯基在人工智能方面的贡献是多方面的。1975年他首创框架理论(frame theory)。框架理论的核心是以框架这种形式来表示知识。框架的顶层是固定的,表示固定的概念、对象或事件。下层由若干槽(slot)组成,其中可填入具体值,以描述具体事物特征。每个槽可有若干侧面(facet),对槽作附加说明,如槽的取值范围、求值方法等。这样,框架就可以包含各种各样的信息,例如描述事物的信息,如何使用框架的信息,对下一步发生什么的期望
      ,期望如果没有发生该怎么办,等等。利用多个有一定关联的框架组成框架系统,就可以完整而确切地把知识表示出来。例如,有一个关于汽车的框架如下:
      name:汽车
      super-class:交通工具
      sub-class:轿车,面包车,吉普车
      车轮个数:
      value-class:整数
      default:4
      value:未知
      车身长度:
      value-class:浮点数
      unit:米
      value:未知
      ·
      ·
      ·
      其中super-class和sub-class分别表示该对象的父类和子类,"车轮个数"和"车身长度"是两个槽,反映汽车的结构属性,分别由若干侧面组成,例中有value,表示属性的值,value-class(或type)表示属性值的类型,default表示默认的属性值,等等。

      明斯基最初是把框架作为视觉感知、自然语言对话和其他复杂行为的基础提出来的,但一经提出,就因为它既是层次化的,又是模块化的,在人工智能界引起了极大的反响,成为通用的知识表示方法被广泛接受和应用。不但如此,它的一些基本概念和结构,也被后来兴起的面向对象技术和方法所利用。此外,明斯基的框架理论也成为当前流行的一些专家系统开发工具和人工智能语言的基础,例如,著名的KRL(Knowledge Representation Language)
      就是1979年由鲍勃罗夫 (D. G. Boborow,他也是1992年获得ACM软件系统奖的Interlisp的主要开发者之一)基于框架结构设计与实现的。框架理论的另外两个特殊贡献是:一、它最早提出了"缺省"(default)的概念,成为常识知识表示的重要研究对象。二、从框架发展出"脚本"表示方法,可以描述事件及时间顺序,并成为基于示例的推理CBR(case-based reasoning)的基础之一。

      明斯基还把人工智能技术和机器人技术结合起来,开发出了世界上最早的能够模拟人活动的机器人Robot C,使机器人技术跃上了一个新台阶。明斯基的另一个大举措是创建了著名的"思维机公司"(Thinking Machines, Inc.),开发具有智能的计算机。20世纪80年代中期思维机公司开始推出著名的"连接机"(Connection Machine) 系列CM-1,CM-2和CM-5,把大量简单的存储一处理单元连接成一个多维结构,在宏观上构成大容量的智能存储器,再
      通过常规计算机执行控制、I/O和用户接口功能,能有效地用于智能信息处理。CM-1由4个象限组成,每个象限包含多达16 384个一位处理器,全部处理器则分为4 096组,组间形成2维超立方体结构,其集成峰值速度达到每秒600亿次。CM-5的结点数更多,功能更强。

      明斯基也是"虚拟现实"(virtual reality)的倡导者,虽然VR这个名词与概念是20世纪90年代才出现与明朗起来的。早在20世纪60年代,明斯基就自己造了一个名词,叫telepresence,直译应为"遥远的存在"或"远距离介入",明斯基所谓的telepresence是这样一种设备或环境,它允许人体验某种事件,而不需要真正介入这种事件,比如感觉自己在驾驶飞机,在战场上参加战斗,在水下游泳,等等,实际上这些事都没有发生。明斯基提出过利用微型摄像机、运动传感器等设备来实现telepresence的一些方案。明斯基的telepresence不是和现在研究的虚拟现实如出一辙吗?

      明斯基作为人工智能的倡导者之一,是坚信人的思维过程可以用机器去模拟,机器也可以有智能的。他的一句流传颇广的话就是:"大脑无非是肉做的机器而已"(the brain happens to be a meat machine)。我们前面已经提到,他的这种观点遭到了另一位图灵奖获得者威尔克斯针锋相对的抨击,孰是孰非有待进一步的科学研究和实践去判断。

      明斯基的主要著作有:
      《计算:有限与无限的机器》(Computation:Finite and Infinite Machines, Prentice-Hall,1967)
      《语义信息处理》(Semantic Information Processing,MIT Pr.,1968)
      《感知器》(Perceptrons,MIT Pr.,1969;expanded edition,1988)
      《表示知识的框架》(A Framework for Representating Knowledge, McGraw-Hill ,1975)
      《心智的社会》(The Society of Mind,Simon & Schuster ,1986)
      《机器人学》(Robotics, Anchor Pr./Doubleday, 1985)
      明斯基是美国科学院和美国工程院院士。他曾出任美国人工智能学会AAAI的第三任主席(1981-1982)。
      除了获得图灵奖外,1989年他还获得MIT所授予的Killian奖。1990年他获得日本政府所设立的"日本奖"。

      明斯基在接受图灵奖时发表了题为"计算机科学的形式和内容"的演说,刊载于Journal of ACM,
      1970年4月,197-215页。也可见《前20年的图灵奖演说集》(ACM Turing Award Lectures--The First 20 Years:1966-1985,ACM Pr.),并发表了自己的看法。其中相当篇幅是批评当时的"新数学"(New Mathematics)的。他主张对儿童的数学教育,不但要强调形式,也要注重内容而不应忽略内容。

      明斯基现在在MIT的媒体实验室任职,其电子信箱为:
      minsky @ media. Mit. edu更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1971 John McCarthy--"人工智能之父"和LISP语言的发明人(ZT)
      本文发表在 rolia.net 枫下论坛John McCarthy


      Citation
      Dr. McCarthy's lecture "The Present State of Research on Artificial Intellegence" is a topic that covers the area in which he has achieved considerable recognition for his work.
      ------------------------------------------------------------

      1971年的图灵奖授予提出"人工智能"这一术语并使之成为一个重要的学科领域的斯坦福大学
      教授约翰. 麦卡锡( John McCar- thy)。

      麦卡锡1927年9月4日生于波士顿。他的父亲是一个爱尔兰移民,做过木匠和渔夫,同时也是一个发明家和工会积极分子,拥有捻船缝机和桔汁冷冻机两项专利。麦卡锡的母亲是来自立陶宛的犹 太人,热心于女权运动,当过记 者。夫妻两人在20世纪30年代都曾参加美国共产党。受父母的影响,麦卡锡对社会问题也比较关注,参与过在加州的Palo Alto 创办自由大学的活动,倡议过修改"人权法案"(the Bill of Rights,这是美国于1789年通过的对美国宪法的第一次修正案)。
      但与他在计算机科学上所做的工作和贡献相比,麦卡锡主要还是一个科学家而非社会活动家。此外,麦卡锡还喜欢攀登、跳伞、驾驶滑翔机等有刺激性和危险性的运动,曾和他的第二任妻子维拉.沃特森(Vera Watson)一起攀登过世界上不少大山高峰。沃特森是一位程序员,也是世界知名的女登山运动员,是第一位独自攀上西半球第一高峰、位于阿根廷和智利边界的安第斯山脉的阿空加瓜山(海拔6 960米)的女性,后来在一次攀登位于尼泊尔中部的阿那波尔那峰(海拔8 075米)的妇女探险活动中不幸遇难牺牲。

      麦卡锡是一个天赋很高的人,还在上初中时,他就弄了一份加州理工大学的课程目录,按目录自学了大学低年级的高等数学教材,做了教材上的所有练习题。这使他1944年进入加州理工学院以后可以免修头两年的数学,并使他虽因战时环境(第二次世界大战当时正在进行之中,美国也在珍珠港事件后宣布参战)要在军队中充任一个小职员,占去了部分时间,仍得以在1948年按时完成学业。然后到普林斯顿大学研究生院深造,于1951年取得数学博士学位。麦卡锡留校工作两年以后转至斯坦福大学,也只呆了两年就去达特茅斯学院任教(达特茅斯学院位于新罕布什尔州的汉诺威)。在那里,他发起了并成功举办了成为人工智能起点的有历史意义的"达特茅斯
      会议"。1958年麦卡锡到MIT任职,与明斯基(L. Minsky,1969年图灵奖获得者)一起组建了世界上第一个人工智能实验室,并第一个提出了将计算机的批处理方式改造成为能同时允许数十甚至上百用户使用的分时方式(time-sharing)的建议,并推动MIT成立组织开展研究。其结果就是实现了世界上最早的分时系统--基于IBM 7094的CTSS和其后的MULTICS。麦卡锡虽因主持该课题的负责人产生矛盾而于1962年离开MIT重返斯坦福,未能将此项目坚持到底,但学术界仍公认他是分时概念的创始人。麦卡锡到斯坦福后参加了一个基于DEC PDP -1的分时系统的开发,并在那里组建了第二个人工智能实验室。

      麦卡锡对人工智能的兴趣始于他当研究生的时候。1948年9月,他参加了一个"脑行为机制"的专题讨论会,会上,冯.诺伊曼发表了一篇关于自复制自动机制论文,提出了可以复制自身的机器的设想,这激起了麦卡锡的极大兴趣和好奇心,自此就开始尝试在计算机上模拟人的智能。1949年他向冯.诺伊曼谈了自己的想法,后者极表赞成和支持,鼓励他搞下去。在达特茅斯会议前后,麦卡锡的主要研究方向是计算机下棋。下棋程序的关键之一是如何减少计算机需要考虑的棋步。麦卡锡经过艰苦探索,终于发明了著名的α-β搜索法中,麦卡锡将结合的产生与求评价函数值(或称返上值或倒推值)两者巧妙地结合起来,从而使某些子树结点根本不必产生与搜索(这谓之"修剪"--pruning或cutoff)。之所以称为α-β搜索法,是因为将处于取最大值级的结点的返上值或候选返上值PBV(Provisional Back-up Value)称为该结点的α值,而将处于取最小值级的结点的候选返上值或返上值称为该结点的β值。 这样,在求得某结点以下的α值时,就可与其先辈结点的α值相比较,若α≥β, 则可终止该结点以下的搜索,即从该结点处加以修剪,这叫β
      修剪;而在求得某结点以下的β值时,就可与其先辈结点的α值相比较,若β≤α,则可终止该结点以下的搜索,即从该结点处加以修剪,这叫α修剪。为了说明α-β修剪,我们举一个最简单的例子。设在取火柴棍的游戏中,A、B两人轮流从N根火柴中取1根或2根,不得多取,也不能不取。取走最后一根火柴者胜。用A(n)、B(n)表示轮到A或B时有n根火柴的状态,当n = 5时轮到A取,则如下图所示,A有两种可能,一是取2根火柴进入B(3),另一是取1根火柴进入B(4)。显然,进入B(3)后,不管B取几根,A必胜,故A必走这一步,余下的分支不必再搜索了。α-β搜索法至今仍是解决人工智能问题中一种常用的高效方法。

      至于达特茅斯会议,当东道主的麦卡锡是主要发起人,另外3个发起人是当时在哈佛大学的明斯基(1969年图灵奖获得者),IBM公司的罗杰斯特(N. Rochster),信息论的创造人香农。麦卡锡发起这个会议时的目标非常宏伟,是想通过10来个人2个有共同努力设计出一台具有真正智能的机器。会议的经费是洛克菲勒基金会资助的,包括每个代表1 200美元加上外地代表的往返车票。会议的原始目标虽然由于不切实际而不可能实现,但由于麦卡锡在下棋程序尤其是α-β搜索法上所取得的成功,以及卡内基-梅隆大学的西蒙(H. A.Simon)和纽厄尔(A. Newell,这两人是1975年图灵奖获得者)带来了已能证明数学名著《数学原理》一书第二章52个定理中的38个定理的启发式程序"逻辑理论家"LT(Logic Theorist),明斯基带来的名为Snarc的学习机的雏形(主要学习如何通过迷宫),这使会议参加者仍能充满信心地宣布"人工智能"这一崭新学科的诞生。

      1959年,麦卡锡基于阿隆索.邱奇(Alonzo Church)的λ-演算和西蒙、纽厄尔首创的"表结构",开发了著名的LISP语言(LISt Processing language),成为人工智能界第一个最广泛流行的语言。
      LISP是一种函数式的符号处理语言,其程序由一些函数子程序组成。在函数的构造上,和数学上递归函数的构造方法十分类似,即从几个基本函数出发,通过一定的手段构成新的函数。LISP语言还具有自编译能力。具体说来,LISP有以下几个主要特点:
      1. 计算用的符号表达式而不是数;
      2. 具有表处理能力,即用链表形式表示所有的数据;
      3. 控制结构基于函数的复合,以形成更复杂的函数;
      4. 用递归作为描述问题和过程的方法;
      5. 用LISP语言书写的EVAL函数既可作为LISP语言的解释程序,又可以作为语言本身的形式定义;
      6. 程序本身也同所有其他数据一样用表结构形式表示。
      已经证明,LISP的这些特点是解决人工智能核心问题的关键。此外,精巧的表机制也是进一步简化LISP程序设计的方便而有力的工具,因此,LISP自发明以来,已经被广泛用于数学中的符号微积分计算,定理证明,谓词演算,博奕论等领域。它和后来由英国伦敦大学的青年学生柯瓦连斯基(R. Kowaliski)提出、由法国马赛大学考尔麦劳厄(A. Colmerauer)所领导
      的研究小组于1973年首先实现的逻辑式语言PROLOG(PROgramming in LOGic)并称为人工智能的两大语言,对人工智能的发展起了十分深远的意义也吸引了负责设计Algol语言的国际委员会,麦卡锡因此而被吸收为该委员会的成员。Algol中后来采纳了LISP关于递归和条件表达式这些思想。

      麦卡锡在20世纪50年代末研究的另一个课题是如何程序能接受劝告从而改善其自身的性能。为此他提出过一个名为Advice Taker的系统的设想。有资料说,这是世界上第一个体现知识获取工具思想的系统,1968年建成。实际上,这个系统并未最后完成,只是完成了一部分,用LISP语言建立起了一个具有常识(common sense)的软件,能理解告诉它的是什么,并能评估其行动的后果。但正是在Advice Taker的开发过程中,启发麦卡锡提出了用"分时系统"代替"批处理系统"的建议,使计算机的使用方式引发了一场革命。

      除了人工智能方面的研究和贡献这外,麦卡锡也是最早对程序逻辑进行研究并取得成果的学者之一。1963年他发表的论文"计算的数学理论的一个基础"一文(收录于P. Braffort和D. Hirschberg编辑的《计算机程序设计和形式系统》--Computer Programming and Formal Systems, North Holl and, 33-70页)集中反映了他这方面的成果。麦卡锡在这篇论文中系统地论述了程序设计语言形式化的重要性,以及它同程序正确性、语言的正确实现等问题的关系,并提出在形式语义研究中使用抽象语法和状态向量等方法,开创了"程序逻辑(logics of programs)研究的先河。程序逻辑就是一种"语言",用这种语言可以无二义地表达程序的各种性质,其语义规定了该语言中各种表达式的意义,而它的一组规则则用同意义相关的方式去操作这些表达式以计算该语言中的各种断言(assertation)的真值。研究程序的逻辑对于帮助人们了解软件是否合理十分重要,它可以用于程序的逻辑对于帮助人们了解软件是否合理十分重要,它可以用于程序验证(program verification),
      自动程序设计,为优化和审计而进行的程序分析等方面。麦卡锡在上述论文中提出的方法是用递归函数作为程序的模型。他以两个链表(list)的"附加"(append)操作为例说明可以用递归的方法定义这个函数,并可以用形式化的方法证明链表的附加操作是满足结合律的(associative law ),即
      x @ (y @ z) = (x @ y) @ z。麦卡锡进而证明了用一系列递归定义的函数就完全可能建造大型的软件系统,并用归纳法证明这些系统所具有的性质。麦卡锡所提出的方法是有关程序逻辑研究中第一个比较系统而成熟的方法,曾被广泛地采用。

      20世纪70年代以后,麦卡锡又开始研究非单调逻辑。在经典逻辑中,由已知事实推出的结论,决不会在已知事实增加时反而丧失其有效性,因此是"单调的"(monotonic)。但在人类思维过程中,由于信息的不完全和认识的局限性,常常有随着事物的发展变化,原有结论被否定和取消的情况,
      这就导致了所?quot;非单调逻辑"(nonmonotonic logic)。非单调逻辑中有一类是基于最小化语义的最小化非单调逻辑。1980年,麦卡锡在一篇论文中提出了"限制逻辑"或称"限界逻辑",成为这类非单调逻辑中比较成功的一个体系(见J. McCarthy:Circumscription--a form of nonmonotonic
      reasoning. Artificial Intelligence ,Vol.13,1980,27-39页)。限制逻辑的基本思想是:"限制"某个谓词P也就是排除以P的原有事实为基础所建立的大部分模型,而只保留有关P的最小模型。这与人类思考问题时总是在某些条件限制下考虑,也就是只考虑所涉及的个体或关系,而决不去涉及其他个体或关系,是比较相符的。1986年,麦卡锡在AI杂志上就限制逻辑的应用发表了进一步的研究论文:"限制逻辑在常识知识形式化中的应用"(Applications of Circumscription to Formalizing Common Sense Knowledge, AI, Vol.28,1986,89-116页),对倡导常识推理和常识研究起了十分重要的作用。

      麦卡锡的主要著作有:
      《自动机研究》(Automata Studies, Princeton Uni. Pr.,1956,与香农合编)
      《信息学:科学美国人之书》(Information:A Scientific American Book, Freeman, 1966)
      《形式化的常识:麦卡锡论文选集》(Formalizing Common Sense:Papers by John McCarthy , Ablex Pub. Co., 1990, 蒝. Lifschitz 编辑)
      除了获得图灵奖以外,麦卡锡在1988年获得由日本INAMORI基金会所设立的KYOTO奖,这个奖主要奖励在高科技方面作出杰出贡献的科学家,麦卡锡是这个奖的第5位获得者。
      1990年麦卡锡获得美国全国科学奖章 (National Medal of Scien- -ce)。
      麦卡锡的图灵奖演说题为"人工智能研究的现状"(The Present State of Research on Artificial Intelligence)。
      但不知什么原因,这篇演说没有发表。在《前20年的图灵奖演说集》(ACM Turing Award Lectures--The First 20 Years:1966-1985 ,ACM Pr.)中,则以"附录"(postscript)的形式约请麦卡锡另写了一篇"人工
      苣一般原理"(Generality in Artificial Intelligence),刊于该书257-268页。

      麦卡锡现仍在斯坦福大学计算机科学系任教,其电子信箱为:
      jmc@cs.stanford.edu更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1973 Charles W. Bachman——“网状数据库之父”(ZT)
      本文发表在 rolia.net 枫下论坛Charles W. Bachman


      Citation
      For his outstanding contributions to database technology.

      --------------------------------------------------------------------------------

      20世纪60年代中期以来,据库技术的形成、 发展和日趋成熟,使计算机数据处理技术跃上了一个新台阶,并从而极大地推动了计算机的普及与应用。因此,1973年的图灵奖首次授予在这方面作出杰出贡献的数据库先驱查尔斯.巴赫曼(Charles W. Bachman)。

      为了说明巴赫曼的功绩,让我们先简要回顾一相计算机数据处理发展的历史。

      计算机在20世纪40年代诞生之初只用于科学与工程计算,不能用于数据处理,因为当时的计算机还只能处理数字,不能处理字母和符号,而字母和符号恰是数据处理中的主要处理对象。此外,当时的计算机也还没有数据处理所需要的大容量存储器。20世纪50年代初,发明了字符发生器(Character Generator),使计算机具有了能显示、存储与处理字母及各种符号的能力;又成功地将高速磁带机用于计算机作存储器, 这是对计算机得以进入数据处理领域具有决定意义的两大技术进展。但是磁带只能顺序读写,速度也慢,不是理想的存储设备。1956年,IBM公司和Remington Rand 公司先后实验成功磁盘存储器方案,推出了商用磁盘系统。磁盘不但转速快,容量大,还可以随机读写,为数据处理提供了更加理想的大容量、快速存储设备。有了这些硬件的支持,计算机数据处理便日益发展起来。

      但是,初期的数据处理软件只有文件管理(file management)这种形式,数据文件和应用程序一一对应,造成数据冗余,数据不一致性和数据依赖(data dependence)。所谓数据依赖就是编写程序依赖于具体数据,拿COBOL这种常用的商用语言来说吧,程序员必须在数据部的文件节(DATA DIVISION,FILE SECTION)中详细说明文件中各数据项的类型和长度、格式,在设备部的输入—输出节(ENVIRONMENT DIVISION, INPUT-OUTPUT SECTION)中还要通过SELECT语句和ASSIGN语句把文件和具体设备联系起来,并使用ORGANIZATION语句和ACCESS MODE语句严格规定文件的组织方式和存取方式。根据这些具体规定,程序员再在过程部(PROCEDUR DIVISION)中用一系列命令语句导航,才能使系统完成预期的数据处理任务。应用程序与数据的存储、存取方式密切相关这种状况给程序的编制、维护都造成很大的麻烦。

      后来出现了文件管理系统FMS(File Management System)作为应用程序和数据文件之间的接口,一个应用程序通过FMS可以和若干文件打交道,在一定程度上增加了数据处理的灵活性。但这种方式仍以分散、互相独立的数据文件为基础,数据冗余、数据不一致性、处理效率低等问题仍不可避免。这些缺点在较大规模的系统中尤为突出。以美国在20世纪60年代初制定的阿波罗登月计划为例,阿波罗飞船由约200万个零部件组成,它们分散在世界各地制造生产。为了掌握计划进度及协调工程进展,阿波罗计划的主要合约者Rock-well公司曾研制、开发了一个基于磁带的零部件生产计算机管理系统,系统共用了18盘磁带,虽然可以工作,但效率极低,18盘磁带中60%是冗余数据,维护十分困难。这个系统的状况曾一度成为实现阿波罗计划的重大障碍之一。

      针对上述问题,各国学者、计算机公司、计算机用户以及计算机学术团纷纷开展研究,为改革数据处理系统进行探索与试验,其目标主要就是突破文件系统分散管理的弱点,实现对数据的集中控制,统一管理。结果就是出现了一种全新的高效的管理技术——数据库技术。Rockwell公司就与IBM公司合作,在当时新推出的IBM 360系列上研制成功了世界上最早的数据库管理系统之一IMS(Information Management System),为保证阿波罗飞船1969年顺利登月作出了贡献。IMS是基于层次模型的。几乎同时,巴赫曼在通用电气公司主持设计与实现了网状的数据库管理系统IDS(Integrated Data System)。

      巴赫曼1924年12月11日生于堪萨斯州的曼哈顿。1948年在密歇根州立大学取得工程学士学位,1950年在宾夕法尼亚大学取得硕士学位。20世纪50年代在Dow化工公司工作,1961- 1970年在通用电气公司任程序设计部门经理,1970-1981年在Honeywell公司任总工程师,同时兼任Cullinet软件公司的副总裁和产品经理。 Cullinet公司对中国人来说知之者不多,但这个公司当时在美国很有名气,它是1978年第一家在纽约股票交易所上市的软件公司,其时微软在新墨西哥州的阿尔伯克基开张不久,鲜为人知,它的股票是1986年上市的,比Cullinet 晚8年之久。但Cullinet最终被CA公司购并。1983年巴赫曼创办了自己的公司Bachman Information System,Inc.。

      巴赫曼在数据库方面的主要贡献有两项,第一就是前面说的,在通用电气公司任程序设计部门经理期间,主持设计与开发了最早的网状数据库管理系统IDS。IDS于1964年推出后,成为最受欢迎的数据库产品之一,而且它的设计思想和实现技术被后来的许多数据库产品所仿效。其二就是巴赫曼积极推动与促成了数据库标准的制定,那就是美国数据系统语言委员会CODASYL下属的数据库任务组DBTG提出的网状数据库模型以及数据定义和数据操纵语言即DDL和DML的规范说明,于1971年推出了第一个正式报告——DBTG报告,成为数据库历史上具有里程碑意义的文献。该报告中基于IDS的经验所确定的方法称为DBTG方法或CODASYL方法,所描述的网状模型称为DBTG模型或CODASYL模型。DBTG曾希望美国国家标准委员会ANSI接受DBTG报告为数据库管理系统的国家标准,但是没有成功。1971年报告之后,又出现了一系列新的版本,如1973、1978、1981年和1984年的修改版本。DBTG后来改名为DBLTG(Data Base Language Task Group,数据库语言工作小组)。DBTG首次确定了数据库的三层体系结构,明确了数据库管理员DBA(DataBase Administrator)的概念,规定了DBA的作用与地位。DBTG系统虽然是一种方案而非实际的数据库,但它所提出的基本概念却具有普遍意义,不但国际上大多数网状数据库管理系统,如IDMS、PRIME、DBMS、DMS 170、DMS II和DMS 1100等都遵循DBTG模型,而且对后来产生和发展的关系数据库技术也有很重要的影响,其体系结构也遵循DBTG的三级模式(虽然名称有所不同)。下面我们简要介绍一下DBTG的系统结构。包括模式(schema)、子模式(subschema)、物理模式(physical schema)、数据操纵和数据库管理系统(DBMS,DataBase Management System)等几个部分。模式是对数据库整体数据逻辑结构的描述,它对应数据库的概念层,由数据库管理员借助模式数据描述语言DDL(Data Description Language)建立。子模式是某一用户对他所关心的那部分数据结构的描述,对应于数据库的外层或用户视图(user view),是由该用户自己或委托数据库管理员借助子模式数据描述语言加以定义的。物理模式或叫存储模式(storage schema)是对数据库的数据的存储组织方式的描述,对应于数据库的物理层,由数据库管理员通过数据存储描述语言DSDL(Data Storage Description Language)加以定义(DSDL是DBTG报告的1978年版本提出的,之前的报告用的名称叫数据介质控制语言DMCL——Data Media Control Language)。数据库可由多个用户、多个应用共享,数据库应用程序利用数据操纵语言DML(Data Manupilation Language)实现对数据库数据的操纵,但一个应用程序必须援引某一模式的某一子模式(也就是说它操作的数据限于某一用户视图中的数据)。DML语句可以嵌在宿主语言(如COBOL,Fortran等)中,在数据库管理系统的控制下访问数据库中的数据,并通过一个称为用户工作区UWA(User Work Area)的缓冲区与数据库通信,完成对数据库的操作。数据库管理系统的其他功能包括维护数据库中数据的一致性(consistency)、完整性(integrity)、安全性(security)和一旦出现故障情况下的恢复(recovery),以及在多个应用程序同时存取同一数据单元时处理并发性(concurrency),以避免出现“脏数据”(dirty data)或“丢失更新”(lose update)等不正常现象。由此可见,有关模式的数据描述语言DDL是建立数据库的工具,数据操纵语言DML是操作数据库、存取其中的数据的工具,而数据库管理系统DBMS则是执行这种操作并负责维护与管理数据库的工具,它们各司其职,完成数据库整个生命期中的一切活动。

      由于巴赫曼在以上两方面的杰出贡献,巴赫曼被理所当然地公认为“网状数据库之父”或“DBTG之父”,在数据库技术的产生、发展与推广应用等各方面都发挥了巨大的作用。

      在数据库的文档资料中,有一种描述网状数据库模型的数据结构图,这种图解技术是巴赫曼发明的,通常被称为“巴赫曼图”(Bachman diagram)。此外,在担任ISO/TC 97/SG-16主席时,巴赫曼还主持制定了著名的“开放系统互连”标准,即OSI(Open System Interconnection)。OSI对计算机、终端设备、人员、进程或网络之间的数据交换提供了一个标准规程,实现OSI对系统之间达到彼此互相开放有重要意义。巴赫曼也是建立在波士顿的计算机博物馆的创始人之一。

      20世纪70年代以后,由于关系数据库的兴起,网状数据库受到冷落。但随着面向对象技术的发展,有人预言网状数据库有可能重新受到人们的青睬。但无论这个预言是否实现,巴赫曼作为数据库技术先驱的历史作用和地位是学术界和产业界普遍承认的。

      巴赫曼是在1973年8月28日在亚特兰大举行的ACM年会上接受图灵奖的,他发表了题为“作为导航员的程序员”(The Programmer as Navigator)的图灵奖演说,刊载于Communications of ACM,1974年11月,653-658页,也可见《前20年的ACM图灵奖演说集》(ACM Turing Award Lectures——The First 20Years:1966-1985,ACM Pr.),269-286页。更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 哎!文中对COBOL有这个说法。。。?
        ‘应用程序与数据的存储、存取方式密切相关这种状况给程序的编制、维护都造成很大的麻烦。’

        麻烦在哪里?我这几年精心研究读写文件和读写数据库对于COBOL程序的维护难易程度,程序里读写文件写法是比数据库复杂,但效率似乎比数据库高不少。。。。

        几十年前的数据库性能低下,以读写文件为主不足为奇。为何现代新型应用仍然采取读写文件方式?请明白人士告知。
        • 哈哈哈哈,年青了不是。你“这几年精心研究读写文件”。。。恐怕你至少是在用fmS了。我故意把S用了大写,以引起你的重视。据我所知,在390/MVS之前,IBM还笨得离谱,只能用那种麻烦的方式处理数据。反正你研究的至少都是FMS了吧?
          有些实现上,那些复杂的Division是可以省略的,恐怕你就更不知道麻烦在哪儿了。一句话,现在的COBOL是进化了的。当然IBM傻COBOL的实现以及其笨拙的OS,还是很麻烦,不过,再麻烦也是进化了的。

          至于“为何现代新型应用仍然采取读写文件方式?”,答案很简单,有些应用领域不需要数据库,有些可用可不用的也因为数据库的速度和单个表的size的限制而可能舍弃数据库。
    • 1975 Allen Newell and Herbert A. Simon ——人工智能符号主义党派的创始人
      本文发表在 rolia.net 枫下论坛Allen Newell and Herbert A. Simon


      Citation
      In joint scientific efforts extending over twenty years, initially in collaboration with J. C. Shaw at the RAND Corporation, and subsequentially with numerous faculty and student collegues at Carnegie-Mellon University, they have made basic contributions to artificial intelligence, the psychology of human cognition, and list processing.
      ------------------------------------------------------------
      1975年度的图灵奖授予卡内基-梅隆大学的两位教授:赫伯特.西蒙(Herbert Alexander Simon)和艾伦.纽厄尔(Allen Newell)。他们两人曾是师生,后来成为极其亲密的合作者,共事长达42年,直至纽厄尔于1992年去世。这是图灵奖首次同时授予两位学者。

      西蒙是一个令人敬佩而惊叹的学者,具有传奇般的经历。他多才多艺,兴趣广泛,会画画,会弹钢琴,既爱爬山、旅行,又爱学习各种外国语,能流利地说多种外语。作为科学家,他涉足的领域之多,成果之丰,影响之深远,令人叹为观止。他和纽厄尔同获图灵奖,是因为他们在创立和发展人工智能方面的杰出贡献,当然是计算机科学家。但是西蒙在1978年更荣获诺贝尔经济学奖,不言而喻是世界一流的大经济学家。1986年他又因为在行为科学上的出色贡献而荣获美国全国科学奖章(National Medal of Science)。1969年,美国心理学会由于西蒙在心理学上的贡献而授予他“杰出科学贡献奖”(Distinguished Scientific Contributions Award)。而他1943年在匹兹堡大学研究生院毕业时被授予的是政治博士头街!西蒙自己在他1991年出版的自传《我的生活的模型》(Models of My life, Basic Books)一书中这样描写他自己:“我诚然是一个科学家,但是是许多学科的科学家。我曾经在许多科学迷宫中探索,这些迷宫并未连成一体。我的抱负未能扩大到如此程度,使我的一生有连贯性。我扮演了许多不同角色,角色之间有时难免互相借用。但我对我所扮演的每一种角色都是尽了力的,从而是有信誉的,这也就足够了”。

      西蒙1916年6月15日生于威斯康辛州密歇根湖畔的密尔沃基(Milwaukee),他的父亲是一个德国出生的电气工程师,母亲则是颇为成功的钢琴演奏家(西蒙弹得一手好钢琴恐怕来自家教吧)。西蒙从小就很聪明好学,在密尔沃基的公立学校上学时,西蒙就对密尔沃基市游乐处的组织管理工作进行过调查研究,这项研究激发起了西蒙对行政管理人员如何进行决策这一问题的兴趣,这个课题从此成为他一生事业中的焦点。1936年他从芝加哥大学毕业,取得政治学学士学位以后,应聘到国际城市管理者协会ICMA(International City Managers’ Association)工作,很快成为用数学方法衡量城市公用事业的效率的专家。在那里,他第一次用上了计算机(当然还只是机电式的),因为他作为“城市鉴”(Municipal Yearbook)的助理编辑,需要在计算机上对数据进行统计、分类、排序和制表。对计算机的兴趣和实践经验对他后来的事业产生了重要影响。

      1939年,他转至加州大学伯克利分校,负责由洛克菲勒基金会资助的一个项目,这个项目是对地方政府的工作和活动进行研究。这期间,他完成了博士论文,内容就是关于组织机构如何决策的。经他的母校芝加哥大学进行评审与答辩后,被授予政治博士学位。

      1942年,在完成洛克菲勒基金项目以后,西蒙转至伊利诺伊理工学院政治科学系,在那里工作了7年,其间还担任过该系系主任。1949年他来到最后一个落脚点卡内基—梅隆大学(当时还叫学院),在新建的经济管理研究生院任教。他一生中最辉煌的成就就是在这里做出的。20世纪50年代,他和纽厄尔以及另一位著名学者约翰.肖(John Cliff Shaw)一起,成功开发了世界上最早的启发式程序“逻辑理论家”LT(Logic Theorist)。逻辑理论家证明了数学名著《数学原理》一书第二章52个定理中的38个定理(1936年对逻辑理论家进行改进后可证明全部52个定理),受到了人们的高度评价,认为是用计算机探讨人类智力活动的第一个真正的成果,也是图灵关于机器可以具有智能这一论断的第一个实际的证明。同时,逻辑理论家也开创了机器定理证明(mechanical theorem proving)这一新的学科领域。 1956年夏天,数十名来自数学、心理学、神经学、计算机科学与电气工程等各种领域的学者聚集在位于美国新罕布什尔州汉诺威市的达特茅斯学院(这个学院还因后来在1966年由John G. Kemeny 和T. E. Kurtz发明简单易学,使用方便的交互式语言BASIC而闻名于世),即Dartmouth College,讨论如何用计算机模拟人的智能,并根据麦卡锡(J. McCarthy,1971年图灵奖获得者)的建议,正式把这一学科领域命名为“人工智能”(Artificial Intelligence)。西蒙和纽厄尔参加了这个具有历史意义的会议,而且他们带到会议上去的“逻辑理论家”是当时唯一可以工作的人工智能软件,引起了与会代表的极大兴趣与关注。因此,西蒙、纽厄尔以及达特茅斯会议的发起人麦卡锡和明斯基(M. L. Minsky,1969年图灵奖获得者)被公认为是人工智能的奠基人, 被称为“人工智能之父”。

      西蒙和纽厄尔和肖合作,还在1957年开发了IPL语言(Information Processing Language)。在AI的历史上,这是最早的一种AI程序设计语言,其基本元素是符号,并首次引进表处理方法。IPL的基本数据有两个组分,每个组分要么是元素,要么是指向另一元素的指针,也就是说,IPL最基本的数据结构是表结构,可用以代替存储地址或有规则的数组,这有助于将程序员从繁琐的细节中释放出来而在更高的水平上思考问题。IPL的另一特点是引进了生成器,每次产生一个值,然后挂起,下次调用即从停止的地方开始。早期的很多AI程序都是用IPL编制而成的。IPL本身也经历了一个发展与完善的过程,其最后一个版本IPL V可以处理树形结构的表。

      1960年,西蒙夫妇做了一个有趣的心理学实验,这个实验表明人类解决问题的过程是一个搜索的过程,其效率取决于启发式函数(heuristic function)。在这个实验的基础上,西蒙、纽厄尔和肖又一次成功地合作开发了“通用问题求解系统”GPS(General Problem Solver)。GPS是根据人在解题中的共同思维规律编制而成的,可以解11种不同类型的问题,从而使启发式程序有了更普遍的意义。

      西蒙曾多次强调指出,科学发现只是一种特殊类型的问题求解,因此也可以用计算机程序实现。1976-1983年间,西蒙和兰利(Pat W. Langley )、布拉茨霍夫(Gary L. Bradshaw)合作,设计了有6个版本的BACON系统发现程序,重新发现了一系列著名的物理、化学定律,证明了西蒙的上述论点。

      “逻辑理论家”和“通用问题求解器”都是针对有“良结构”(Well structured)的问题设计的。西蒙后来又和海斯(J. R. Hayes) 合作,开发了一个名为“理解”(Understand) 的AI程序,可以解决结构不良的问题(poorly structured problem),进一步发展了推理技术。西蒙和纽厄尔还明确界定了这两类问题,即满足以下三个条件的问题被称为良结构问题:

      1.题能以定量方式进行描述;

      2.问题有一个特定的目标函数;

      3.问题有能求得最优解的有效算法。

      不能满足以上三个条件的全部或部分的问题则称为结构不良的问题。

      1966年,西蒙、纽厄尔和贝洛尔(Baylor)合作,开发了最早的下棋程序之一MATER。由于下棋是人的智力活动中最复杂和高级的一种活动,西蒙对计算机下棋始终十分关切。1977年,IBM的“深蓝”(Deep Blue)计算机打败了白俄罗斯的国际
      特级大师卡斯帕罗夫以后,西蒙(时年81)还和在克利夫兰的俄亥俄州大学当教授的日本知名AI专家T.Munakata 一起,在《ACM通信》杂志的8月号上发表了“人工智能给我们的教训”(AI Lessons)一文,就此事进行了评论,发表了看法。

      以上介绍的是西蒙和纽厄尔在人工智能系统实现和开发中所做的一些具体工作和成果。他们两人在人工智能中做出的最基本的贡献则在于他们提出了“物理符号系统假说”PSSH(Physical Symbol System Hypothesis),成为人工智能中影响最大的符号主义学派的创始人和代表人物,而这一学说则鼓励着人们对人工智能进行伟大的探索。那么,什么叫物理符号系统呢?所谓物理符号系统,按照西蒙和纽厄尔1976年给出的定义,就是由一组称为符号的实体所组成的系统,这些符号实体都是物理模型,可作为组分出现在另一符号实体之中。任何时候,系统内部均有一组符号结构,以及作用在这些符号结构上以生成其他符号结构的一组过程,包括建立、复制、删除这样一些过程。所以一个物理符号系统也就是逐渐生成一组符号的生成器。根据这一假设,物理符号系统也就是对一般智能行为具有充分而必要手段的系统,即任一物理符号系统如果是有智能的,则必能执行对符号的输入、输出、存储、复制、条件转移和建立符号结构这样6种操作。反之,能执行这6种操作的任何系统,也就一定能够表现出智能。根据这个假设,我们可以获得以下三个推论:

      1.人是具有智能的,因此人是一个物理符号系统。

      2.计算机是一个物理符号系统,因此它必具有智能。

      3.计算机能模拟人,或者说能模拟人的大脑。

      您能够接受这些假设,认为这些假设符合逻辑吗?

      西蒙在人工智能方面的另一个贡献,是发展与完善了语义网络的概念和方法,把它作为知识表示(knowledge representation)的一种通用手段,并取得了很大成功。

      大家知道,在知识表示方法中,语义网络(semantic network)是一种重要而有效的方法。这种表示法是奎林(M. R. Quillian)在20世纪60年代后期作为人类联想记忆的一个显示心理学模型最先提出来的,奎林在开发TLC系统(Teachable Language Comprehender)中用它来描述英语的词义,模拟人类的联想记忆。但用语义网络作为一般的知识表示方法,则是西蒙在1970年研究自然语言理解的过程中把它的各种概念基本明确下来的。语义网络由结点和结点之间的弧组成。一般,结点用于表示物理实体、概念或状态,弧表示它们之间的相互关系。例如,下图为描述“我的椅子”(my-chair)的一个语义网络。其中,结点my-chair以上的部分表示“我的椅子是一个椅子”,“椅子是一种家具(furniture)”,“座位(seat)是椅子的一部分“等概念。My-chair 以左的部分表示“我的椅子的所有者(owner)是我”,“我是一个人(person)”等概念。My-chair以右的部分表示“我的椅子的颜色(color)是棕褐色(ten)”,“棕褐色是一种褐色(brown)”等概念。my-chair以下的部分表示“我的椅子覆盖着(covering)皮革(leather)”这一概念。图中isa和ako 是语义网络中常用的关系,isa表示某一个体是某一集合的一个元素,读作“是……的一个实例”。Ako是a-kind-of的缩写,表示一个集合是另一个集合的子集,也可用are代替ako。图中的其他关系ispart、owner、color、covering 分别表示结点对象的其他一些属性。由此可见,语义网络特别适合于根据非常复杂的分类进行推理的领域以及表示事件的性质、状况以及动作之间关系的领域,它的主要优点有:


      1.重要相关性能被明确而清晰地表示出来;

      2.相关事实可以通过直接相连的结点推导出来;

      3.能利用isa和子集链在网络中建立性质断承层次;

      4.易于对继承层次进行演绎推理;

      5.能利用少量的基本概念标记建立状态和动作的描述。

      由于以上各种优点,语义网络已被许多AI系统采用。经过适当扩充,它在数据库技术中被用作数据模型,称为“语义网络数据模型”(semantic network data model)。

      20世纪70年代中期,西蒙和CAD专家依斯特曼(C. M. Eastman)合作,研究住宅的自动空间综合取得成果,不仅开“智能大厦”(intelligent building)的先河,还成为智能CAD即ICAD研究的开端。在此基础上,CMU于1986年成立了跨系的工程设计研究中心(Engineering Design and Research Center),基成果举世瞩目。

      起源于20世纪60年代末70年代初,当前受到极大重视的决策支持系统DSS(Decision Support System),其概念的核心是关于决策模式的理论,而这个理论也是由西蒙奠定基础的。西蒙提出了著名的决策过程模型,指出以决策者为主体的管理决策过程经历以下三个阶段:

      1.情报,即进行情报的收集与加工,研究决策环境,分析和确定影响决策的因素或条件。

      2.设计,即发现、开发以及分析各种可行方案。

      3.选择,即确定方案并予以实施和审计。

      西蒙所提出的决策模式既概括了宏观决策,又包含了微观决策的基本特征,是普遍有效的一般决策过程的总结,对开发DSS具有十分重要的指导意义。基于西蒙关于决策模式的理论,凯恩(P. G. Keen) 提出了DSS的一种设计方法,称为“自适应法”(self-adaptive method), 把DSS当成一种自适应系统,由DSS应用系统,DSS生成系统和DSS工具三个技术层次组成,由决策者运行,且能适应时间的变化。西蒙曾称赞这样的系统“能适应三个时间范围内的各种变化,即在短期运行中,系统能在一个相对狭窄的范围内寻求答案;在中期时间内,系统能通过修改其功能和活动(范围或领域的变化)而学会适应;在长期运行中,系统能发展到适应差别极大的行为风格和功能”。

      除了DSS以外,研究产生得更早、应用更加广泛的管理信息系统MIS(Management Information System)的学者,也普遍认为西蒙关于以决策制定为基础的管理理论是MIS的核心和灵魂。

      下面我们简要介绍一下西蒙获得诺贝尔奖的原因,另然这和他获得图灵奖没有什么直接关系,但通过以上途述,我们不难发现,西蒙自称“扮演了许多不同角色,角色之间有时难免互相借用”是很客观和实事求是的。

      导致西蒙获得诺贝尔奖的是他在管理行为学的研究中提出了一个全新的观点。经典的经济学理论认为,企业的决策者能获取有关的所有信息,从而作出合理的决策,以期获得所需的全部信息,因此大多数企业只能试图设定一个并不很理想、然而可以接受的“比较满意”的目标。西蒙的这个研究结果在他的第二版的《管理行为:对管理机构决策过程的研究》(Administrative Behavior: A Study of Decision-making Processes in Administrative Organization, Macmillan, 1957)中发表以后,引发了经济学界的一场大争论,最后终于被认定是符合客观实际的一个革命性的政理论,成为经济学的一个十分重要的原理。

      西蒙的著述极多,至今他共出版专著15部,发表论文约600篇。他的学术研究成果集中反映在他的几部以《……的模型》为书名的著作中,如

      《人的模型》(Models of Man, Wiley, 1957)

      《发现的模型》(Models of Discovery, Reidel, 1978)

      《思维的模型》(Models of Thought, Yale Uni. Pr., 第一卷1979, 第二卷1989)

      《有限合理性的模型》(Models of Bounded Rationality, MIT Pr.,1982)

      前面提到他有一本自传式的Models of My Life,也许这是西蒙的最后一个模型?(本书已由曹南燕、秦裕林译成中文,由东方出版中心出版,中译本书名为《我生活的种种模式》)

      由于成果丰硕,西蒙获得的奖励与荣誉很多。除了前面已经提到的几项大奖外,他还获得过以下一些奖项:Procter奖(1970),Mosher奖(1974),Dow-Jones奖(1983),James Madision奖(1984),Dwight Waldo奖(1995)。西蒙是美国科学院院士,美国研究院(National Research Council)行为科学部主席。1968年,他被任命为总统科学顾问委员会委员。他是许多学术团体的高级会员和知名大学的名誉博士或名誉教授,并派出一些学者在西蒙指导下进行短期记忆方面的研究。西蒙曾10次到中国访问,而且是“乒乓外交”后,最早(1972年7月)到中国访问的美国计算机科学家代表团成员之一。在Models of My Life 中,西蒙记叙了那次历史性访问中的一些有趣的故事。

      西蒙现仍为卡内基-梅隆大学计算机科学系和心理学系的“双料”教授。他的电子信箱为:

      has @ a.. gp. cs. Cmu.edu

      纽厄尔1927年3月19日生于旧金山,其父是斯坦福医学院放射学教授,精通物理和古典文学,也十分能干,会约鱼,会淘金,会做木工,甚至在山上亲手盖了一座小木屋。纽厄尔对父亲十分崇拜,称他是“一个十全十美的知识分子”。二次大战期间,纽厄尔在海军服了两年预备役,表现出色。战后他进入斯坦福大学学习物理,1949年获得学士学位。之后他在普林斯顿大学研究生院攻读数学,一年以后辍学到RAND公司工作,和空军合作开发早期预警系统。系统需要模拟在雷达显示屏前工作的操作人员在各种情况下的反应,这导致纽厄尔对“人如何思维”这一问题发生兴趣。也正是从这个课题开始,纽厄尔和卡内基-梅隆大学的西蒙建立起了合作关系,提出了“中间结局分析法”(means-ends analysis,也有译为“手段目的的分析法”的)作为求解人工智能问题的一种技术。这种方法找出目标要求与当前态势之间的差异,选择有利于消除差异的操作以逐步缩小差异并最终达到目标。利用这种方法,他们开发成功了最早的启发式程度“逻辑理论家”和“通用问题求解器”。在开发逻辑理论家的过程中,他们首次提出并成功应用了“链表”(list)作为基本的数据结构,并设计与实现了表处理语言IPL。IPL是所有表处理语言的始祖,也是最早使用递归子程序的语言。在合作过程中,纽厄尔所表现出的才能与创新精神深得西蒙的赞赏,在西蒙的竭力推荐下,纽厄尔得以在卡内基-梅隆大学注册为研究生,并在西蒙指导下完成博士论文,于1957年获得博士学位。1961年纽厄尔离开兰德公司,正式加盟卡内基-梅隆大学,和西蒙及佩利(Alan J. Perlis,首届图灵奖获得者)一起筹建了该所大学的计算机科学系,这是美国甚至全世界第一批建立的计算机系之一,纽厄尔则和西蒙、佩利一起并称为卡内基-梅隆大学计算机科学系的“三驾马车”。据20世纪70年代任该系系主任达9年之久的乔依.特劳勃教授(Joe F. Traub ,现为纽约哥伦比亚大学计算机科学系教授)在掉念纽厄尔的文章中回忆,这“三驾马车”中,纽厄尔在建设和发展这个系中所起的作用最为突出,因为侧利早在1971年就应聘去耶鲁大学任教,离开了卡内基-梅隆;西蒙和纽厄尔两人则有个约定,西蒙把主要精力放在心理学系,纽厄尔把主要精力放在计算机科学系。因此,为卡内基-梅隆大学计算机科学系的建设与发展倾注了最大(甚至可以说毕生)精力,作出最大贡献的是纽厄尔。值得一提的是,纽厄尔、西蒙等计算机先驱在全力发展这个学科时有一个更远大的抱负,更深层次的考虑,即通过发展计算机科学改变整个学校,甚至改变匹兹堡市和宾夕法尼亚西部整个地区的面貌,因为二次大战以后,匹兹堡虽然获得了复兴,但在20世纪70年代初仍然是一个工业城市,以劳动密集型产业为主,城市污染严重。特劳勃回忆说,纽厄尔、西蒙和他经常在一起满怀希望地谈论如何通过计算机科学“绿化”校园,把匹兹堡改造成为科技密集型的新的城市,把宾夕法尼亚西部地区改造成为人类的美好家园。他们的这个理想现在已经实现了。卡内基-梅隆大学的计算机科学系长期以来在业界有极高的声誉,拥有像西蒙和第二代AI学者中的佼佼者雷迪(R. Reddy,1994年图灵奖获得者)等一批高水平的研究人员,而匹兹堡和宾夕法尼亚西部地区也早已成为在美国除硅谷之外最重要的IT产业基地之一了。在西蒙和纽厄尔这样一些“带头羊”的领导下,卡内基-梅隆大学曾经研制与开发过一些著名的计算机系统,对计算机技术的发展产生了重要的影响。例如C.Vmp,脉动阵列(Systotic array, 由美藉华人学者孔祥重——H. T. Kung首先提出的) 计算机Warp及和Intel合作实现的商品化的iWarp,产生式人工智能语言或叫专家系统工具(Expert System Tool)OPS(Offcial Production System),超媒体系统ZOG和KMS,为美国宇航局研制的六腿漫步机器人Ambler(拟用于在外星球表面观察和收集有关物理、气象和生物——如果存在的话——的种种资料) ……真是不胜枚举。

      纽厄尔生前的最后一个重大研究开发项目是和曾经是他的学生的莱尔德(J. Laird)和罗森勃洛姆(P.Rosenbloom)一起完成的更灵巧的AI软件SOAR(State, Operator, and Result)。SOAR是一个通用的问题求解程序,具有从经验中学习的功能,即能够记住自己是如何解决问题的,并把这种经验和知识用于以后的问题求解过程之中,所以和人类的智能更加接近。SOAR已被前述CMU的EDRC用于检索设计中的学习行为和灵活搜索行为。

      纽厄尔也有许多著作问世。与西蒙合著的有:

      《逻辑理论机:复杂的信息处理系统》(The Logic Theory Machine: A Complex Information Processing System, RAND,1956)

      《人怎样解题》(Human Problem Solving, Prentice-Hall,1972)

      与恩斯特(G.W. Ernst)合著了《GPS:概念生成和问题求解的案例研究》(GPS: A Case Study in Generality and Problem Solving, Academic Pr., 1969)

      与卡特(S.Card)等合著了《人类计算机的心理学》(The Psychology of Human Computer, L. Erlbaum Assoc.,1983)

      纽厄尔个人编写出版的主要专著有:

      《IPL V语言手册》(Information Processing Language V Manual, Prentice-Hall, 1961)

      《计算机结构》(Computer Structures, McGraw-Hill, 1971)

      《计算机与数学系统设计》(Designing Computers and Digital Systems, 1972)

      《认知的统一理论》(Unified Theories of Cognition, Harvard Uni. Pr., 1990)

      《SOAR:一般智能的体系结构》(SOAR: An Architecture for General Intelligence)

      纽厄尔生前是美国科学院院士,又是美国工程院院士。他是美国人工智能学会AAAI的发起人之一,并曾任该会主席(1979-1980)。他还曾出任美国认知科学学会(Cognitive Science Society)的主席。除了和西蒙共享1975年的图灵奖外,1971年AFIPS授予他Harry Goode奖,1992年6月,当时的美国的总统布什向他颁发了全国科学奖章(National Medal of Science)。在接受了美国科学界的这个最高荣誉之后一个月,即7月19日,纽厄尔因癌症去世,享年65岁。学术界为了掉念他,由米其翁(J. A. Michon)编辑出版了一本纪念文集,书名为《SOAR:对认知体系结构的展望:掉念艾伦. 纽厄尔》(SOAR: A Cognitive Architecture in Perspective: A Tribute to Allen Newell, Kluwer Academic Pub., 1992)。书中,他的同事、学生、朋友,以不同的方式表达了对这位敏于思考和发现,又虚怀若谷、平易近人的长者的尊敬和思念。

      ACM是在1975年10月20日在明尼苏达州的明尼阿波利斯(Minneapolis)举行的年会上向西蒙和纽厄尔颁发图灵奖的。西蒙和纽厄尔联合发表了演说,题为“计算机科学作为按经验进行探索的科学:符号和搜索”(Computer Science as Empirical Inquiry: Symbols and Search),刊载于Communications of ACM,1976年3月,113-126页,也可见《前20年的ACM图灵奖演说集》(ACM Turing Award Lectures_ The First 20 Years:1966-1985, ACM Pr.,)287-318页。演说中,西蒙和纽厄尔解释了他们之所以把计算机科学定义为“按经验进行探索”的科学的理由。因为在他们看来,现实世界中所存在的对象和过程,都是可以用符号来描述和解释的,而包含着对象和过程和各种各样“问题”都可以通过以启发搜索为主要手段去获得答案。对这种搜索进行公式化的技术则取决于对对象和过程理解的深度。根据上述概念,西蒙和纽厄尔认为程序可以在专家水平上,或者在有能力的业余爱好者的水平上去解决问题。更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1976 Michael O. Rabin and Dana S. Scott——非确定性有限状态自动机理论的开创者
      本文发表在 rolia.net 枫下论坛Michael O. Rabin and Dana S. Scott


      Citation
      For their joint paper "Finite Automata and Their Decision Problem," which introduced the idea of nondeterministic machines, which has proved to be an enormously valuable concept. Their (Scott & Rabin) classic paper has been a continuous source of inspiration for subsequent work in this field.
      ----------------------------------------------------------------

      1976年度的图灵奖由当时在以色列希伯莱大学任教的米凯尔.拉宾(Michael O. Rabin)和在英国牛津大学任数理逻辑教授的达纳.斯科特(Dana Steward Scott)共同获得。拉宾和斯科特是师兄弟,两人在20世纪50年代中期先后师从著名的逻辑学家和计算机专家阿隆索.邱奇(Alonzo Church,他因与Curry 一起发明了λ-演算以及提出了“任何计算,如果存在一有效过程,它就能被图灵机所实现”这一被称为“邱奇论题”的命题而闻名于世),并在有限自动机及其判定问题的研究中进行合作,奠定了非确定性有限状态自动机的理论基础。之后,他们的研究方向不尽相同,拉宾侧重于计算理论,而斯科特侧重于逻辑学在计算机科学中的应用,在各自的领域中又分别获得重大成果,作出了创造性贡献。

      拉宾1931年9月1日生于德国的布雷斯劳(Breslau ,第二次世界大战以后成为波兰的城市并改名为弗罗茨瓦夫)。他父亲是一名犹太教教士,也是一位博士,在当时很著名的布雷斯劳神学院教犹太历史和哲学,还当过院长。拉宾的母亲也是知识分子,有文学博士头街,年轻时即开始从事儿童文学的创作。纳粹布特勒上台以后,拉宾的父亲因为曾经在俄罗斯呆过,凭着政治敏感性,预感到会有动荡和麻烦,曾建议神学院迁往耶路撒冷,未获同意,于是全家于1935年迁回巴勒斯坦,躲过了一劫。1948年以色列建国以后,他们成为以色列公民。

      拉宾在濒临地中海的港口城市海法度过了他的童年和少年时代。由于阅读了著名微生物学家保罗.德克吕夫(Paul De Kruif)所著的《微型猎人》一书,激起了拉宾的想象,幻想自己成为微生物学家。一次他和比他高好几班的学生比试解欧几里德几何题,他赢了他们,这又使他对数学产生了兴趣,因此,从莱利学院(Reali College)毕业以后,他进入希伯莱大学学习数学, 在那里,他通过数学家克林(S. C. Kleene,因提出不动点定理——theorem on fixpoint 及正则集定理一theorem on regular set而闻名于世)所著的《元数学》一书首次接触到图灵关于可计算机的概念和图灵机这一理论计算模型,立即被深深吸引。但为了打好自己的数学基础,他的硕士论文没有以此为课题,而选择了当时由德国女数学家埃米.诺特(Emmy Noether, 1882-1932)创立不久的抽象代数中关于可交换环理论中的一个问题。获得数学硕士学位以后,拉宾去了美国,因为20世纪50年代初,以色列建国伊始,经济与科技都还不够发达,很少有人研究计算这类问题,甚至连许计算机都没有。 拉宾到美国后,先在宾夕法尼亚大学攻读博士学位。拉宾的博士论文课题将他所熟悉的抽象代数和他感兴趣的可计算性问题联系在一起:群(GROUP)的可计算性问题。 拉宾的论文中证明了与群众有关的许多问题, 如群是否符合交换律等, 都是不能由计算机解答的。

      但是使拉宾成名的并非其博士论文而是源于IBM研究中心于1957年向他和他的师弟斯科特提供的一份暑期工作。公司允许他们作他们感兴趣的任何工作,于是拉宾和斯科特就联手研究图灵提出的计算模型,也就是图灵机。图灵机是一种禁止往磁带上写的计算机,叫有限状态自动机(finite state automata,缩写FSA)。图灵在研究这种机器时的基本信条是:机器在输入相同时,其“心智状态”也相同,即对于具有给定指令集的机器而言,一定输入的机器总是按同一方式运行的。拉宾和斯科特认为,这种具有“确定性”行为的机器带来了局限性。因此,他们定义了一种新的、“非确定性”的有限状态自动机(nondeterminis –tic finite state automata,缩写为NDFSA),这种机器在读取到一定的输入后,有一个可以进入的可能的新的状态的“菜单”可供选择,这样对给定的输入计算便不单一了,每个选择代表一种可能的计算。拉宾和斯科特将图灵的有限状态自动机从确定性一种形态扩展到非确定性的另一种形态,极大地推动了有限状态自动机理论的发展。虽然非确定性有限状态自动机的能力并不比确定性的有任何增加(拉宾和斯科特自己已经证明任何可以用非确定性机器解决的问题都可以在确定性机器上解决,而且提出了将非确定性机器转换为确定性机器的方法问题),但是它可以简化机器描述和加快解题速度,后来的实践证明,非确定性有限状态自动机在机器翻译、文献检索和字处理程序等应用中都起了重要的作用。拉宾和斯科特的研究成果过了两年才在IBM公司的研究和开发杂志上发表,这就是论文“有限自动机及其判定问题”(Finite antomata and their decision problems, IBM Journal of Research and Development, 3(1959),114-125页)。

      1958年夏天,拉宾又一次来到IBM。当时,“人工智能之父”麦卡锡(J. McCarthy,1971年图灵奖获得者)正在那儿研究往巴克斯(J. Backus, 1977年图灵奖获得者)发明不久的Fortran语言中加入表处理功能。他给拉宾出了一道难题:设计一种口令,即使口令被敌方窃去,也无法进入系统。拉宾经过艰苦探索,终于利用由冯.诺伊曼开发的一个单向函数解决了这个问题。所谓单向函数简单说来就是正向极易于计算而反向极难计算的函数,例如“平方取中”:

      y = [x2中间一半的位所组成的数]

      这样,当x为100位的数时,x2为200位的数,y则为这200位的中间100位所组成的数。由x算y是容易的,而由y求出x 则非常困难,因为可能的x非常之多。正是这个问题促使拉宾进一步研究计算任务的最小计算量这一一般性问题,也就是计算的固有难度问题,从而成为最早研究计算复杂性问题的先驱之一。1959年和1960年,拉宾在耶路撒冷先后发表了有关此问题的两篇论文,即“计算速度和递归集合的分类”(Speed of computation and classification of recursive sets, 3rd Convention of recursive sets, Tech. Rep. No.1, O. N. R.,Jerusalem, 1960)。

      论文虽然没有用“计算复杂性”这个名词而用了“计算速度”和“计算难度”这类名词,但学术界公认这两篇论文是研究计算复杂性的最早、最权威的论文中的两篇,对1964年正式提出“计算复杂性”这一术语的哈特马尼斯(J. Hartmanis)和斯特恩斯(R. E. Stearns, 这两人是1993年图灵奖获得者)以及计算复杂性理论的另一奠基人布卢姆(M. Blum,1995年图灵奖获得者)都曾产生过深刻影响。其中布卢姆正是听了拉宾的有关演说才开始研究计算复杂性并完成其博士论文的。

      拉宾的研究成果在一定程度上改变了人们的研究方向。例如,波兰数学家普里斯伯克(M. Presburger)在1930年于华沙举行的一次国际数学家会议上所发表的论文中提出了这样一个命题:只包括自然数相加运算的数学系统是完备的,也就是说这样的系统在图灵机上都是可计算的。因此这被称为普里斯伯算术系统,不少计算机科学家试图编写出能证明这个系统中的定理的计算机程序。但拉宾指出,这是极其困难而无法实现的。对于只有100个符号的这样的系统,即使是1万亿台每秒运行1万亿次的计算机,也要运行1万亿年才能得出结果!1974年在斯德哥尔摩的IFIP大会上他作了一次学术演讲,公布了他和耶鲁大学的费歇尔(M. Fisher)的这项研究成果,宣称“这就是通向人工智能的理论障碍”。拉宾演说那天,正好是美国总统尼克松因水门事件被迫宣布辞职这一天,拉宾原以为代表们都去看尼克松演说的电视转播而不会有多少人来听讲,却不料演说一开始人们就潮水一样涌了进来,对演说的反应十分强烈,拉宾讲完以后人们在麦克风前排成长队向他提问。对于从事普里斯伯格系统研究的许多人来说,他们听了拉宾演说以后的感觉是非常难受,似乎“世界末日”到了似的。但拉宾本人则并不悲观,他认为应该放弃的只是以完全确定的方式去获得结果,这种结果可能出错,然而出错的可能性微乎其微,也就是说可以把概率算法(probabilistic algorithm,或叫随机算法,randomize algorithm)用到这类问题中来,这是拉宾的又一个贡献。

      所谓概率算法,就是带有随机操作的一类算法。这种算法在计算的某一步或某些步产生符合规定要求的随机数,然后根据产生出的随机数决定下一步的计算。例如,在计算的某一步有两种选择:执行A或执行B。此时随机产生一个0或1。若产生的是0则执行A,若产生的是1则执行B。这相当于根据掷一枚硬币的结果(正面或反面)决定下一步的计算。

      将概率的思想用到算法中始于数值计算,在计算方法中通常称作蒙特卡罗法,是在20世纪40年代中提出的。它的基本思想是建立概率模型,通过统计模拟或抽样得到问题的近似解。通常要求计算结果的期望值等于问题的精确解,并且计算误差的期望值随可供使用的时间增加减小。近20年来概率算法在非数值计算中得到很好的应用。例如,已经设计出关于排序和搜索、素数判定、有限域上的多项式分解和求根、字符串的模式匹配等方面的有效概率算法。概率算法同样也应用到并行计算中,得到概率并行算法。

      利用这种概率算法的思想拉宾在1974年斯德哥尔演说时就已有了萌芽,但还不够成熟。第二年休假时他去了麻省理工学院,得知了加里.米勒(Gary Miller)的研究工作。米勒证明,利用著名的黎曼假设(G. F. B. Riemann,1826-1866,德国的数学家兼物理学家),可以用一般的确定性算法判断很大的数是否是素数。拉宾利用米勒的研究结果和数论中关于素数密度的理论,终于在1976年提出了一个判定素数的概率算法,取得了极大成功,这个算法的理论根据是:当n是合数时,在1到n-1的整数中有一半以上是n为合数的“见证人”。算法的基本做法是:随机地产生一个1与n-1之间的整数b,检查b 是否是n 为合数的“见证人”。若b是“见证人”,则计算结束并得出n 为合数的结论;否则重复这个过程。至多进行k次,若产生的k个随机数b都不是n 为合数的“见证人”,则得出n为素数的结论。算法所需要的时间为O(log3n)。当计算的结果是n为合数时,结果肯定是正确的。但是,“n为素数”的结果有可能是错误的。此时n 为合数的概率,即得出错误的概率不超过1/2k。当k 足够大时,这是一个很小的数。譬如,取k=10,错误的概率小于0.001。这已经是在实验中不大可能发生的事件了。实践表明,算法在实际使用中几乎不会给出错误的结论。

      拉宾的一个同事普拉特(V. R. Pratt)用拉宾的算法编写了一个程序,在1975年冬找到了当时最大的素数2400-593以及最大的孪生素数k×338+821和k×338+823(k 是小于300的所有素数的乘积),创造了世界记录。拉宾的算法目前仍然是寻找素数的最快算法之一。

      概率算法在分布式计算、通信、信息检索、计算如何、密码学等方面都有广泛的应用。目前,在连接高度并行的计算机的专用网络上发送信息的算法就是拉宾的另一个同事瓦里安特(L. Valiant)所设计的一种随机算法,这种算法不将信息直接发往目的地,而是先发送到任意一个节点,然后再由该节点发往目的地。瓦里安特证明这种看上去似乎疯了的方法能有效地减少网络中的竞争,避免阻塞。这正是随机化的威力和魅力所在。在密码技术中目前广泛采用的公开密钥体制(public key)和RSA算法(Rivest-Shamir-Adleman algorithm)也使用了拉宾的随机化和概率技术。当然,好的技术也可以用来干坏事:1988年11月在Internet上广泛传播的病毒正是拉宾在哈佛大学时的一个大学生罗伯特.莫里斯(Robert Tappan Morris)利用学到的随机化技术设计出来并加以传播的。

      斯科特比拉宾小一岁,1932年10月11日生于加利福尼亚洲,在加州大学伯克利分校获得学士学位以后,进入普林斯顿大学研究生院深造,与拉宾一起师从阿隆索.邱奇。邱奇对学生要求很严,布置的问题也很难,斯科特开始时难以适应,精神很紧张,经常夜里做恶梦。但经过努力,终于可发从容应付。1957年暑假他与师兄拉宾一起完成了对图灵机的研究,提出非确定性有限状态自动机的理论以后,在1958年取得博士学位。之后他先后在芝加哥大学、加州大学伯克利分校、斯坦福大学、荷兰的阿姆斯特丹大学、普林斯顿大学和英国牛津大学等国际知名的高等学府任教。1981年被卡内基-梅隆大学聘为计算机科学、数理逻辑和哲学教授。

      斯科特的主要兴趣和研究方向是逻辑学。他对逻辑学的研究涉及面很广,包括集合论、模型论、自动机理论、非经典逻辑中的模态逻辑(modal logic, 表达“必然”与“可能”这样一些概念的逻辑)和直觉主义逻辑(intuitionism logic)。直觉主义逻辑是为克服数学研究中出现的悖论而提出的,由荷兰数学家布劳维(L. E. J. Brawer,1881-1996)所创立,直觉主义逻辑认为数学是第一位的,逻辑是第二位的,逻辑只是数学思维的抽象,是正确的数学实践的反映。而数学的唯一来源是数学思维中固有的一种带构造性的直觉,这些观点和现今计算机科学与人工智能的研究相吻合,因而受到计算机科学家和人工智能专家的极大重视。斯科特在这些领域中都有不同程度的贡献。

      但斯科特的最大贡献则是他与斯特雷奇(C. Strachey, 1916-1975)合作,在20世纪60年代提出了程序设计语言的“标志语义模型”(denotational semantic model),为标志语义学(denotational semantics)又称数学语义学(mathematical semantics)奠定了坚实的基础。在标言语义学出现之前,英国学者霍尔(C. A. R. Hoare,1980年图灵奖获得者)已经在对一阶谓词演算扩充了一组公理和一组推导规则的情况下建立起了公理语义学(axiomatic semantics)作为程序设计语言语义形式化的一种方法,并曾被成功地用来描述Pascal等语言。但公理语义学是不完备的。标志语义学把语言中的每一成分与一个数学对象相对应,称为从前者到后者的映射,后者即称为前者的“标志”(标志语义学的名称即由此而来)。这个数学对象是某个区域的元素,该区域从数学上来说是一个“格”(lattice),格中的偏序以“定义范围小于等于”来确定。标志语义学还规定,这种映射是层次结构的,映射函数则往往是递归的。这样,语言中和每一元素既可解释为一个函数,又可解释为一个数据元素,这正好与程序的以下特性串加以处理。标志语义学一经诞生,就获得了学术界广泛的欢迎,不但被成功地用来定义Ada等大型程序设计语言,还被成功地用来定义大型数据库和大型操作系统等。充分显示了它的生命力。IBM公司的维也纳实验室后来还开发出元语言META IV,成为用标志语义描述大型软件的强有力工具。后来它进一步发展为维也纳开发方法VDM(Vienna Development Method),成为支持程序开发的一般的形式化方式。国际标准化组织ISO正在制定有关VDM的规约语言VDM-SL(VDM- Specification Language)。

      在建立标志语义学的过程中,为了奠定其数学基础,斯科特还创建了域论(domain theory),以回答语义域方程是否有数学对象作为它的一个解,以及是否存在一种有效的方法,可以定义这种数学对象上的可计算函数,并且把描述程序设计语言的标志语义所需的函数都包括在内这样一些问题。域论虽然是斯科特研究标志语义学的“副产品”,但它本身由于其重要性而已成为一门独立的数学分支学科,受到广泛的重视。(在有些文献资料中,标志语义学被译成“指称语义学”)

      在获得图灵奖之前,拉宾曾于1974年获得由Rothschild基金会所颁发的数学奖,斯科特则于1972年因在数理逻辑方面的出色贡献而获得美国数学会的Leroy P. Steele奖。1980年拉宾又被授予哈维科技奖(Hervey Prize Sci. & Tech.)。

      拉宾和斯科特是在1976年10月20日于休斯敦举行的ACM年会上被授予图灵奖的。两人分别发表了图灵奖演说,拉宾的演说题为“计算复杂性”(Complexity of Computations) , 斯科特的演说题为“逻辑与程序设计语言”(Logic and Programming Language),它们刊载于Communications of ACM, 1977年9月,625-641页,也可见《前20年的ACM图灵奖演说集》(ACM Turing Award Lectures——The First 20 Years:1966-1985,ACM Pr.),

      47-62页及319-338。

      拉宾目前既是美国哈佛大学生教授,又是耶路撒冷伯莱大学教授,两地奔波,而他的家则留在以色列。他的电子信箱为:

      rabin@deas.harvard.edu

      斯科特仍在卡内基-梅隆大学计算机科学系,他的电子信箱为:

      dana.scott@cs.cmu.edu更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1977 John Backus——FORTRAN和BNF的发明者
      本文发表在 rolia.net 枫下论坛John Backus


      Citation
      For profound, influential, and lasting contributions to the design of practical high-level programming systems, notably through his work on FORTRAN, and for seminal publication of formal procedures for the specification of programming languages.
      ---------------------------------------------------------------------------

      世界是复杂的,世界上的人和事更是处在瞬息万变之中,叫人捉摸不定。世界上第一个高级程序设计语言FORTRAN和最广泛流行的元语言BNF的发明人约翰.巴克斯 (John Warner Backus)获得1977年的图灵奖显然是绝对当之无愧和众望所归的。但是谁能想到,20岁之前的巴克斯却是个不爱学习、喜欢游荡的纨绔弟子,曾经被大学逐出门外呢?

      巴克斯1924年12月3日生于美国的历史名城费城,其父是阿特拉斯火药公司的职工。当时工厂常常出事故,发生爆炸,产量也上不去,但是谁也找不出原因。老巴克斯是一个机灵的人,他分析问题极有可能与从德国进口的昂贵的温度计可能并不那么精确有关,于是说明公司派他远度大西洋去德国了解和学习温度计的制造工艺,最后带回了一批好的温度计,终于解决了工厂的安全作业难题,他自己也由一名普通员工被提升为公司的首席化学家。第一次世界大战期间,美国的军火企业都开足马生产,大捞了一把,老巴克斯也因此显赫一时。战后,由于他没有获得原来许诺给他的在杜邦公司的职务,愤而离开化工界、军火界、改做证券经纪人,也发了一笔大财。因此,童年和少年时代的巴克斯生活条件相当优越,过得无忧无虑。在东海岸特拉华湾的海滨城市威尔明顿度过童年以后,巴克斯就学于宾夕法尼亚州波茨敦市很有名望的希尔学校,但他不爱学习,只盼望暑假到新罕布什尔州的暑假学校,在那里可以划船、嬉戏、度过美好的时光,因此巴克斯的学习成绩从来就不及格,拖了两年才勉强毕业,于1942年进了弗吉尼亚大学。由于本来就不爱学习,加上第二次世界大战已经爆发,1941年12月7日日本偷袭珍珠港以后,美国正式宣布参战,巴克斯更是只等着应征入伍,不思学习,把大多数时间花在舞会上,每周只去上一节轻松的音乐欣赏课,终于被学校处分,扫地出门。1943年巴克斯参军入伍,在乔治亚洲服役,当了一名下士,率领一个防空小队。在部队组织的一次能力测试中,巴克斯不经意地显露出了他的聪明和才能,受到上级赏识,陆军决定送他上学深造。这样,当他的战友们都被送往二次大战的战场上去的时候,巴克斯却上了哈弗福德学院(Haverford College)的医学院预科。但巴克斯对医学不感兴趣,也不喜欢那里的人,觉得他们只会背书而不会思考。因此巴克斯只学了9个月的医学就离开了那里,转到哥伦比亚大学学习数学。经过这番磨练,巴克斯已经从混沌走向清醒,开始正经学习。1949年他取得学士学位。但毕业时,巴克斯对自己的未来仍然没有打算,不知道到哪里去,也不知道干什么好。幸好一个偶然的机会,他到IBM公司的计算中心参观,在那里见到了IBM早期的SSEC计算机(Selective Sequence Electronic Calculator)。SSEC是一台电子管计算机,几个大柜子占满了一间大屋子,到处是电子管和电缆、电线。由于程序必须通过穿孔纸带输入,机器的成千上万个电子机械部件又不可靠,经常出故障,因此机房里操作员、管理员、程序员们忙成一团,查线路的,查手册的,讨论和争论问题的……气氛忙乱而热烈。巴克斯当时并不了解SSEC还不是真正意义上的电子计算机,它连存储程序的存储器都没有,但看到现场的环境和气氛,立刻心里一亮:这正是他要找的工作!这正是适合他性格的富于挑战性的工作!第二天他便向IBM公司的主管提出求职申请,经过一次测试顺利通过,巴克斯从此开始在SSEC上的三年工作。

      人们称巴克斯为“不知疲倦的发明家”。事实确实如此。进入IBM以后,巴克斯就全身心地投入工作。他接手的第一个较大的项目是计算“月历”,这是一个相当复杂而困难的问题,因为月历要能给出一年中任一时刻月亮所处的精确位置坐标,但巴克斯出色地完成了任务。接着,巴克斯和同事海尔里克(H. Herrick)一起又成功地开发出了一个叫Speedcoding的程序,用于浮点数运算。大家知道,浮点运算比定点运算复杂得多,浮点运算部件的设计与实现也困难得多,因此早期计算机大多没有浮点运算部件。但许多科学与工程计算问题又需要处理非常小的数或非常大的数,这怎么办呢?计算机的先驱冯.诺伊曼提出对定点数附以“比例因子”使这成为浮点数,从原则上解决了这个问题,但却给程序员出了难题:在不能确切知道计算的中间结果和最后结果的范围的情况下,如何设定比例因子?比例因子取小了,运算发生溢出;比例因子取大了,影响结果精度。这成了当时程序设计的一大难题。巴克斯和海尔里克的Speedcoding 成功地解决了这个难题,可以根据问题自动设置和调理比例因子,免除了程序员在这方面的麻烦。

      月历程序和Speedcoding程序的成功奠定了巴克斯作为出色的程序员在公司的地位,赢得了同事的尊敬和上司的器重。但巴克斯是一个永远不满足于现状、总想变革现实的人。鉴于当时用机器语言也就是二进制代码0和1进行编程和调试程序所带来的种种弊端——效率低,难于检查和发现问题,不便于交流,以及由此而导致软件开发费用高昂,等等,经过深思熟虑,巴克斯于1953年向IBM的老板卡斯伯特.赫德(Cuthbert Hurd)提交了一个备忘录,建议设计一种接近人类语言的编程语言代替机器语言,以从根本上提高编程效率,降低编程费用。意想不到的是,巴克斯这一对计算技术的发展起了如此重大影响的历史性建议遭到了当时任IBM公司顾问的冯.诺伊曼的强烈反对。由于对程序设计的高昂费用和代价不太了解,冯.诺伊曼认为巴克斯的建议是没有必要的,也是不切实际的。好在赫德比较开明而有远见,虽然冯.诺伊曼的声望和地位远比巴克斯高,他还是支持了巴克斯,批准了巴克斯的计划,使Fortran的诞生成为可能。1957年4月,经过巴克斯和他的同事们的艰苦努力,Fortran(由“公式翻译器”,即formula translator各取前几个字母组合而成)的编译器第一次在西屋电气公司订购的704计算机上成功运行,标志着一个时代(机器语言编程时代)的结束,另一个时代(高级语言编程时代)的开始。Fortran 语言主要用于数值计算,它的特点是接近数学公式,简单易用,功能逐步扩大,如允许复型和双精度浮点运算,子程序定义机制,输入输出的格式说明,允许布尔表达式,函数和子例程名可以作为参数传递,等等。作为世界上第一个高级程序设计语言,它对其后出现的上千种高级程序设计语言都有或大或小的影响,它本身也经历了许多重大的变革,有许多版本。据不完全统计,从20世纪50年代诞生至今,Fortran共出现过90多个版本,其中曾经流行的主要版本有Fortran I,1958年推出的能处理子程序,并可与汇编语言相连的Fortran II,1962年问世的Fortran III,1966年推出第一个Fortran语言标准称为Fortran 66,20世纪70年代修订为Fortran 77,1991年ISO批准新的Fortran标准称为Fortran 90,等等。在Fortran 90中,又有如下一系列的扩充与改进:

      (1) 数组运算机制;

      (2) 改善了数值计算;

      (3) 数据类型参数化,允许使用多种字符类型,满足各国字符处理的需要;

      (4) 从6种内部数据类型中派生出用户定义的数据类型;

      (5) 模块化数据与过程定义控制,提供了一种数据与过程包装的强有力的而又安全的形式;

      (6) 指针机制,允许创建和操作动态数据结构;

      (7) 增加自由形式的源程序形式;

      (8) 提供了过程的递归调用机制;

      (9) 提供了附加的控制结构,如do…end do, do while < condition>等。

      此外,还有许多为了满足解特定问题的需要而对Fortran 加以补充或修改而形成的高级程序设计语言,其中比较著名的有美国阿姆斯研究中心计算流体动力学分部对Fortran进行逻辑扩充、在ILLIAC III计算机上实现的CFD语言(Computational Fluid Dynamics,即计算流体动力学语言),这个语言依赖于能够执行向量及标量指令的机器语言,是与机器有关的;code and go Fortran,这是对Fortran III的一种改进版本,主要为了快速编译和执行;CONTRAN语言(Control Translator),这是综合了Fortran III和ALGOL 60语言的许多特点而形成的高级语言;LRLTRAN (Lawrence Radiation Laboratory Translator,劳伦斯福射实验室翻译程序),这是著名的劳伦斯福射实验室根据其特定需要在CDC公司的STAR-100计算机(这是20世纪70年代中期推出的一种大型快速计算机,其中央处理器包含两条浮点流水线和用于处理十进制数和字符串的行部件,指令系统中有硬件宏指令,能处理向量、稀疏向量及行,有磁心存储器、页面调度的磁鼓和磁盘存储器三级存储器,有4至12个16位的输入输出通道和一个128位的直接快速存取通道,是当时典型的单指令流多数据流系统)上开发的一种基于Fortran,但具有向量运算、位和字节操作以及指针操作的高级语言,特别适合于科学计算和系统程序设计。另外,在宝来公司 (Burroughs)20世纪70年代为美国国防部用于弹道导弹防卫数据实时处理而研制的著名PEPE计算机系统(Parallel Element Processing Ensemble,并行单元处理组合,实际上就是由多达1 000个处理单元组成的多处理机并行计算机系统)中,其核心软件是一种称为PFOR的并行的Fortran语言。此外,还有适合于有理函数计算的ALTRAN,适合于处理向量与矩阵的VECTRAN,等等,无不都是在Fortran的基础上设计、开发出来的,都可以认为是Fortran家族的“始祖”。还应该特别指出的是,曾经出现的成百上千个高级程序设计语言,绝大多数自从出世就没有流行过;有许多则风行一阵以后就很快销声匿迹,而Fortran则至今常胜不衰,保持着强大的生命力,这说明了它设计与实现两方面都是成功的,附带说一句,冯.诺伊曼于1957年不幸英年早逝,没有看到Fortran正式投入使用,但这位出生在匈牙利的天才科学家后来意识到了自己在这件事上的错误,没有坚持反对巴克斯的计划。

      基于Fortran的巨大成功,在1958年5月于苏黎世举行的一次国际性计算机会议上,决定成立一个委员会,以Fortran为基础,对它作进一步改进,以形成一种单一的、标准化的计算机高级程序设计语言。许多著名的计算机科学家都参加了这个委员会。它的工作成果就是Algol 58及随后的Algol 60等一系列版本。巴克斯也参加了这个委员会,而且对Algol融入了一些新概念、新思想、新功能,如局部变量、递归等由衷地感到高兴。但这时,基于开发Fortran的经验,巴克斯关注的重点已由定义语言本身转为如何清晰地描述和表达语言这个问题上,也就是要创建一个“元语言”(metalanguage)。经过不懈探索,1959年6月,在联合国教科文组织即UNESCO于巴黎召开的一个讨论程序设计语言的语法和语义的会议上,巴克斯在他提交的一篇论文中提出了如今众所周知的“巴克斯范式”BIF(Backus Normal Form)。巴克斯范式以递归方式描述语言中的各种成分,凡遵守其规则的程序就可保证语法上的正确性。BNF由于其简洁、明了、科学而被广泛接受,成为描述各种程序设计语言的最常用的工具。我们现在看到的各种程序设计语言文本中所给出的BNF,是Backus-Naur Form,即巴克斯-诺尔范式,也就是经丹麦数学家彼得.诺尔(Peter Naur)改进与完善过的巴克斯范式,实际上绝大多数又是经瑞士著名的计算机科学家沃思(N. Wirth)扩充过的巴克斯-诺尔(Peter Naur)改进与完善过的巴克斯范式,实际上绝大多数又是经瑞士著名的计算机科学家沃思(N. Wirth)扩充过的巴克斯-诺尔范式,即EBNF(Extended BNF)。沃思是1984年图灵奖获得者。

      巴克斯范式的左部是一个非终结符,非终结符用尖括号括起。右部是由非终结符和终结符组成的一个任意符号串。具有相同左部的产生规则可以共用一个左部,各右部之间以竖直线“|”分开。例如定义“标识符”的一组BNF公式为:

      <标识符>::= <字母>| <标识符> <字母>|<标识符><数字>

      <字母>::=a|b|c|…|x|y|z

      <数字>::=0|1|2|3|…|8|9

      我们目前常用的高级程序设计语言都是所谓冯.诺伊曼型的语言,也就是而向过程的语言,是以“逐词逐句”的方式工作的。巴克斯后来致力于开发非冯.诺伊曼型的语言,也就是函数式语言 (functional language)。这种语言的主要成分是原始函数、函数型和定义函数。程序就是函数,程序作用在结构型数据上,产生结构型结果。用这种语言编写的程序结构清晰,便于使用代数方法研究程序的特性。巴克斯后来推出了一种名为FP的函数式程序设计系统成为函数式语言的典型代表。此外,巴克斯也是归约机(reduction machine)这一不同于冯.诺伊曼的新的计算机体系结构的首创者。1972年,巴克斯在其为IBM公司的所撰写的研究报告“归约语言及无变元的程序设计”(Reduction Languages and Variable Free Programming)一文中最早提出了归约的概念。归约的基本思想是在函数的计算过程中通过替换不停地修改计算目标,直到被计算的目标已经是最小单元为止。这种方式不再具有变元的概念,所有的目标均是通过计算获得的。这一过程与纯函数的递归计算过程的代入方法相接近,因而可以把对归约机的研究与函数式程序设计语言的研究结合在一起,归约机的结构中一般包括递归机构和替换机构,归约方式则分串归约和图归约两种,前者实现按值调用,后者实现按引用调用。在巴克斯论文发表以后,一批学者致力于归约机的研究与开发,相继推出了GMD(Berklin,1975)、Callular(北卡罗莱纳大学Mago,1979)、AMPS(R. M. Keller,1979)、 ALICE(J. Darlington, 1981)等一批各种类型的归纳机。其中以树结构的Cellular最引人注意。

      巴克斯由于以上介绍的一系列重大成就而获得许多荣誉和奖励。除图灵奖外,1967年他获得IEEE的W. W. McDowell奖;1975年被授予美国全国科学奖章(National Medal of Science);1994年美国工程院授予他Charles Stark Draper奖。巴克斯是美国科学院院士,也是美国工程院院士。

      巴克斯是在1977年10月17日于西雅图举行的ACM年会上接受图灵奖的。ACM评奖委员会主席萨梅特(J. E.Sammet)致词并授奖,巴克斯发表了演说,题为“程序设计能从冯.伊曼形式中解脱出来吗?函数式风格及其程序的代数”(Can Programming be Literated from the von Neumann Style? A Functional Style and Its Algebra of Programs),对他所开发的FP及其意义作了详细的介绍。演说全文刊载于Communications of ACM,1978年8月,613-641页,也可见《前20年的ACM图灵奖演说集》(ACM Turing Award Lectures——The First 20Years:1966-1985,ACM Pr.),63-130页。

      巴克斯已于1991年退休。更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1978 Robert W. Floyd ——前后断言法的创始人
      本文发表在 rolia.net 枫下论坛Robert W. Floyd


      Citation
      For having a clear influence on methodologies for the creation of efficient and reliable software, and for helping to found the following important subfields of computer science: the theory of parsing, the semantics of programming languages, automatic program verification, automatic program synthesis, and analysis of algorithms.
      -----------------------------------------------------------------------

      历届图灵奖得主基本上都有高学历、高学位,绝大多数有博士头街。这是可以理解的,因为创新型人才需要有很好的文化素养,丰富的知识底蕴, 因而必须接受良好的教育。但事情总有例外,1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特.弗洛伊德(Robert W. Floyd)就是一位“自学成才的计算机科学家”(a Self-Taught Computer Scientist)。

      弗洛伊德1936年6月8日生于纽约。说他“自学成才”并不是说他没有接受过高等教育,他是芝加哥大学的毕业生,但学的不是数学或电气工程等与计算机密切相关的专业,而是文学,1953年获得文学士学位。20世纪50年代初期美国经济不太景气,找工作比较困难,因学习文学现没有任何专门技能的弗洛伊德在就业上遇到很大麻烦,无奈之中到西屋电气公司当了一名计算机操作员,在IBM 650机房值夜班。我们知道,早期的计算机都是以批处理方式工作的,计算机操作员的任务就是把程序员编写好的程序在卡片穿孔机(这是脱机的辅助外部设备)上穿成卡片,然后把卡片叠放在读卡机上输入计算机,以便运行等程序。因此,操作员的工作比较简单,同打字员类似,不需要懂计算机,也不需要懂程序设计。但弗洛伊德毕竟是一个受过高等教育的人,又是一个有心人,干了一段操作员,很快对计算机产生了兴趣,决心弄懂它,掌握它,于是他借了有关书籍资料在值班空闲时间刻苦学习钻研,有问题就虚心向程序员请教。白天不值班,他又回母校去听讲有关课程。这样,他不但在1958年又获得了理科学士学位,而且逐渐从计算机的门外汉变成计算机的行家里手。1956年他离开西屋电气公司,到芝加哥的装甲研究基金会(Armour Research Foundation),开始还是当操作员,后来就当了程序员。1962年他被马萨诸塞州的Computer Associates公司聘为分析员。1965年他应聘成为卡内基-梅隆大学的副教授,3年后转至斯坦福大学,1970年被聘任为教授。之所以能这样快地步步高升,关键就在于弗洛伊德通过勤奋学习和深入研究,在计算机科学的诸多领域:算法,程序设计语言的逻辑和语义,自动程序综合,自动程序综合,自动程序验证,编译器的理论和实现等方面都作出创造性的贡献。其中包括:1962年,弗洛伊德完成了Algol 60编译器的开发,成功投入使用,这是世界上最早的Algol 60编译器之一,而且弗洛伊德在这个编译器的开发中率先融入了优化的思想,使编译所生成的目标代码占用空闲少,运行时间短。弗洛伊德优化编译的思想对编译器技术的发展产生了深刻的影响,随后,他又对语法分析进行了系统研究,大家现在熟知的优先文法(precedence grammar),限界上下文文法(bounded context grammar)等都是弗洛伊德在这个时期首先提出来的。优先文法解决了自底向上的语法分析中首要任务:如何找到“句柄”,也就是当前需要进行归约的符号串。弗洛伊德通过对不同的符号定义不同的优先级,解决了这个问题。限界上下文文法则通过对上下文无关文法G中的两个推导:

      S→*βAr→βαγ

      S→+δαw

      进行比较以确定α是否是δαw的句柄,以及产生式 A→α是否是唯一可进行归约的产生式。弗洛伊德经过研究,给出其充分必要条件为:β和δ的最后m个符号相同,γ和ω的最初n个终结符相同。这样一个上下文无关文法G就称为(m,n)限界上下文文法。

      在算法方面,弗洛伊德和威廉姆斯(J. Williams)在1964年共同发明了著名的堆排序算法HEAPSORT,这是与英国学者霍尔(C. A. R. Hoare,1980年图灵奖获得者)发明的QUICKSORT齐名的高效排序算法之一。此外还有直接以弗洛伊德命名的求最短路的算法,这是弗洛伊德利用动态规划(dynamic programming)的原理设计的一个高效算法。

      在程序设计方面,计算机科学家非常关心的一个重要问题是如何表达和描述程序的逻辑,如何验证程序的正确性。1967年,在美国数学会AMS举行的应用数学讨论会上,弗洛伊德发表了那篇引起轰动并产生了深远影响的论文,即“如何确定程序的意义”(Assigning Meanings to Programs)。这篇论文在等程序逻辑研究的历史上,是继麦卡锡(J. McCarthy ,1971年图灵奖获得者)在1963年提出用递归函数作为程序的模型这一方法以后最重大的一个进展。麦卡锡倡导的方法对于一般程序,包括大型软件确实是行之有效的,但它有一个不足,即对于许多以命令方式编写的软件,其中包括赋值语句,条件语句,用While实现循环的语句……对这样的程序用递归定义的函数去证明其正确性就很不方便了。正是为了解决这个问题,弗洛伊德在上述论文中提出了一种基于流程图的每一弧线上放置一个“标记”(tag) ,也就是一个逻辑断言,并且保证只要当控制经过这个弧线时该断言一定成立。弗洛伊德的主要贡献在于解决了基于这种标记的形式系统的细节,证明了这种系统的完备性,解决了如何证明程序终结的问题。弗洛伊德还引入了验证条件的概念,包括流程图的一个组成部分(方框、圆框等)及其入口和出口处的标记。为了证明带标记的流程图的正确性,只要证明其中每一组成部分的验证条件成立就行了。弗洛伊德提出的方法被叫做“归纳断言法”(inductive assertion method),或前后断言法(pre- and post- assertion method)。在框图每个断点I上所加的逻辑断言即标记就叫I点的归纳断言,说明程序执行经过此点时在各输入变量x和各程序变量y之间应存在的关系,以谓词Pi(x , y)的形式表示。若程序从断点I经过路段α到下一断点j的验证条件以Rα(x ,y)表示,y的值在α上的变化以hα(x ,y)表示,则只要能证明下式恒真:


      程序从I到j的部分正确性也就证明了。

      虽然用归纳断言法不能证明程序的完全正确性,因为它必须以程序能够终结为前提,但由于弗洛伊德在论文中同时也考虑了如何证明程序终结的问题,因此弗洛伊德的归纳断言法也就有了普遍的意义。

      弗洛伊德在同年发表于《ACM学报》(Journal of ACM)10月号上另一篇论文中,还第一次把“不确定性”概念引入程序。所谓“不确定性程序”(nondeterministic program)就是根据操作规则有多种操作可供选择,而只选其中之一搜索下去的程序。这对人工智能问题的研究具有十分重要的意义。

      此外,弗洛伊德还和伊万斯(R. O. Evans,因设计世界上第一个类比推理程序Analogy而闻名于世的学者。Anology是可以判定几何图形是否类似的人工智能程序)一起设计了一种称为产生式语言的特殊的程序设计语言FPL(Floyd-Evans Production Language),用来编写计算机语言的语法分析程序。之所以称它为产生式语言,是因为用它编写的程序由一系列产生式(或称归约式)组成。实际上,用FPL编好语法分析程序以后,如果再插入语义子程序,就可以构成一个完整的编译器。用FPL语言编写的程序简称FP程序,由以下5个部分按自左至右顺序组成:

      1.标号(可有可无);

      2.栈顶符号串;

      3.前看符号串(或称窗口符号串);

      4.归约符号;

      5.语义动作。

      执行一个FP程序的方法是:依次检视各FP的第三部分。若某FP的第三部分和输入的前看符号串一致,则进一步检视此FP的第四部分,若非空,表示要进行归约,此时把它的第二部分和当前实际的栈顶符号串相比。如果能匹配上,则实际归约,即实行归约,即删去实际的栈顶符号串,用第四部分代替之,然后执行第五部分的动作。若此FP的第四部分为空,表示当前无归约可做,直接执行第五部分的动作即可。

      弗洛伊德是1978年12月4日在华盛顿举行的ACM年会上接受图灵奖的。他发表了题为“程序设计的风范”(The Paradigms of Programming)的演说。演说全文刊于Communications of ACM,1979年8月,455-460页,也可见《前20年的ACM图灵奖演说集》(ACM Turing Award Lectures——The First 20 Years:1966-1985,ACM Pr.),131-142页。弗洛伊德在演说中对结构化程序设计,递归协同例程(recursive coroutine),动态程序设计,基于规则的系统,状态变换机制(state-tran-sition mechanism)等各种不同程序设计风范进行了比较,并介绍了自己在研究工作中如何根据具体情况应用不同风范的例子,很给人以启示。时间虽然已过去20多年,他的例子也许有些过时,但他的观点至今仍然是有效的更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 我只先读了这篇关于Floyd的,做一些说明~~我很崇拜此人~~此人是双学位, 58年获物理学士(也是芝加哥大学)~~此人和Knuth关系很密切,也是他的巨著中引用的最多的人~~此人结婚离婚各两次,四个孩子~~此人喜欢旅游~~此人已经于2001年逝世~~
        • 多谢朔爷捧场,没想到朔爷也是同道中人,可谓文武双全呀.Floyd确实是个异类,不过也是因为此才两次...的吧. 还有Turing居然有短袖之癖,E.W. Dijkstra 1952年至1962年间,他在阿姆斯特丹数学中心作了十年程序员...都让我诧异.
          • 哈哈,本少这两年也潜伏在某小机构做程序员,修心养性一段时间后再复出。
            • 哈哈哈哈,楼上几位真是说相声哪!一个说“也是”。。。大学,已经让我联想了一下了,然后是“短袖之癖”,觉得挺有意思,又来个“本少。。潜伏。。做程序员”。呵呵,我倒是领悟了,好像我们这种做过10年程序员的,该想着去领奖了。
              • typo,"短袖"应为"断袖"...gay 嘛,觉得对我的偶象不妥...哎,非让我说白了不可.
                • 为什么断袖就是gay呢?//gay是gay,没什么不敬的呀?
                  • 还不是在汉朝的时候,哀帝和一男士睡觉,忽有要事,起身时发现该男士压住自己一只袖子,因为不忍吵醒他,遂将衣袖割断,悄悄起身离去~~~这gay自古以来就有~~
                    • 呵呵,竟然有这样的典故。我也是看红楼梦知道那事儿是自古有之的,而且不会受人歧视。直到理想主义者搞了一夫一妻制,婚姻制,崇尚爱情,国家治理/界线。。。,把理想和法律强加于平民百姓,才出现歧视的。不过现在不歧视了,
                      反倒弄了个同性婚姻,呵呵,真是不知道说什么才好。套用马克思主义,事物发展是呈螺旋式上升的,绕来绕去还能绕到正面来,而且在不停地升格。哈哈。
    • 1979 Kenneth E. Iverson——大器晚成的科学家,APL的发明人(又一个加拿大的)(ZT)
      本文发表在 rolia.net 枫下论坛Kenneth E. Iverson


      Citation
      For his pioneering effort in programming languages and mathematical notation resulting in what the computing field now knows as APL, for his contributions to the implementation of interactive systems, to educational uses of APL, and to programming language theory and practice.
      -----------------------------------------------------


      1979年度的图灵奖首次授予一位加拿大学者、时在IBM公司沃森研究中心工作的肯尼思 . 艾弗森(Kenneth Eugene Iverson)。他是因为在开发交互式程序设计语言APL中作出开创性工作,从而为程序设计语言的理论和实践作出卓越贡献而获此殊荣的。

      艾弗森1920年12月17日生于加拿大艾伯塔省的卡姆罗斯(Cam-rose, Alberta)。第二次世界大战期间他被应征入伍而中断学业。1946年退伍后艾弗森进入位于安大略湖畔的城市金斯顿时(Kingstown)的昆士大学(Queen’s University)学习,兼修数学和物理,1950年大学毕业获得学士学位时艾弗森年已30。但他立志继续深造,进了美国哈佛大学研究生院,先后于1951年和1954年拿下应用数学的硕士学位和博士学位。他攻读学位时的导师是著名的数学家和计算机科学家、在20世纪30年代末40年代初设计了世界上第一台现代的自动计算机Mark I的艾肯教授(Howard Aiken,1900-1973)。当时的IBM总裁托马斯大林.沃森(Thomas Watson)正是由于支持艾肯的Mark I计划而把IBM从制造商业机器的公司引向计算机产业而发展成为“蓝色巨人”的。艾弗森的博士论文课题是用计算机求解线性微分方程时如何建立经济的I/O模型,这个论文课题诱导他设计与实现了著名的程序设计语言APL(A Program- ming Language)。APL以现有的成熟的数学符号为基础,加入许多基于数组(array,这是APL中唯一的数据类型)的基本运算符,就可以用极少、极紧凑的语句定义非常复杂的表达式。APL的两大与众不同的特点是:

      1.变量没有显式定义的类型。变量类型是由变量的具体用途确定的,这就是APL首创的所谓“弹性数据结构”(elastic data structure)。

      2.没有一般语言所常用的控制结构,如while, for, if- then-else等。这类控制结构在APL中被递归函数、数组操作及控制转移符“→”所代替(APL中的“→”相当于其他语言中的goto)。此外,APL中所有的运算符都具有相同的优先级,一律按从右到左的顺序进行计算,这也是同一般语言很不一样的。

      APL从构思到实现经历了一个比较曲折和长期的过程。艾弗森在完成其博士论文的过程中就提出了APL的初稿,最初仅是为了清晰而精确地表达问题以利于书写和教学而提出的。博士论文答辩以后艾弗森留校工作,对APL进行完善与发展,并试图在计算机上实现,但一直缺乏支持和客观条件。因此艾弗森于1960年离开哈佛到IBM的沃森研究中心,在这里他说明了他的一些同事和他一起在IBM的主机上实现了APL,这已经是他提出APL以后约10年的事了。有趣的是,艾弗森实现APL的经历和他的导师艾肯实现Mark I的经历十分相似:艾肯设计出Mark I以后,也是由于在哈佛没有得到足够的支持而转向私人企业寻求支持最后与IBM签订合作协议的。

      最早的APL版本采用解释方式而非编译方式,有人机交互功能,类似于台式的袖珍计算器,用起来很方便,因此在科学与工程计算,统计分析,财会等人员中很受欢迎。在程序设计语言发展的历史上曾经出现这样一件轰动一时的大事:1969年,IBM在其总部纽约州阿尔蒙克(Armonk)举行APL大会,出乎组织者意料来了500多人,而且群情激昂,要求IBM分发APL的拷贝,使IBM措手不及。这件事后来被人们称为“进军Armonk”(march to Armonk)。虽然作为一种通用程序设计语言,总的来说它不像Fortran 、Pascal、C等那样获得广泛采用,但它在早期程序设计语言的发展中起了积极的作用;此外,作为具有向量处理能力和一种语言,它也是后来对Fortran 语言进行扩充,使之成为具有向量和矩阵处理能力的语言——VECTRAN(VECTOR FORTRAN)的重要基础,而Fortran 90则是VECTRAN的进一步发展。由此可见APL在计算机程序设计语言发展史上的地位和功劳。

      在开发APL的过程中,艾弗森还发明了一组特殊的符号以描述计算机语言的形式结构,这组特殊的符号就被叫做“艾弗森记号”(Inerson notation)。艾弗森记号中运算符特别多,能对整个数组直接进行各种各样的运算。

      艾弗森在接受图灵奖后的第二年,即1980年就离开IBM,返回他的祖国,加盟多伦多的I. P. Sharp Associates公司,这家公司主要提供APL的产品和服务。1987年艾弗森从I.P. Sharp公司退休。

      艾弗森的主要著作有:

      《程序设计语言APL》(A Programming Language, John Wiley &Sons, 1962)

      《初等函数》(Elementary Functions, SRA,1966)

      《代数的算法处理》(Algebra: An Algorithmic Treatment, APL Pr., 1972)

      《初等分析》(Elementary Analysis, APL Pr.,1976)

      《自动数据处理》(Automatic Data Processing, John Wiley & Sons, 1963, 1969。本书是他与1999年图灵奖获得者布鲁克斯合著的)

      《科学家和工程师的APL导论》(An Intoduction to APL for Scientists and Engineers, APL Pr.,1966)

      艾弗森是在1979年10月29日于密歇根州的底特律召开的ACM年会上接受图灵奖的。艾弗森发表了题为“作为思维工具的符号”(Notation as a Tool of Thought)的长篇图灵奖演说,详细论述了APL的设计思想与特点,还给出了许多例子。演说全文刊载于Communications of ACM,1980年8月,444-465页,也可见《前20年的ACM图灵奖演说集》(ACM Turing Award Lectures——The First 20 Years:1966-1985, ACM Pr.),339-390页。

      艾弗森的电子信箱为:

      kei@interlog.com .ca更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1980 C. Antony R. Hoare——从QUICKSORT、CASE到程序设计语言的公理化
      本文发表在 rolia.net 枫下论坛C. Antony R. Hoare


      Citation
      For his fundamental contributions to the definition and design of programming languages.
      -------------------------------------------------------------------


      学过“数据结构”或“算法设计与分析“的人都知道著名的快速排序算法QUICKSORT;编过程序的人大概也都用过实现条件转移的最方便的语句——CASE语句。但是你知道这个算法和这个语句是谁发明的吗?它们的发明者就是获得1980年度图灵奖的英国牛津大学计算机科学家查尔斯.霍尔(Charles Antony Richard Ho- are)。当然霍尔之所以获得图灵奖决不仅仅是因为他发明了QUCKSORT和CASE,而是因为他在计算机科学技术的发展中,尤其是在程序设计语言的定义和设计、数据结构和算法、操作系统……等许多方面都起了重要的作用,有一系列发明创造,QUICKSORT和CASE只是其中的一小部分而已。

      霍尔于1934年1月11日诞生于英国南部。在坎特伯雷(Canter-bury)的国王学校(King’s School)度过中学阶段以后,进入牛津的莫顿学院(Merton College)学习数学,1960年取得硕士学位。之后他进入伦敦一家不大的计算机生产厂家Elliott Brothers 公司,为该公司的Elliott 803计算机编写库子程序,从此开始他的计算机生涯。QUICKSORT 就是他在那个时候用原有的SHElLSORT(以算法的发明人D.L.Shell 命令的通过调换并移动数据项实现排序的一种算法,发明于1959年)编程时分析了它的缺点而发明出来的。QUICKSORT具有“快刀斩乱麻”的特点,能迅速地对乱序作大幅度调整,特别适合于因多次追加、删除而变得杂乱无章的数据集合。QUICKSORT的发明是霍尔在计算机方面的天才的第一次显露,受到老板的赞赏和重视。第二年,霍尔接受了一个新的任务,为公司的新机型Elliott 503设计一个新的高级语言。但就在其时,他弄到了一份Algol 60报告的复印件,还参加了一个由狄克斯特拉(E. W. Dijkstra, 1972年图灵奖获得者)等人在布赖顿举办的Algol 60培训班,感到与其自己没有把握地去设计一个新的语言,还不如将比较成熟的Algol 60在Elliott 503上加以实现。霍尔和他的同事们的这个想法获得公司同意以后,由霍尔主持制定了明确的目标,即系统要安全可靠,生成的目标码要简洁、工作区数据要紧凑,过程和函数的入口和出口要清晰、严密等,还明确了整个编译过程采用一次扫描等原则。这样,Elliott Algol 的开发十分顺利与成功,它在1963年中推出以后大受欢迎,成为世界各国所开发的Algol 60的各种版本中在效率、可靠性和方便性等方面的性能指标都首屈一指的一个版本,霍尔本人也从此受到国际学术界的重视。国际信息处理联盟IFIP后来任命霍尔为2.1)的负责人,这个工作组的任务是维护和发展Algol。霍尔果然不负众望,主持设计了Algol X以继承与发展Algol 60。正是在Algol X的设计中,霍尔发明了CASE语句。CASE语句具有如下形式的语法结构:



      CASE E of

      C1:S1;

      C2:S2;

      ……

      Cn-1:Sn-1;

      Otherwise:Sn

      End

      其中E是一个表达式,称为“选择子”(Selector),每个Ci的值为常数,称为“分情形标号”,Si则为可执行语句。CASE语句的含义是:若E等于某个CI的值,则执行其后的Si(I=1,2,3…,n-1),否则执行Sn。某个Si或Sn 执行完之后,整个CASE语句也就执行完毕。由于CASE语句构成多路分支,程序结构清晰、直观,所以CASE语句后来几乎称为程序设计语言的标准,被各种语言广泛采用。在C语言中,没有独立的CASE语句,但它的SWITCH语句(开关语句)实际上是在CASE语句的基础上形成的:

      switch E

      {case C1:S1;

      case C1:C2;



      case Cn-1:Sn-1

      [default:Sn];}

      不同之处有二:一是Ci可以是表达式,但计算机结果必须仍是常数;二是E的结果若不等于某个Ci(I=1,2,3,…,n-1)的值,,则视有无default子句,若有,执行Sn;若无,则什么也不执行,控制转向SWITCH后的语句。显然,这些都是对CASE语句的进一步改进。

      霍尔于1968年离开Eliott,离开产业界,原因是作为学者他对程序设计语言的形式化定义这类更偏重于学术性和理论性的课题更感兴趣。离开Elliott以后,他当过一年英国国家计算中心主任,发现自己也不适于从事行政管理,因此又转入爱尔兰的昆士大学(Queen’s University), 从事教学和研究,1977年转入牛津大学。离开Elliott以后,霍尔在计算机科学理论的研究中发挥其特长,作出了许多创造性的重大贡献。首先是1969年10月,霍尔在Communications of ACM上发表了他那篇有里程碑意义的论文“计算机程序设计的公理基础”(An Aciomatic Basis for Computer Programming)。在这篇论文中,霍尔提出了程序设计语言的公理化定义方法,即公理语义学(axiomatic semantics),也就是用一组公理和一组规则描写语言应有的性质,从而使语言与具体实现的机器无关,而且也易于证明程序的正确性。这是继麦卡锡(J. McCarthy,1971年图灵奖获得者)在1963年提出用递归函数定义程序,弗洛伊德(R. W. Floyd, 1978年图灵奖获得者)在1967年提出基于程序流程图的归纳断言法以后,在程序逻辑研究中所取得的又一个重大技术进展。霍尔提出的方法在逻辑上与弗洛伊德提出的方法类似,但不是用流程图而是用代数法,即控制流用以下一些结构表示:

      begin a1;a2;a3;…;an end

      if p then a1 else a2

      while p do a

      后面为了方便,我们用到第一个结构时省略首尾的begin 和end。

      相应于弗洛伊德的验证条件,霍尔引入下列符号:

      p{a}q

      其意义是:如果在执行a 之前p(叫做precondition)成立,则当a执行完了后q(叫做postcondition)成立。

      霍尔给出了以下一组证明规则(proof rule)或叫推导规则:


      这个规则中的p’→p和q’ →q是普遍数理逻辑中的断言命题,表示若P’(或q’)成立,则p(或q)成立。这个规则表示,若横线以上的p’→p、p{a}q、q→q’成立,则横线以下的p’{a} q’成立。


      这个规则表示,如果在将e赋给x之前P(e)成立,则其后P(x)成立。


      这个规则表示的是“传递律”(transitive law),即如果执行a之前p成立,a执行完了以后q成立;而如果执行b之前q成立,b执行完了以后r成立,则若在动作序列a 和b执行之前p成立,则a和b执行完了以后r成立。


      这个规则中的∧和∽是一般数理逻辑中的合取(conjunct- ion)和否定(negation)连接词。这个规则定义了if-then-else 的执行取决于precondition的值。


      这个规则定义了while循环:p是循环不变量(loop invariant),而q终止循环的条件。

      下面我们举一个例子说明如何用霍尔建立的系统验证程序的正确性。设有计算 n的阶乘n!的如下程序:


      则通过下列霍尔断言可以证明上述程序是正确的,因为这些断言都是真的,而且在霍尔的系统中是可以被证明的,而最后一个断言正是我们所要寻求的结论,因此它们形成对上述阶乘程序正确性的证明。


      因为(vi)中的precondition正好是 n的初始条件,而Postcondition给出了所需结果,这样就证明了程序可算出n!。

      为了给出证明,应该从程序的最后一行开始逐步后推。在这个例子中,(ⅲ)步是最关键的,其中y≥0∧x×y! = n!就是循环不变量或归纳假设(induction hypothesis)。

      利用霍尔提出的这种方法,已经成功地描述了PASCAL等语言,说明了这个方法的巨大威力。但应该指出的是,霍尔的这个方法是不完备的,因为霍尔在开发和建立这个系统时并没有追求系统的完备性,而更多地追求系统的实用性。

      在数据类型、数据结构和操作系统设计等方面,霍尔也做了许多开创性的工作。目前广泛流行与应用着的许多概念都源于霍尔的工作。例如,关于抽象数据类型的规格说明(Specificati –on,也叫规约)与其实现是否一致,就是由霍尔于1972年公式化了的。霍尔通过前后断言方法用已经定义了的(抽象)数据类型给出所要定义的新类型的抽象模型,这成为抽象数据类型规格说明的两种主要方法之一,即模型方法(另一方法为基于异调代数理论的代数方法)。对于操作系统的设计与实现十分关键的monitor(监控程序)的概念也是霍尔首先提出,并界定了它的作用与功能,即作为操作系统的核心,在把操作系统看作虚似机扩充时,monitor是硬件的第一次扩充,它完成中断处理,进程处理机调度。Monitor为外面各层的设计提供良好的环境,并提高系统的安全性。

      20世纪70年代后期,霍尔又深入研究了运行在不同的机器上的若干个程序设计语言、互相交换数据的问题,实现了面向分布式系统的程序设计语言CSP。在该语言中,一个并发系统由若干并行运行的顺序进程组成,每个进程不能对其他进程的变量赋值。进程之间只能通过一对通信原语实现协作:Q?x表示从进程Q输入一个值到变量x 中;P!e表示把表达式e 的值发送给进程P。当P进程执行Q?x,同时Q进程执行P!e 时,发生通信,e 的值 从Q进程传送给P进程的变量x。CSP语言后来成为著名的并行处理语言OCCAM(由INMOS公司为Transputer开发)的基础。20世纪80年代中期,霍尔又和布鲁克斯(S.Brools)等人合作,提出了“CSP理论”TCSP(Theory of Communicating Sequential Processes),它与上述CSP不同,但又有联系,这是一个代数演算系统,其基本成分是事件(或动作)。进程由事件和一组算子构造而成。TCSP采用“广播式通信”,而不像程序设计语言CSP中那样采用握手式通信,即只有当并行运行的各进程都执行同一动作时,才发生通信。此外,TCSP采用失败等价作为确定进程等价的准则,这就是著名的“失败语义”。利用失败可以构造TCSP的指称模型。霍尔为失败等价建立了一些公理系统,可以对语义上的等价关系进行形式推导。霍尔在这方面的工作开创了用代数方法研究通信并发系统的先河,形成了所谓“进程代数”(process algebra)这一新的研究领域,产生了很重要的影响。

      霍尔的论著极多,而且都很有份量,有很高的学术水平。有评论说,霍尔每发表一篇论文,几乎就要改变一次人们对程序设计的认识。这虽然是一种夸张的说法,但也说明霍尔的论著确实非常重要,ACM在1983年评选出最近四分之一个世纪中发表在Communications of ACM上的有里程碑式意义的25篇经典论文,只有2名学者各有2篇论文入选,霍尔就是其中之一(另一名是1972年图灵奖获得者狄克斯特拉)。霍尔入选的两篇论文分别是1969年10月的“计算机程序设计的公理基础”(An Axiomatic Basis for Computer Programming,这篇论文的要点我们前面已经介绍过了),另一篇是1978年8月的“通信顺序进程”(Communicating Sequential Processes),该论文奠定了前述CSP语言的基础。CSP现在已推广为“混合通信顺序进程”(Hybrid Communicating Sequential Processes)。在这个语言中,有一种特殊的语言称为“连续构件”,可表示一个具体给定初值的微分方程;而原有的通信语句可用来表达事件的起源和发生;语言中的顺序算子,条件算子等则用来刻画连续构件和通信间的耦合关系。

      值得指出的是,霍尔还和我国软件学者、中科院软件所的周巢尘研究员等合作,在20世纪80年代末由于Esprit 的ProCos项目的需要而对基于时态逻辑的逻辑型混合计算模型进行了研究,在这个模型中引入了时段和切变的概念,建立了时段演算,已引起该领域同行的广泛重视。时段用以刻画系统在一个时间区间上的连续变化,而切变则表示事件的发生(离散变量的变化)。在单个时段上,借助连续数学(微分方程理论)推导系统的行为;而在相邻时段间,则用时态逻辑中切变算子的规则,推导系统行为的转化。这种混合计算模型对于设计要求绝对安全的软件系统具有十分重大的意义。时段演算已在煤气燃烧器、铁路岔口控制、水位控制、自动导航、OCCAM语言的实时语义、描述调度程序的实时行为和电路设计等方面获得成功应用。

      此外,由法国学者阿勃利尔(J. R. Abrial)提出的以状态机为模型的著名的形式规约语言Z语言,也是由霍尔所领导的研究小组加以发展并实现的。

      霍尔出版的专著主要有以下几种:

      《操作系统技术》(Operating Systems Techniques, Academic Pr.,1972)

      《数理逻辑和程序设计语言》(Mathematical Logic and Programming Language, prentice-Hall,1985)

      《并发和通信的发展》(Development in Concurrency and Communica-tion,Addison-Wesley,1990)

      《机器推理和硬件设计》(Mechanized Reasoning and Hardware Design,Prentice-Hall,1992)

      除了获得图灵奖以外,霍尔还在1981年获得AFIPS的Harry Goode奖;1985年获得英国IEE的法拉第奖章;1990年被IEEE授予计算机先驱奖(Computer Pioneer Award)。霍尔曾应邀到过世界的许多国家讲学,我国中科院研究生院也曾于1983年邀请霍尔到北京讲学,并主办讨论班。

      ACM于1980年10月27日于田纳西州的娜什微拉(Nashville)召开的年会上举行了向霍尔授奖的仪式,由ACM评奖委员会主席卡尔松(W. Calson)致词与授奖,霍尔则发表了题为“皇帝的旧衣”(The Emperor’s Old Clothes)的演说。之所以用这样的标题,是因为霍尔不但在演说中叙述了自己的成功与经验,也回顾了他曾经遭遇过的失败与教训,他认为在失败中能学到更多的东西。

      霍尔的电子信箱为:

      carh@comlab.ox.ac.uk更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1985 Richard M. Karp——发明“万枚限界分”的三栖学者(ZT)
      本文发表在 rolia.net 枫下论坛Richard M. Karp


      Citation
      For his continuing contributions to the theory of algorithms including the development of efficient algorithms for network flow and other combinatorial optimization problems, the identification of polynomial-time computability with the intuitive notion of algorithmic efficiency, and, most notably, contributions to the theory of NP-completeness. Karp introduced the now standard methodology for proving problems to be NP-complete which has led to the identification of many theoretical and practical problems as being computationally difficult.
      -----------------------------------------------


      有“三栖学者”美称的理查德·卡普(Richard Manning Karp)获得 1985年度的图灵奖是众望所归的。卡普之所以被称为“三栖学者”是因为他知识渊博,贯通多个学科专业,因而同时被加州大学伯克利分校的电气工程和计算机系。数学系以及工业工程和运筹学系三个系聘为教授。这种情形在美国大学中都是不多见的。而卡普之所以被授予图灵奖,也是因为他在算法的设计与分析、计算复杂胜理论、随机化算法等诸多方面作出了创造性贡献。

      卡普1935年1月3日生于波士顿,从小时起就兴趣广泛,聪明过人。在哈佛大学时他文理兼修,1955年先获得文学学士学位,第二年又获得理科硕士学位。之后他进入哈佛大学的计算实验室攻读博士,于1959年取得应用数学博士学位。学成以后,他进入IBM位于Yorktown Heights的沃森研究中心,在那里工作近10年。从20世纪50年代末至60年代,正是计算机科学的创建时期,高级语言刚诞生不久,计算机应用开始被社会所重视并逐渐走向普及。在这种情况下,有关数据结构、算法、计算复杂性等课题吸引着众多学者的注意。IBM作为美国乃至世界最大的计算机厂商,理所当然地成为这些研究的中心之一,集中了大批最优秀的研究人员。卡普在IBM期间,主要是深入研究了与实际应用有密切联系的一系列数学问题,如路径问题、背包问题、覆盖问题、匹配问题、分区问题、调度问题等,取得了许多出色的成果。这些问题有一个共同的特点,即如果用图来表示问题,那末当图中增加一个结点时,需要考察的可能的解的数目就急剧增加,形成所谓“组合爆炸”(combinatorial explosion),使计算机的计算工作量大大增加,到一定程度就根本无法实现。以路径问题中最著名的旅行推销员问题为例,在卡普以前,最好的结果是 Rand公司的丹齐格(George Benard Dantzig)、福格申( R.Fulkerson)和约翰逊( S.Johnson)用手工和计算机相结合的办法,求出了包含49个城市的旅行推销员的最佳路线。卡普和他的同事海尔特(M.Held)经过反复研究,终于提出了一种称为“分枝眼界法”(branch-and-bound method)的新方法,用这种新方法实现的算法使旅行推销员能周游的城市数达到65个,从而打破了由Rand公司保持的记录。分枝限界法是一种构造性的探索法,可在整个允许的解空间中进行最优搜索。该方法的要点是:对解集合反复进行分枝,每次分枝时,都对所得的子集计算最优解的界。如果对某个子集求得的界不优于已知的允许解,则抛弃此子集不再进行分枝;否则继续分枝以探索更好的解,直到所得的子集仅含有一个解时为止。分枝限界法就其实质而言是一种求解策略而非算法,具体算法要根据实际问题的特点去实现。但由于这种方法在求解许多问题中都非常实用,因此常常被直呼为“分枝限界算法”,在几乎任何一本有关算法的书中都有介绍。

      卡普还研究过最大网络流问题。这个问题给定一个包含起点和终点的有向图,其中的每条边都有一定的容量限制。如果把边想象成管道,在其中流过某种物质,需要求出从起点到终点的最大物流量。这个问题对于输油管道、输气管道、公路网、通信网的设计都有很重要的意义。解决这个问题的第一个算法是福特(L.Ford)和福格申(O.R.Fulkerson)在1956年提出的,算法的要点是:从流量0开始,反复寻找满足如下条件的所谓增量路径:既能向该路径中注入尽可能大的流量,又能保证所有的边不超出饱和状态,直至无法找到新的增量路径为止。这个算法在多数情况下是有效的,但在某些特殊情况下效率很低,甚至无法绘出答案。卡普和埃德蒙多(J.Ed-monds)合作,在1969年对这个算法进行了改进,每次在寻找增量路径时选择包含的边数最少的路径,从而使算法的效率大大提高。改进后的算法的运行时间正比于结点数和边数平方的乘积。

      在对旅行推销员问题进行研究的过程中,卡普发现,无论对算法作何种重大的改进,也无论用何种更高效的新算法使旅行推销员能周游的城市数进一步增加(包括后来采用一种称为“多面体组合学”的方法把它转变为线性规划问题,从而使周游城市数超过300),解题所需的时间总是问题规模(在这里是城市数)的函数,且以指数方式增长。这引起卡普的深思,并促使他进入计算复杂性领域进行更深层次的研究。1967年,正好以色列学者、计算复杂性理论研究的先驱拉宾(M.Rabin,1976年图灵奖获得者)从希伯莱大学来到IBM公司的沃森研究中心作客座研究员,并且和卡普住在同一公寓大楼(卡普长期单身,直到1979年44岁才结婚成家),他们成了朋友,经常一起上下班,一起散步,拉宾在计算复杂性理论方面的深刻见解给了卡普很多启发。

      1968年,卡普离开IBM到加州大学伯克利分校工作。这里是计算机科学理论的又一个研究中心,库克(S.Cook,1982年图灵奖获得者)、布卢姆(M.Blum,1995年图灵奖获得者)等一批知名学者当时都在那里,学术气氛十分浓厚。布卢姆是计算复杂性理论的主要奠基人之一,库克则于1971年最早提出“NP完全性”问题。在这样的环境下,卡普对计算复杂性问题的研究日益深入。1972年,卡普发表了他的那篇著名的论文:“组合问题中的可归约性”(Reducibility among Combinatorial Problems,见由R.E.Miller和J.W.Thatcher所编纂,由 Plenum出版社出版的 Complexity of Computer Computations一书)。卡普的论文发展和加强了由库克提出的“NP完全性”理论.尤其是,库克仅证明了命题演算的可满足问题是NP完全的,而卡普则证明了从组合优化中引出的大多数经典问题,包括背包问题、覆盖问

      题、匹配问题、分区问题、路径问题、调度问题等,都是NP完全问题。只要证明其中任一个问题是属于P类的,就可解决计算复杂性理论中最大的一个难题,即P=? NP。这就是卡普论文的主要贡献和主要意义。这篇论文还有另外一些贡献。其一就是对计算复杂性理论中的术语进行了规范和统一。把有多项式时间算法的问题命名为P类问题,就是卡普在这篇论文中首次采用的,现在已为学术界所接受并普遍采用,这为学术交流带来了很大的好处。其二是卡普在刻画NP类中的“最困难”问题类时,提出了与库克归约不同的另一种归约方法,称作“多项式时间多一归约”,有时直接把它叫做“卡普归约”。卡普归约的要点如下:对于∑上的两个语言LI、LZ,若存在多项式时间可计算函数f: ∑*→∑*,使得对任何xε∑*,xεL1当且仅当f(x)εl2,则称l1多项式时间多一归约到l2,记为L1≤pm l2。这时,XεL1的判别可以通过计算f(x), 转化成f(x) εL2的判别。因此,L1≤pm l2更直观地理解为L1εD,都有L’ ≤pm l,则称L为D-m完全的。其三,卡普的论文给出了“多项式层次”(polynomial hierarchy)的基本思想。所谓多项式谱系,就是从库克归约和卡普归约出发,可建立P和NP类关于任何语言L的相对化定义,再自然推广到任何语D上,得:


      基于此,可将p和NP视为语言类上的一种算子,且有


      从语言类P开始,将算子NP重复地作用在其上,便产生类的无穷递增序列:

      P, NP, NP( NP), NP( NP( NP))

      把它们依次记为∑op, ∑1p,∑2p,∑3p…

      也即:


      这就形成了一个基本的复杂性类。此外可定义与它相关的其他两个复杂性类对和对如下:


      这三种复杂性类有下述基本关系:


      由此可见,


      由 ( k≥0)所描述的层次结构记为PH,即多项式谱系。

      卡普给出了多项式谱系的基本思想后,由迈耶(A.Meyer)和斯托克迈耶(L.Stockmeyer)在1973年给出了严格形式化定义,拉特霍尔(C.Wrathall)又给出了有关定理,成为研究计算复杂性的一个重要工具。

      除了以上贡献外,卡普在组合优化算法的概率分析、随机化算法等方面也有不少研究成果。近年来,卡普还致力于并行算法的研究,并有所创造。1996年11月,卡普和他在伯克利时的同事库勒(D.Culler)等人在 Communications of ACM上发表论文,提出了名为 LogP的一种并行算法的实用模型。这种模型的优点是对分布存储器并行系统的通信开销作了比较客观和科学的概括,因而引起学术界的重视。我国中科院计算所的学者已经基于LogP模型设计与实现了一种并行计算模拟器,取得了良好结果,详情请参阅《计算机研究与发展》,1997年 9月。

      卡普由于其多方面的贡献,获得许多荣誉与奖励。除图灵奖以外,1978年他获得美国运筹学与工业管理学会颁发的Lanchster奖,1979年美国数学会授予他Fulkerson奖,1990年美国运筹学会授予他冯·诺伊曼理论奖,1995年他获得Babbage奖,1996年美国科学院授予他全国科学奖章(National Medal of Science)。早在 1980年,卡普就已当选为美国科学院院士。

      卡普是在1985年10月于科罗拉多州的丹佛召开的ACM年会上接受图灵奖的。他的图灵奖演说题为“组合论、复杂性和随机性”(Combinatorics,Complexity and Randomness),是对上述课题的一个精彩综述,并且给出了一张有关组合优化和计算复杂性理论发展过程的年表,从1900年德国数学家希尔伯特提出“23个数学难题”开始,到20世纪80年代中期他演说时为止的进展和成果,很有参考价值。颁奖以后卡普还接受了记者卡伦·弗兰克尔.(Karen A.Frenkel)的采访,演说全文和采访时的对话刊载于 Communications of ACM, 1986年2月, 98- 117页,或可见《前 20年的图录奖演说集》( ACM Turing Award Lectures——The First Twenty Years: 1966- 1985, ACM Pr.), 433-466页。

      卡普除了在IBM、伯克利工作过以外,还曾在密执安大学、哥伦比亚大学、纽约大学和布鲁克林(Brooklyn)理工学院任教。目前则在华盛顿大学计算机科学系,其电子信箱为

      harp@ cs. washington. edu更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • Karp早就在1998回到伯克利了,只在华盛顿大学呆了4年。
        • 多谢...能否再讲多点呀?
          • 1994 California cut state education budget,
            1994 California cut state education budget, many older professors in UC are persuaded to retire early (with pay). Karp was invited by UW to go to Seattle for a position with very good salary. In 1998-9, the budget situation got better in California, so he was invited back to Berkeley. He is mostly working on computational biology now. He is Jewish, went to a prestigious prep school in Boston. He often joked that many of his highschool classmates are industralists and CEOs, but he is just a poor professor :-)
            • Nice Comments! 有趣的老头呀。谢谢。
    • 弓虽, 丁页.
    • 呵呵,俺对你如上提到的2个华人有点儿兴趣,于是搜了一下,看能不能找到原出处以便了解德更多,谁知竟搜出不记起数的网站(URL),不知道从CSDN(PIC)是不是可追出跟多一点儿?唉追了一早上了,累了,兴趣也减了,算了,等这你喂吧。
      • 我现在只能喂到1999年...本来就是抛砖引玉...结果等了这么久才把你等来..可见你刷网很不认真.
        • 呵呵,我一向混饭吃,Turing奖鼓励不了我的斗志。我就是看八卦的,所以直到王朔说有八卦的我才来翻翻。
          • 没有想到我躲在这里八吧..哈哈...
            • 呵呵,我刚做完辣白菜。一眼就看你躲这儿了。
    • 1986 John Hopcroft and Robert Tarjan——硕果累累的算法设计大师(ZT)
      本文发表在 rolia.net 枫下论坛John E. Hopcroft and Robert Tarjan


      Citation
      For fundamental achievements in the design and analysis of algorithms and data structures.
      ----------------------------------------------------------------------

      1986年的图灵奖由康乃尔大学机器人实验室主任约翰·霍普克洛夫特(John Edward Hopcroft)和普林斯顿大学计算机科学系教授罗伯特·陶尔扬(Robert Endre Tarjan)共享,而陶尔扬曾是霍普克洛夫特的学生。这师生两人由于在数据结构和算法的设计和分析方面的众多创造性贡献而共同获此殊荣,在业界传为美谈。

      霍普克洛夫特1939年10月7日生于西雅图。1961年在西雅图大学获得电气工程学土学位以后,进入斯坦福大学研究生院深造,师从著名的学者威德罗(Bernard Widrow)。威德罗是研究自适应信号处理和神经元网络的鼻祖。霍普克洛夫特1962年获得硕士学位,1964年获得博士学位,也就是说只用了3年时间就拿下了硕士、博士2个学位,其勤奋和聪颖由此可见。学成以后,霍普克洛夫特曾先后在普林斯顿大学、康乃尔大学、斯坦福大学等著名高等学府工作,也曾任职于一些科学研究机构如 NSF(美国科学基金会)和 NRC(美国国家研究院),从事对科学研究的规划和行政管理工作,但时间不长。

      霍普克洛夫特成为著名的计算机科学家起源于一个十分偶然的机会。他学习的专业是电气工程,对计算机科学原本没有多少知识,只学过一门“开关电路和逻辑设计”算是多少有些关系的。因此他原打算毕业后去西海岸的一所大学执教电气工程方面的课程。但就在毕业以前,有一次他偶然经过他的导师威德罗办公室的门口,当时,普林斯顿大学的麦克卢斯基教授(Edward McCluskey,他也是一位著名的学者,是研究数理逻辑的专家,他和奎因(Quine)共同创造的化简开关函数的一种方法就被叫做奎因一麦克卢斯基法(Quine-Mc-Cluskey method)。他还曾出任 IEEE计算机协会的主席。)正为筹建“数字系统实验室”打电话给威德罗,请他推荐毕业博士生去那里工作。威德罗一眼瞥见从门口走过的霍普克洛夫特,觉得勤奋好学、悟性又高的这位得意门生正是一个值得推荐的人才,当即把他叫进办公室,并把电话听筒递给了他。霍普克洛夫特在电话里听了麦克卢斯基对普林斯顿大学拟建数字系统实验室的考虑和打算,以后又前去面谈了一次,实地了解一番以后,一则普林斯顿大学作为美国一流大学的名望吸引着他,二则对数字系统这一全新的学科领域产生了强烈的兴趣,霍普克洛夫特欣然放弃了原先的计划,接受了普林斯顿的聘任,从而改变了他一生的道路。

      年青的霍普克洛夫特来到普林斯顿之后接受的第一项任务是开设一门新课:自动机理论。这对他来说是富有挑战性的,因为他之前并未接触过这个课题。面对挑战,他虚心地请麦克卢斯基推荐有关参考资料。由于当时没有任何一所学校开过自动机理论的课程,也没有一本自动机理论的书籍,对自动机理论这门课到底应该包含哪些内容,麦克卢斯基本人心里也没有底。但凭着他对计算机科学的深刻理解和对文献的广泛了解,他为霍普克洛夫特开列了包括图灵、麦柯劳赫(Warren McCulloch)和皮茨(Walter Pitts)、拉宾(M. Rabin)和斯科特(D. Scott,这两人是1976年图灵奖获得者)、巴克斯(J.Backus,1977年图灵奖获得者)和诺尔(P.Naur)、哈特马尼斯(J.Hartmanis)和斯特恩斯(R.Stearns,这两人是1993年图灵奖获得者)以及乔姆斯基(N.Chomsky)等人所写的6篇论文。基于这些论文,霍普克洛夫特对图灵的计算模型(也就是图灵机),麦柯劳赫和皮茨在研究神经网络中用0和1的串描述神经元所产生和传递的电脉冲,从而导出的正规表达式概念(regular expression),拉宾和斯科特的有限状态自动机理论,巴克斯和诺尔描述程序设计语言语法的BNF范式,乔姆斯基的上下文无关文法(context-free grammar)等等进行了深入钻研和消化,并加以分析、综合和比较,逐渐理出了头绪。他把有关自动机理论的上述分散而零星的材料全面地条理化、系统化,有机地联系在一起,成功地开出了新课,并为这门计算机科学中的基础性课程建立起了框架。后来,霍普克洛夫特和著名的计算机科学家。教育家厄尔曼(J.D.Ullman,1997年ACM优秀计算机教育奖获得者)合作编写了《形式语言及其与自动机的关系》(Formal Language and Their Relation to Automata,Addison-Wesley, 1969),这本书是学术界公认的在自动机理论方面有代表性的一部成功之作(此书中译本由莫绍授等译,科学出版社出版)。

      然而,霍普克洛夫特更感兴趣的课题是与实际应用有密切联系的“算法”。当时,算法复杂性理论虽已由哈特马尼斯、斯特恩斯和布卢姆(M.Blum,1995年图灵奖获得者)等人奠定了基础,但对具体算法的优劣和效率的判断尚未建立起客观和明确的准则,因此,往往出现这样的情况:有人公布了解某类问题的一种算法,给出对若干样本问题进行测试的执行时间;过了一段时间,另外一个人发布对它的“改进算法”,给出对相同样本问题进行测试的执行时间(当然比前者少,所以宣称算法获得了“改进”)。而实际上,执行时间的减少很可能是由于所用机器性能提高了,或者是所用语言比前者效率高所致,所谓“改进算法”实际上不见得比原算法高明。霍普克洛夫特对这种情况很不满意,决心加以解决。经过反复研究,他终于提出了一种“算法的最坏情况渐近分析法”(worst-case asymptotic analysis of algorithms),这种方法先确定问题的大小尺度,然后把计算时间当作问题大小尺度的一个函数去算出计算时间的增长率,以此衡量算法的效率和优劣。这个方法由于与机器性能及所用语言无关,成为测量算法好坏的数学准则,被学界所广泛认同和接受。

      但是导致他和陶尔扬共同获得图灵奖的最主要原因则是他们解决了图论算法中的一些难题,创造了新的、重要的数据结构和影响深远的算法。1970年,霍普克洛夫特在康乃尔大学获得一年学术休假(他是1967年被哈特马尼斯招至麾下的人他决定回母校斯坦福大学到克努特教授名下做研究,因为克努特虽然只比他年长一岁,但因在 1968年和 1969年连出两卷《计算机程序设计的艺术》(The Art of Computer Programming)而已名满天下,成为算法领域的权威。克努特知道霍普克洛夫特对算法有兴趣并有独到见解,就把他和自己的得意门生、研究方向也是算法的陶尔扬安排在一个办公室(也有资料说是相邻办公室),为他们的合作创造了条件。他们选择了图论中与实际应用有很大关系的图的连通性(connectivity,也就是图中任意两个结点是否都是相互可达的)和平面性(planarity,也就是图中所有的边是否都可以安排得互不交叉)的测试难题进行攻关。拿如下所示的平面图来说,它对印刷电路板设计这样一类问题有十分重要的意义。学过图论的人都知道,平面图判断问题的研究可以上溯到18世纪,伟大的数学家欧拉早就证明,若结点数为n,则当n等于大于3时,所有边数等于大于(3-6)的图都

      不是平面图。但过数小于(3n-6)的

      图是否是平面图呢?欧拉没有给予说明。

      1930年,波兰数学家库拉托夫斯基

      (Kuratowski)解决了这个问题,他给

      出了如下的判断法则:如果一个图既

      不包括5个结点的完全图(叫K5)

      作子图,也不包括6个结点的偶图(叫K3,3)作子图,则该图是平面图,否则为非平面图。所谓完全图(complete graph)就是任意 2个结点之间都有边的图,见图(a);所谓偶图(bipartite graph)就是可以把全部结点分成两个不相交的集合,所有边的
      两个端点分属于这两个集合的图,见图(b)。这个判据看似简单,但实现起来很难。对于有100个结点的图,用普通的算法,计算机需要1万亿步才能确定它是否是平面图。因此,寻找高效的平面图测试算法成为摆在当时计算机科学家面前的一大难题。霍普克洛夫特和陶尔扬都是富有创造性的人,又都善于合作共事,因此当两朵智慧的火花碰在一起时,就很快进发出耀眼的光芒!在解决这个难题的过程中,霍普克洛夫特首先提出了一种新的思路,经过陶尔扬的反复推敲和完善,一种适于解这类问题的新的算法终于诞生了,这就是著名的“深度优先搜索算法”(depth-first search algorithm)。利用这种算法对图进行搜索时,结点扩展的次序是向某一个分枝纵深推进,到底后再回溯,这样就能保证所有的边在搜索过程中都经过一次,但也只经过一次,从而大大提高了效率。新算法的运行时间是线性的,也就是说时间与图的大小成正比关系,大小翻一倍,解问题所需的时间也只翻一倍,不像用库拉托夫斯基判断的老算法那样,所需时间要增加60倍以上。利用他们创造的新算法,陶尔扬用 Algol W为一个包含900个结点和 2 694条边的图编制了一个测试其平面性的程序,程序只有 500行,在 IBM 360/67上运行,只用了 12 s就得到了结果。霍普克洛夫特和陶尔扬的研究成果在《ACM学报》(Journal of ACM)上公布以后,引起学术界很大的轰动,而他们创造的深度优先算法则被推广到信息检索、人工智能等方面成功地得到应用。在向霍普克洛夫特和陶尔扬授予图灵奖的仪式上,当年的国际象棋程序比赛的优胜者就说,他的程序在搜索可能的棋步时用的就是深度优先算法,这是他的程序所以能出奇制胜的关键。

      在取得辉煌成功之后,霍普克洛夫特和陶尔扬并不满足,继续致力于开发效率更高的算法。不久,他们又发明了一种新的数据结构叫“双雄栈叠”(pilee of twin stacks),这种数据结构使深度优先搜索算法的优点更加发扬光大。陶尔扬的一个学生用这种新的数据结构和深度优先算法编写了一个Algol W程序,只有250行,在IBM 370/168上测试有8000个结点的图的平面性,只用了8S。

      霍普克洛夫特除了和陶尔扬合作取得上述成果外,在数据结构和算法方面还有其他一系列创造。比如常用于索引组织的著名数据结构B树,是一种平衡的多分树,对查找、插入、删除等操作能始终保持动态平衡,具有很高的效率。霍普克洛夫特在对B树进行深入研究以后,为了进一步提高其操作效率和空间利用率,创造了它的一种变形叫“2-3树”,这种树的每个结点有2个键,每个键都有2-3个儿子。

      霍普克洛夫特著述颇丰,除前面已经提到过的他的处女作以外,还有以下多部著作问世。

      《计算机算法的设计与分析》(The Design and Analysis of Computer Algorithms,Addison-Wesley,1974)

      《数据结构和算法》(Data Structures and Algorithms,Addison-Wesley,1982,1983,1987)

      《自动机理论,语言和计算导论》(Introduction to Automata Theory, Languages, and Computation, Addison-Wesley,1979。本书有中译本,徐美瑞译,科学出版社出版)

      《计算机科学:成就和计算导论》(Computer Science: Achievements and Opportunities,SIAM,1989)

      霍普克洛夫特近期的研究兴趣集中在机器人学方面,这从他现任康乃尔大学机器人实验室主任这一点上可以看出。

      罗伯特·陶尔扬1948年4月30日生于加利福尼亚州的波莫纳(Pomona)。陶尔扬从小就是一个富于幻想、追求新鲜事物的人,幼时对天文学很感兴趣,梦想成为第一个登上火星的人。小学七年级时他开始看《科学美国人》杂志,尤其对著名数学家马丁·加德那(Marin Gardner)开设的趣味数学专栏深感兴趣(加德那是世界著名的科普作家,上海科技出版社1981年翻译出版了他著的《啊哈!灵机一动》,被中国科学家评为“20世纪科普佳作”之一而向读者进行推介)。1964年,陶尔扬参加一个中学生科学夏令营,第一次接触计算机,立即被神奇的计算机所吸引。因此,当他上加州理工学院时,虽然学的专业是数学,但同时还辅修了当时学校开设的所有有关计算机的课程。1969年他取得学士学位以后,进入斯坦福大学研究生院,师从著名的计算机科学家、1974年图灵奖获得者克努特。1970年,在克努特的有意安排下,他与到斯坦福来度学术作假的康乃尔大学教师霍普克洛夫特开始了对图论算法的共同研究。他们的这个课题实际上是在“人工智能之父”麦卡锡(J.McCarthy)的建议下进行的。当时陶尔扬正选修麦卡锡开设的符号处理课程,学习由麦卡锡开发的第一个人工智能语言Lisp。作为作业,麦卡锡让学生编写程序以验证给定的图是否是平面图,并建议学生们在程序中使用库拉托夫斯基条件。陶尔扬虽然一开始就意识到这样的算法效率太低,考虑另起炉灶,但不知从何人手。这时霍普克洛夫特提出的新思路启发了他,他经过仔细考虑和研究,对霍普克洛夫特的方案进行了细化与完善,终于使深度优先搜索算法完美实现,取得成功。

      1972年,陶尔扬以平面图测试算法为题完成了博士论文,以优异成绩通过论文答辩取得博士学位,这时离开他取得硕士学位刚刚一年。学成以后,陶尔扬先是跟随霍普克洛夫特去了康乃尔大学,以后又先后在加州大学伯克利分校、母校斯坦福大学和贝尔实验室工作过,其主要兴趣和研究方向仍是和生产、生活有密切联系的一些算法问题和发现新的数据结构。陶尔扬到康乃尔大学后研究和解决的第一个问题是所谓“合并- 搜索问题”,也是图论算法中的一个问题。在许多图论算法中,要将图的结点分成若干不同的组,叫做“分区”(Partition)。在算法过程中,不同的分区有时需要合并成较大的分区,这就是合并-搜索问题中的“合并”操作。算法中也经常需要判断两个结点是否属于同一分区,这就是合并-搜索问题中的“搜索”操作。为了提高效率,搜索操作应尽可能缩短搜索路径,这叫“路径压缩”。这个问题看似简单,其实不然,包括一些知名学者在内的人在研究和分析这个问题的时候都犯了这样那样的错误。陶尔扬深入研究这个问题,最后利用阿克曼函数(Ackermann function,这是数学家阿克曼在1928年找到的一个可计算、但不是原始递归的函数)成功地解决与分析了“合并- 搜索问题”。

      在研究合并- 搜索问题的过程中,陶尔扬还提出了“分摊”算法的概念。分摊(amortization)这个术语是陶尔扬从财会术语中借用过来的。陶尔扬发现,有时虽然单个查找操作可能很费时间,但通过路径压缩却可以大大减少以后的一些查找操作所需的时间,也就是说,一个查找操作额外做的工作可以“分摊”给从中受益的多个查找操作,因此从整体上看是提高了效率。分摊的概念将程序员的注意力从关注单个操作的时间引导到转而关注所有操作的平均时间,在算法设计与分析中引起了一场革命。

      1975年,陶尔扬和他的学生在斯坦福研究最大网络流问题。这个问题由于对天然气和石油管道、公路网、铁路网和通信网的设计有巨大意义而吸引了许多学者。福特(L.Foul)和福格申(D.Fulkerson)早在1956年就提出了解决这个问题的第一个计算机算法,但某些情况下效率不高,甚至无法找到正确答案。十年后埃德蒙多(J.Edmonds)和卡普(R.Karp,1985年图灵奖获得者)改进了这个算法,使之有更高的效率。陶尔扬发现,最大网络流问题的关键不在于算法本身而在于数据结构。经过艰苦探索,陶尔扬和他的学生终于发明了一种称为“动态树”(dynamic tree)的新的数据结构,在此基础上他们开发成功了前所未有的最大网络流高效算法,获得了广泛应用。1980年,陶尔扬在贝尔实验室继续研究这一课题,将他以前提出的分摊的概念用于网络流问题,发现如果不集中于最坏情况,而去关注平均时间,也就是说不谋求在最坏情况下有效,而谋求在分摊情况下有效,可以使最大网络流问题获得更好的结果。循着这一方向,陶尔扬和他的学生提出了“自调整”(Self-adjusting)数据结构的概念,并发明了一种有着良好特性的新的数据结构——“八字形树”(splay tree)。目前,在算法设计中利用陶尔扬提出的分摊概念以提高效率已成为重要的方法之一。

      2O世纪80年代初,陶尔扬一方面在贝尔实验室工作,一方面在纽约大学当兼职教授。他和纽约大学的几个研究生开始了一项新的研究——研究能长期保存信息的数据结构,即利用这种数据结构不但可以跟踪其最近的信息,还可以跟踪其过去的信息,陶尔扬称他们设计出来的这种数据结构为“持久性数据结构”(persistent data structure) 利用陶尔扬的持久性数据结构访问其当前信息的速度和通常的数据结构几乎一样快,要获得过去的信息也只需要程序付出一点点额外的代价。持久性数据结构已经在计算几何和并行处理中获得成功应用,但是它的更加重要的应用领域是时态数据库(temporal database),尤其是历史性数据库(historical database),随着这类数据库的发展,持久性数据结构将会大放异彩。

      陶尔扬由于一系列创造性工作而获得许多荣誉。除了图灵奖以外,1983年他被国际数学联合会授予以著名数学家内兰林那命名的信息科学奖(Neranlinna prize in information science),1984年美国科学院授予他研究创新奖(National Academy 0f Science Award for Initiatives in Research)。 1987年和 1988年他先后当选为美国科学院院士和美国工程院院士。

      在接受图灵奖时,霍普克洛夫特和陶尔扬分别发表了演说,前者的演说题为“计算机科学:作为一门学科的出现”( Computer Science:the Emergence of a Discipline),后者的演说题为“算法设计”(Algorithm Design)。两人还一起接受了记者卡伦·弗兰克尔(Karen A.Frenkel)的采访。两篇演说及与记者的对话刊于 Communications of ACM, 1987年3月,197-222页。颁奖典礼是在德克萨斯州的达拉斯召开的1986年秋季联合计算机会议期间举行的。

      陶尔扬目前还兼任总部在加州申尼维尔(Sunnyvale)的InterTrust公司的首席科学家。

      他的电子信箱为:

      ret@cs.princeton.edu更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1989 William (Velvel) Kahan——浮点计算的先驱(ZT),也是加拿大的.
      本文发表在 rolia.net 枫下论坛William V. Kahan


      Citation
      For his fundamental contributions to numerical analysis. One of the foremost experts on floating-point computations. Kahan has dedicated himself to "making the world safe for numerical computations."
      ------------------------------------------------------------------------
      继1979年的图灵奖授予一位加拿大学者艾弗森(K. E. Iver-son)之后,1989年的图灵奖又一(选择了一位加拿大计算机科学奖,这一次是威廉·卡亨(WilliamM.Kahan),他是因为在浮点运算部件的设计和浮点运算标准的制定上的突出贡献而获此殊荣的。

      卡亨1933年6月5日生于多伦多。完成中学学业以后,卡亨进入著名的多伦多大学。在那里,他实现了“三级跳”——继1954年获得数学学士学位以后,1956年和1958年又先后获得硕士学位和博士学位。学成以后,卡亨既在大学从事过教学和科研,又在一些著名的计算机整机厂元器件厂从事过重要的技术工作和产品开发工作。其中包括:1960-1968年在多伦多大学任教,1972-1973年在IBM公司工作,1974-1982年任 HP公司顾问,1976—1983年在 Intel公司工作,1983~1986年重返IBM,1986年以后在加州大学伯克利分校任教,同时在美国国家半导体公司兼职。这些经历使他积累了丰富的工程实践经验,并为计算机科学技术,尤其是在计算机运算技术的发展方面作出了重要贡献。

      大家知道,计算机中的“数”有“定点数”和“浮点数”之分,“定点数”的运算部件的设计与实现比较容易,而“浮点数”的运算部件的设计和实现却复杂得多,困难得多。因此,较早的计算机许多都不配备浮点运算部件。那么,需要浮点运算的时候怎么办呢?历史上曾经有过两种解决办法。第一是利用浮点运算子程序在定点运算部件上实现浮点运算。最早的浮点运算子程序是由1970年图灵奖获得者威尔金森(J.H.Wilkinson)在图灵所设计的ACE计算机上实现的。第二种办法是冯·诺伊曼提出来的,即对定点数附加以“比例因子”,使之成为实际上的浮点数。这个办法固然巧妙,但比例因子的设定成了令程序员伤脑筋的事,因为有时候运算的中间结果和最后结果的范围很难确切估计,比例因子选小了,造成运算溢出;比例因子选大了,影响运算精度。后来,巴克斯(J.Backus,1977年图灵奖获得者)和他的同事海里克(H.Herrick)一起开发出了一个叫Speedcoding的软件,能根据问题自动设定和调整比例因子,成功地解决了这个问题。这两种办法都是通过软件实现浮点运算的,虽然可行,毕竟是“权宜之计”,因为前者使浮点运算的速度大大降低,后者在数的取值范围和精度两方面都有很大限制,难以满足某些应用的需要。正是卡亨,在 Intel作期间,主持设计与开发了 8087芯片,成功地实现了高速、高效的浮点运算部件。目前,以8Ox86为CPU的计算机,若需完成科学与工程计算方面的课题,有些需配置8087这种数学协处理器(mathematical coprocessor)。一些著名的数学软件包,如 Mathematica,也必须在配有8087数学协处理器的机器上才能运行。除此以外,卡亨还为HP计算机的体系结构设计作出过贡献。

      由于有这样的背景,IEEE在制定浮点运算标准的时候,很自然地任命卡亨为这个课题的负责人。在卡亨的主持下,二进制浮点运算标准 IEEE 754以及与基数无关的(radix-independent)浮点运算标准IEEE 854相继出台。这两个标准至今仍为绝大多数的计算机厂商所遵守。

      除了以上主要贡献外,卡亨在科学、工程、财会计算的数值算法的设计、误差分析、验证与自动诊断等方面也有卓越的贡献,是该领域中世界公认的权威之一,曾发表过许多有影响的论文。尤其是在矩阵计算方面,卡享有极高的学术造诣。

      作为一名数学家,卡亨在教学与研究工作中素以作风严密、严谨、严格著称。但为此,他也付出了一定的代价。卡亨获得图灵奖以后的一个小插曲很能说明这个问题。事情是这样的:ACM于1990年1月宣布卡亨因在浮点运算标准的制定上的贡献而获得1989年度的图灵奖,并在1990年2月于华盛顿召开的’90CSC(计算机科学会议)期间正式向卡亨颁奖。这之后,ACM收到了一名读者对卡亨获奖表示异议的信。这名读者曾是斯坦福大学的学生,后来考进加州大学伯克利分校念研究生,入学考试时与卡亨教授发生过龃龉,后来在旧金山的一家软件公司工作。按照“言论自由”的原则,ACM把这封信不加评论地发表在《ACM通讯》7月份的“ACM论坛”(ACM Forum)这一专栏中。

      这名读者提出异议的理由主要有两条:一是凭“制定标准”就获奖,条件不足,而且他认为IEEE浮点标准是科学与技术上的一个错误,因为它妨碍了数学算法的发展,无助于非专家的一般用户避免出错。至于这个标准至今没有遭到更广泛的批评,只是因为它与A也、VHDL标准相比,潜在的不良后果较小而且。对上面这条理由,该读者大概也觉得并不理直气壮,因而并未发挥,匆匆带过。重点在第二条,即卡亨在伯克利大学当教授对学生不公正。不公正表现在哪里呢?该读者说,伯克利大学的大学生绝大多数课程都能取得高分,只有卡亨教授上的数据结构和程序设计课例外,这是其一。其二是该读者自己和其他4-5名学生在进入伯克利研究生院的初试中,6ti笔试课中的5门都顺利通过,只有卡亨教授主持的数值分析课的考试通不过,不得不重考。而他之所以未能通过,是因为他解题时注重步数少,认为这比运算结果的精度更加重要,而且他强调说他在斯坦福大学学习时,那里的物理专家和微分方程专家也都是这么看的,这么教课的。卡亨教授不同意他的这种观点,给他打了个“不及格”,让他重考。这封读者来信发表以后,10月份出版的《ACM通讯》上,在“ACM论坛”中发表了另一名读者表示不同意见的来信,这次是加拿大麦克马斯托大学(McMaster University)计算机科学系的一位老师发表看法。他认为,上述读者介绍的情况,恰恰说明卡亨教授对学生高标准,严要求,是值得称道的;而解题步数同运算结果的精度相比何者更重要,正确的一方显然是卡亨教授。因此这名读者表示,在看了上述读者的信之后,他只是更加增加了对卡亨教授的敬意,而不是相反。争论至此结束。值得我们注意的是,在这个过程中,图灵奖的评奖委员会和卡亨教授本人都没有出来就此说任何话。这一小插曲也许对我国的教育界和科技界有所启示。

      卡亨目前仍在伯克利计算机科学系任教授。他的电子信箱为:

      wkahan@cs.Berkeley.edu更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1990 Fernando J. Corbato——实现分时系统的功臣(ZT)
      本文发表在 rolia.net 枫下论坛Fernando J. Corbato


      Citation
      For his pioneering work organizing the concepts and leading the development of the general-purpose, large-scale, time-sharing and resource-sharing computer systems, CTSS and Multics.



      1990年度的图灵奖授予著名的计算机系统专家、麻省理工学院计算机科学与工程系教授费尔南多·考巴脱(Fernando Jose Corbato),以表彰他在实现世界上第一个分时系统CTSS及其后开发MULTICS中所发挥的巨大作用。分时系统的出现彻底改变了计算机的工作方式和使用方式,开创了多用户共享计算机资源的新时代,在计算机发展史上有划时代的意义。

      考巴脱是西班牙移民的后裔,1926年6月1日生于加利福尼亚州的奥克兰。考巴脱念高中时,第二次世界大战爆发,他在2年句完成了3年的学业,提前毕业进入加州大学洛杉矶分校,但只念了一年书,就应征入伍,参加海军。在经过培训和当了一年见习电子技师后,考巴脱在一艘驱逐舰供应船上任正式的电子技师,负责维护雷达、声纳等各种无线电电子设备。战时的这段经历对于考巴脱是一个极可贵的学习和锻炼,使他对电子线路和仪器设备十分熟悉,同时立培养了他坚韧的性格,为他日后的成功奠定了良好基础。

      战后,考巴脱进入加州理工学院学习,取得学士学位,然后去MIT深造,继续学习物理。在这里,他首次接触到“旋风”计算机Whirlwind并产生了浓厚的兴趣。旋风是由弗里斯特(J.W.Forrest)主持研制的世界上第一台存储程序式的、而且是并行工作方式的电子计算机,主要服务于军事应用,同美国的半自动地面防空系统SAGE实现连接,处理与分析从全国17个防区的远程警戒雷达所截获的信息。因此,当考巴脱在1956年获得博士学位后就留在学校的计算中心工作。 MIT的计算中心主任是菲力浦·莫尔斯教授(Philip Morse),这是一位极有远见和富于魁力的学者,MIT的计算中心就是经过他的努力争取而建起来的。当时的计算机都是昂贵的庞然大物,学校没有足够资金购置。莫尔斯教授说服IBM公司把一台最新的704型计算机安装在MIT,并建起了计算中心,其条件是机器三班工作,其中一班留给IBM公司使用。7O4是IBM公司于1954年开发成功的第一代计算机,是早期有代表性的科学计算用的大型计算机,在系统结构和技术上奠定了 IBM 7000系列机的基础。 704机已经采用磁心存储器,使机器的运行速度与可靠性大大提高。磁心存储器技术是1949年前后由美籍华人学者王安(Wang An)和研制旋风计算机的弗里斯特两人分别独立发明的,但 IBM 7O4磁心存储器中关键的穿线工艺是IBM以50万美元的低价向王安购买的。

      考巴脱在704上工作之初,计算机还是以批处理方式运行的。所谓“批处理”(batch processing),就是将编好的程序预先穿孔在卡片上或纸带上,通过光电的读卡机或读带机输入计算机,然后才能运行程序。一批程序运行完以后,再输入另一批穿孔卡片或纸带上的程序运行……这种方式使计算机的实际使用效率极低,计算机的CPU。内存等资源大部分时间处于空闲状态,不能发挥作用。1959年1月,当时也在MIT的麦卡锡(J.McCarthy,1971年图灵奖获得者)给莫尔斯教授提交了一份备忘录,首次提出“分时”(time-sharing)的概念,以解决批处理效率低下的问题。分时的基本思想是将CPU时间划分为许多小片,叫“时间片”(time slice),轮流去为多个用户程序服务。如果在时间片结束时该用户程序尚未完成,它就被时钟中断,等待下一轮再处理,计算机则让给另一用户程序使用。由于CPU速度很快,每个用户程序的每次要求都能快速响应,每个用户都感觉好像自己在独占计算机一样。莫尔斯对麦卡锡的设想十分赞赏,并鼓励手下的人去研究。于是在MIT成立了一个“长期研究委员会”(long Range Study Committee)负责实现麦卡锡的设想,麦卡锡、考巴脱都是该委员会的成员。但麦卡锡由于与委员会主席产生矛盾,中途离开MIT去了斯坦福,这样,实现麦卡锡设想的重任落在了考巴脱身上。

      1961年,世界上第一个分时系统 CISS(Compatible Time Sharing System)在考巴脱领导下研制成功并进行了表演。CTSS建立在改进的 IBM 7094型计算机上,可以为多达 30个联机用户以分时方式提供服务,同时也还可以为一个批处理作业流服务。批量作业在F0r.t。的监控程序 FMS(Fortran Monitor System)的控制下运行,这也是CTSS名称中包含“兼容”这一名词(compatible)的原因。CTSS的成功开创了以交互方式由多用户同时共享计算机资源的新时代,成为计算机发展史上有里程碑意义的一个重大技术突破与创新。由于分时系统的实现使昂贵的计算机的巨大效益和潜力得以凸显,因此它也成了计算机真正走向普及的开始。分时系统实现以后,各大计算机厂商的订单数都普遍剧增。

      CTSS开发成功引起了计算机的最大用户——美国国防部的高度重视,它立即作出反应,由它的高级研究计划署ARPA出资300万美元启动著名的MAC项目。MAC的目标是进一步完善CTSS,实现第二代分时系统。MAC仍由MIT和考巴脱牵头。考巴脱曾力图动员 IBM、DEC、Burroughs和 UNIVAC等计算机的大公司参加 MAC。但IBM当时正集中力量开发其360系列,无暇顾及,未能参与其事;其他公司也因种种原因未能如愿。最后由MIT、通用电气公司GE的计算机部以及贝尔实验室三家作为MAC的主要成员,承担了研制任务。其中贝尔实验室半途而废,退出了 MAC。 MAC于 1969年完成,推出了著名的分时操作系统MULTICS(MULTiplexed Information and Computing System,多路信息和计算系统)。 MULTICS最初在通用电气;司生产的 GE 645上实现,其主要功能是把有效的计算机资源分配够个远程用户程序,其服务方式十分类似于电信、电话,因而特别重视安全和保密问题。MULTICS的主要特点包括:

      1.首次在大型软件的开发中成功地采用了结构化的程序设计了法,使开发周期大大缩短,软件可靠性大大提高。

      2.成功地采用已有的成熟软件作为工具。MULTICS中的很大一部分程序是用其自身即CTSS来编写的,这在软件的继承性上是一 次成功的尝试。

      3.全部系统程序是用高级语言PL/I编写的,这就使系统程序王功能上独立于机器,极大地提高了系统的可移植性,也使它的普及较为容易。“

      但MULTICS在商业上没有取得很大成功。由于种种原因,MIT和GE都没有把MULTICS商品化,只有Honeywell公司和法国的Bull上司在20世纪 70年代初曾推出 MULTICS的商业版本。但 MULTICS作为现代操作系统的雏形,它所开创的~系列概念和技术,如内核。进程、层次式目录和面向流的I/O,把设备当作文件以简化设备管理等,都对后来的操作系统产生了很大的影响,甚至被作为基本技术。核心技术而被承袭下来,因而在计算机系统的发展史上占有重要的地位。例如,贝尔实验室的汤普森(K.L.Thompson)和里奇(D.M.Ritchie)当初就都是MAC的研制成员,后来他们在开发UNIX系统时就借鉴了来自MULTICS的许多思想。

      考巴脱的主要著作有:

      《兼容的分时系统:程序员指南》( The Compatible Time-Sharing System: A Programmer’s Guide, MIT Pr.,1963)

      《高级计算机程序设计:课堂汇编语言程序实例分析》(Advanced Computer Programming. A Case Study of a Classroom Assembly Program,MIT pr., l963 )

      考巴脱获得的荣誉很多。1966年他获得IEEE的首届麦克道凡尔奖,这个奖是为纪念在IBM服务长达38年,从1931年作为一个普通设计人员到 1950年成为 IBM程部主任,1969年退休时是 IBM副总裁的 William Wallace McDowell(1906-1985)而设立的。麦克道凡尔的贡献是将IBM公司从机电技术引向电子技术,最后又迅速转移到固态器件(即半导体和集成电路)上来。1980年考巴脱获得AFIPS颁发的 Hop G0ode奖。 1982年他又获得 IEEE的“计算机先驱”奖(The Computer Pioneer Award)。 1998年他获得 NEC公司的 C&C奖(两个C指计算机和通信)以表彰他“在建立现代操作系统的基本概念方面所作的开创性工作”。

      考巴脱现仍在MIT的计算机科学实验室工作,他的电子信箱为:
      corbato @ lcs.mit.edu更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1991 Robin Milner——标准元语言ML的开发者
      本文发表在 rolia.net 枫下论坛Robin Milner


      Citation
      For three distinct and complete achievements: 1) LCF, the mechanization of Scott's Logic of Computable Functions, probably the first theoretically based yet practical tool for machine assisted proof construction; 2) ML, the first language to include polymorphic type inference together with a type-safe exception-handling mechanism; 3) CCS, a general theory of concurrency. In addition, he formulated and strongly advanced full abstraction, the study of the relationship between operational and denotational semantics.
      ---------------------------

      1991年的图灵奖授予给了爱丁堡大学计算机科学系教授罗宾·米尔纳( Robin Milner)。他是继威尔克斯(M.V.Wilkes,1967)、威尔金森(J.H.Wilkinson,1970)和霍尔(C.A.R.Hoars,1980)之后第四位获此殊荣的英国科学家,这也使英国成为除美国之外获得图灵奖的学者最多的国家。米尔纳的主要贡献在计算机程序设计语言方面,他提出了形式化逻辑系统的一个数学模型LCF,又主持开发了元语言ML并使之标准化。米尔纳还利用代数方法为并发与并行计算创建了一种概念框架系统CCS,推动并促进了并发与并行计算的发展。

      米尔纳生于 1934年 1月 13日,先后在埃顿学院(Eton College)、国王学院(King’s College,图灵也曾在这个学院上学)和剑桥大学接受了高等教育,专业是数学,1957年获得学士学位。他上大学期间曾经接触过由威尔克斯主持研制的世界上第一台存储程序式电子计算机EDSAC,在它上面编写过程序。但当时米尔纳对计算机并没有重视,也没有表现出很大的兴趣。大学毕业以后,米尔纳当了几年中学数学教师,更是把计算机全抛在脑后。直到1960年米尔纳重新规划自己的未来,到伦敦著名的Ferranti公司求职。Ferranti公司当时正需要计算机编程人员,对有过编程经历的米尔纳表示欢迎,但要求他“把一生都献给计算机”。

      20世纪60年代初,计算机还没有十分普及。计算机的深刻含意是什么,从事计算机工作有多大前途和机会,这些问题对于绝大多数人来说都是不甚清楚的。因此,对于Ferranti公司这一要求,米尔纳也深感迷茫和困惑。所幸的是,米尔纳作出了正确的选择,进入Ferranti公司,从而重返计算机领域,并幸运地与计算机科学同步成长起来。

      但米尔纳在Ferranti公司只干了3年,以后就转入大学从事教学与研究。他呆过的大学包括伦敦城市大学,威尔士南部海港城市的斯旺西(Swansea)大学,美国的斯坦福大学,但长期与最后的落脚点则是爱丁堡大学,这是英国最著名、历史最悠久的高等学府之一,有优良的学术传统,在计算机科学,尤其是人工智能领域,其研究工作曾长期处于世界领先水平。

      米尔纳获得图灵奖主要是由于以下几方面的贡献。

      首先,在计算机程序设计语言方面,米尔纳和戈顿(M.J.Gordon)。等人一起提出了形式化逻辑系统的数学模型,实现了他称之为LCFN一个系统——“可计算函数的逻辑”(Logic for Computable Functions)。LCF不但是一种有效的建模工具,还是一种强有力的验证工具,利用它可以方便地验证计算机程序的正确性。由于在利用计算机解决各种各样的具体问题时,建立正确的形式化系统在理论上和实践上都具有重要的意义,因此米尔纳的LCF受到学术界的高度评价。实际上,米尔纳是受斯科特(D.Scott,1976年图灵奖获得者)的影响和启发才从事这一研究的。我们前面已经介绍过,斯科特是研究自动机理论,和拉宾(M.O.Rabin)一起提出了“非确定性”有限状态自动机的著名学者,后来在2O世纪60年代又和斯特雷奇(C.Strachey,1916—1975)合作,提出了程序设计语言的“标志语义模型”,为“标志语义学”(又称“指称语义学”或“数学语义学”)奠定了基础,对计算机程序设计语言的发展产生了重大的影响。斯科特曾到牛津大学访问、讲学,米尔纳听了他的讲演,看了他的著作,引起了对这个问题的极大兴趣,从而深入进行研究,并获得成果。2O世纪70年代初,米尔纳在斯坦福大学的人工智能实验室作访问学者时,曾用LCF证明了那里的一个很复杂的编译器的正确性,受到有“人工智能之父”之称的麦卡锡(J.McCarthy,1971年图灵奖获得者)的高度评价。

      在斯坦福大学期间,米尔纳学习了由麦卡锡主持开发的函数式人工智能程序设计语言LISP,这使他受到很大启发,进一步打开了他的思路和智慧之窗。回到爱丁堡大学以后,他借鉴LISP的经验,在LCF的基础上,花了几年的时间,开发成功了一个更加重要的系统,即ML,也就是元语言(metalanguage),一种用来描述、表达与验证其他语言的语言。ML是一种强多态类型的语言,一个ML程序也就是一个包含变量定义和函数作用的表达式序列,具有比LCF更强的推理能力。ML有时也被称为函数式语言,但与纯函数式语言有所不同,因为它具有引用的概念,即变量是可以赋值的。此外,它的输入/输出系统也引入了副作用。

      ML取得成功以后,米尔纳致力于使它国际化和标准化。在他的努力下,1984年成立了一个包括爱丁堡大学、剑桥大学和贝尔实验室等知名高等学府和研究机构的专家在内的15人工作小组,采取通过电子邮件交换意见进行设计的方式工作。20世纪90年代初标准ML即SML问世。SML具有高阶函数功能、I/O机制、参数化的模块系统和完善的类型系统。比如计算 1+ 2+ 3+…+ 10的值的 SML程序如下所示:


      米尔纳先一方面的贡献是关于并发计算(concurrent computing)和并行计算(parallel computing)的。由于并发与并行计算与传统的串行计算(sequential computing)有着本质上的不同,其复杂程度大大增加,无法用后者的方法和术语表达前者的意义。严格说来,所谓两个事件是“并发”的,是指一个系统内部发生的这两个事件之间没有因果关系,并非先后关系(当然,有因果关系者必有先后关系,但有先后关系者不一定有因果关系)。并发概念由发明著名的“佩特里网”的C.A.Petri于1962年首先严格定义并建立了模型。至于“并行”,指的是利用多个处理机或其他功能部件同时工作以提高系统性能或可靠性,冯·诺伊曼在20世纪叙年代提出细胞自动机可认为是并行计算思想的开端。米尔纳经过深入研究,提出了一种新的观点,把可以按任意次序在系统内发生的两个事件定义为并发事件,称之为“交叠式并发”,而佩特里定义的严格并发则称为“真并发”。在交叠式并发概念的基础上,米尔纳利用代数方法创造了一种用于建立并发与并行计算的概念框架的系统叫“通信系统演算”CCS(Calculus for Corn.municating Systems)。 CCS与霍尔(C.A.R.Hoars,1980年图灵奖获得者)所创建的“通信顺序进程”CSP(Communicating Sequential Process)是最典型的两个描述性并发模型,即进程代数模型,都以进程及进程间的通信为主要描述对象,系统中的事件就是进程通信,特别适合于描述分布式系统。CCS已经成功地用来解释用于书写通信协议规约的国际标准语言Lotos,而Lotos则已用于面向对象的R00A方法中,用来描述面向对象需求定义中的抽象数据类型和进程定义。CCS本身虽然只有交叠式语义,但利用一些特殊的方法,如多层佩特里网方法,也可以建立起一个完整的真并发语义,因此具有很重要的价值。

      米尔纳在学术上的一个特点是十分注意打好基础,精益求精。他主持开发和标准化的ML被认为是定义得最完善,最无懈可击,结构最优美、和谐而又最短小、精悍的语言之一。在作风上,米尔纳谦虚谨慎,从善如流,非常注意听取和吸收合作者的意见。例如,标准ML有允许设计“大模块”程序的功能,就是米尔纳根据贝尔实验室的麦克奎因(D.MacQueen)所提出的构思实现的。ML原先是一个专用语言,意大利学者鲁卡·凯德利(Luca Cardelli,当时还是一个正在写博士论文的研究生)实现了ML的一个扩充版本,使之更适合于教学。米尔纳看到以后十分赞赏,在它的基础上把ML进一步发展为一个通用语言。米尔纳的成功与他的这些优秀品格是分不开的。

      米尔纳的著作基本上就是他的成果的反映,主要有:

      《通信系统演算》(Calculus of Communicating Systems,Springer,1980)

      《通信与并发》(Communication and Concurrency, Prentice-Hall,1989)

      《标准 ML的定义》(The Definition of Standard ML,MIT Pr.,1990)

      《对标准 ML的说明》(Commentary on Standard ML,MIT Pr.,1991;Revised edition, 1997)

      此外,1996年,米尔纳和旺德(I.Wand)还合编了一本《明天的计算:计算机科学未来的研究方向》(Computing Tomorrow: Future Research Directions in Computer Science,Cambridge Uni Pr.),书中有包括米尔纳自己撰写的一篇文章在内的总共16篇文章,都是计算机科学各方面的专家撰写的,论述了在计算复杂性、软件工程、并行计算、自然语言处理、数据库、知识重用、实时计算、安全、通信、交互计算、人工智能等各分支中未来研究的方向和重要课题,根值得重视。

      米尔纳在接受图灵奖时发表了题为“交互的原理”(Elements of Interaction)的演说,并接受了记者的采访。演说全文以及与记者的对话刊载于 1993年 1月的 C0mmunications of ACM,78一97页。在与记者的谈话中,米尔纳表达了这样一个观点,即计算机科学既是理论性很强的科学,又是与应用和实践密切联系着的科学。因此,任何希望在这一领域取得成功的年轻人,必须十分重视把理论与实践结合起来。他送给年轻人这样一个忠告:“不要丢失连接!”(Don’t lose link!)。大家知道,“连接”(link)在计算机专业中是一个十分基本而重要的概念,任何高级语言程序在编译以后如果不经过连接,都是不能运行的。因此米尔纳用这句话来勉励年轻的计算机科学工作者,真是意味深长的。

      米尔纳在爱丁堡大学任教20多年,并于1986年创建了该校的计算机科学基础实验室(Laboratory for Foundations of Computer Science),并出任主任,英国科学与工程研究院对该所有长期的支持。最近米尔纳已离开爱丁堡,转至剑桥大学的计算实验室。他目前的电子邮箱为:

      Robin. Milner@c1.cam.ac.uk更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1992 Butler W. Lampson——从Alto系统的首席科学家到微软的首席技术官(ZT)
      本文发表在 rolia.net 枫下论坛Butler W. Lampson


      Citation
      For contributions to the development of distributed, personal computing environments and the technology for their implementation: workstations, networks, operating systems, programming systems, displays, security and document publishing.



      1992年度的图灵奖授予当时任DEC公司高级研究员和主任设计师的巴特勒·兰普森(ButlerWright Lampson)。对于中国读者来说,兰普森这个名字已并不陌生,因为他于1999年6月曾与雷迪(Raj Reddy,1994年图灵奖获得者)一起到北京参加了由《计算机世界》和微软中国研究院主办的“21世纪的计算学术研讨会”暨“中美顶级计算机科学家高峰对话”,会上,他发表了“21世纪的计算研究”的精彩演说,给国人留下了深刻的印象。

      兰普森1943年12月23日生于华盛顿。他曾在哈佛大学就读,学的是文科。1964年获得文学学士学位之后他进入加州大学伯克利分校研究生院,改修理工科,于1967年获得博士学位。留校任教4年以后,兰普森进入产业界,先后在施乐(Xerox)公司的 Palo Alto研究中心(即著名的PARC)和DEC公司工作,1995年加盟微软,任软件总工程师至今。

      兰普森首次接触计算机是在哈佛上物理课的时候,当时他的老师手里有个课题,要用计算机分析火花塞的照片,老师让兰普森在PDP-l上编制有关程序,他从此喜欢上了计算机。进伯克利以后他上的是物理系,那时伯克利正研制第一个商用的分时系统SDS-940,兰普森从一个朋友处知道了这一情况,极感兴趣,并积极主动争取进入该项目组,从此他放弃了物理学而进入计算机这一新兴领域。

      兰普森是一个兴趣广泛、多才多艺的计算机专家。他在硬件、软件、程序设计语言、计算机应用、网络…诸多方面都有许多成果,他拥有的专利数量多达25个。我们下面只给出兰普森曾主持或参与开发的主要系统和产品的一个小清单。

      硬件方面:在PARC时有以太网(Ethernet),Alto计算机系统和Dorado系统。在DEC时,兰普森主持了用世界上最快的计算机芯片Alpha作中央处理器的Alpha工作站体系结构的设计。这是当前世界上最负盛名的64位工作站,是所谓第四代工作站中的典型和佼佼者。

      软件方面:前述SDS-940和Alto的操作系统。

      程序设计语言方面: LISP、Mesa、Euclid、SNOBOL等。

      应用方面: Bravo编辑器, Star办公系统。

      网络方面: Grapevine电子邮件系统, Dover网络打印机。

      在上述系统和产品中,我们只简要介绍一下Alto,因为这是兰普森至今所开发的系统中最重要的一个系统,它所产生的影响也最大。

      Alto是PARC在20世纪60年代末70年代初设计与开发的世界。第一个个人计算机系统,1973年完成并正式投人运行。它是当时最先进的计算机系统,有一系列的新构思、新创造、新发明、新部件,其中最主要的是有高分辨率的全屏图形系统,在世界上首先实现了图形用户界面,打破了传统的只能用字符实现人机交互的限制,开创了计算机历史上有重大意义的新的一页,使计算机与人的关系上不再是“生硬”、“冰冷”,而是“友好”的。这一变革对计算机的推广应用至关重要。为此,Alto上配备有“鼠标器”(mouse),这是斯坦福研究下 SRI的恩格尔巴特(Douglas Engelbart,1997年图灵奖获得者)不久前发明的。但恩格尔巴特的鼠标器是木质的,体积也比较大,PARC对它的结构作了重大改进,使之小巧玲珑,已比较接近我们当前所使用的鼠标器。Alto的另一个先进外部设备是8时软盘驱动器,虽然8时软盘并非首次用于计算机,但PARC采用了一些新的技术,使Alto的8时软盘能存储的信息量在当时是最高的。此外,Alto上还配备了一些出色的软件。十分可惜的是,由于Xerox决策层的失误,Alto系统虽然在PARC内部被广泛采用,但它却没有被商品化推向市场,它在公众面前仅仅是作为相当出色但却十分昂贵的 Xerox 850专用字处理系统而露脸的。但 Xerox 85O上市以后,Alto的独特功能和出色性能立刻引起了业界许多人的注意,其中包括苹果公司的乔布斯(Sieve Jobs)。乔布斯组织他公司里的技术骨干到 PARC参观、座谈。学习,又从PARC挖去了一些参加过Aft。开发的技术人员,比如拉利·泰斯勒(Larry Tessler),然后仿照 Alto,先后推出了 Lisa机和 Macintosh机。Lisa机不太成功,Macintosh则大获成功,一炮打响,成为最受欢迎的高性能个人计算机系统之一。1999年末,美国《财富》杂志发布了“本世纪杰出产品”排行榜,40种著名产品榜上有名,信息技术只有两个产品挤身其中,一个是Intel公司的微处理器,另一个就是Macintosh。这样,半个多世纪中曾经涌现出来过的无数计算机产品,包括巨型机、大型机、小型机、微型机中,只有Macintosh一种型号被戴上了“世纪杰出产品”的桂冠,可见Macintosh的扭力和影响。但是,客观地说,Macintosh的成功和光荣至少有一半应归功于Alto。

      Alto的强大功能和优异性能来自它的超前的设计思想,即将计算机的体系结构和计算机所要采用的程序设计语言和操作系统等系统软件和支撑环境统一加以考虑,以集成方式设计和开发。这种设计思想是Alto成功的关键,同时也成为后来计算机系统设计的主导方向。著名的瑞士计算机科学家尼克劳斯·沃思(Niklaus With,1984年图灵奖获得者)正是作为客座研究员访问PARC期间参与了Alto的设计与开发,受到启迪和影响,在回到瑞士以后开发了Lilith系统和Modula-2语言的。

      由于Aft。的巨大成功和影响,ACM于1984年将“软件系统奖”授予了Alto,兰普森作为Alto的首席设计师是第一获奖人,第二和第三获奖人分别是泰勒(Robert W.Taylor)和萨克尔(Chares P.Thacker)。

      大家都知道,C语言是在BCPL语言的基础上发展起来的,但据兰普森自己在一次接受记者采访时透露,他和德契(Peter Deutsch)还设计过一种语言,并实现了这种语言的编译器,也是C语言的前身。

      除了在系统开发方面的诸多贡献之外,兰普森在解决计算机文件系统和分布式系统的技术问题上也有许多贡献。例如,20世纪70年代中期,兰普森在设计一个文件系统时就提出了“原子事务”(atomic transaction)的概念。在 1979年举行的一次可靠分布计算会议上,兰普森提出了采用“三明治式的提交协议”(sandwich commit protocol)提高系统可靠性的方案,等等。

      兰普森之所以有如此丰硕的成果,除了他的勤奋以外,一个很重要的因素是他既十分重视学习和继承,又敢于和善于创新。以兰普森在20世纪70年代开发的第一个交互式的编辑器/格式化器Brave为例,据兰普森本人介绍,就是他在恩格尔巴特推出的“在线系统”NLS( ONLine System)的基础上加上他自己的新构思而开发成功的。NLS是一个用鼠标定位和操作的全屏幕显示的结构化文本编辑器,兰普森在“文本如何表示”和“如何对文本更有效地进行修改”这两个问题上加进了自己新的设计从而形成了Bravo。Bravo后来又被进一步发展成为“所见即所得”(WYSIWYG)的系统。

      兰普森发表了不少论文,但出版著作不多,见到的重要著作是《分布式系统——体系结构和实现:高级课程》(Distributed System——Architecture and Implementation:an Advanced Course,Springer,1981)。

      兰普森从1987年起就一直担任MIT的兼职教授,并被选为美国科学院和美国工程院院士。目前他在微软拥有“首席技术官”的头衔,但这只是一个“空头衔”,因为他手下没有一个人,也不管理任何人和任何项目,他只“管理我自己”,研究自己感兴趣的课题,偶尔和比尔·盖茨(Bill Gates,微软的创始人和总裁,1999年末刚解除总裁职务,任命自己为“软件总设计师”)讨论问题和交换意见。他对微软的立种用人之道很欣赏,认为把“一个最好的技术人员变成最好的管理人员并不是一个好的主意,因为这样做的结果往往会损失了他的技术特长,而且技术人员做管理有时也不一定能变成一位最好的管理人员”(引自《计算机世界》报,1999年7月5日,A35版,记者对兰普森的采访报导)。以这种自由自在的方式,4年中兰普森已经为微软贡献了6项重大成果,其中一项是和MIT合作开发的用于Internet信息安全的加密算法。在网络日益普及的情况下,兰普森的这项成果意义十分重大。

      兰普森最近获得的一项奖励是IEEE在1996年授予他“计算机先驱”奖。综观兰普森的成就和贡献,他是无愧于这一崇高称号的。更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1993 Juris Hartmanis and Richard E. Stearns——计算复杂性理论的主要奠基人
      本文发表在 rolia.net 枫下论坛Juris Hartmanis and Richard E. Stearns


      Citation
      In recognition of their seminal paper which established the foundations for the field of computational complexity theory.

      ---------------------------
      1993年的图灵奖授予合作奠定了计算复杂性理论基础的两位学者尤里斯·哈特马尼斯(Juris Hartmanis)和理查德·斯特恩斯(Richard Edwin Stearns)。在此以前,已有拉宾(M.O.Rabin)、库克(S.A.Cook)、卡普(R.M.Karp)等学者因在计算复杂性理论研究中作出先驱性工作而分别在1976年、1982年和1985年获得图灵奖。哈特尼斯和斯特恩斯则在前人工作的基础上,比较完整地提出了计算复杂性的理论体系,并首次正式命名了“计算复杂性”(computational complexity),因而被公认为计算复杂性理论的主要创始人。

      哈特马尼斯是拉脱维亚人,生于1928年。二战期间,为躲避战火,哈特马尼斯一家人背井离乡,沦为“流民”(displaced person)。哈特马尼斯的中学学业就是在德国哈瑙(Hanau)的难民营中完成的。之后他进入德国马尔布克大学学习物理(Marburg是一座大学城,离法兰克福不远八两年半之后的195o年,哈特马尼斯获得资助,来到美国,进人堪萨斯城大学攻读硕士学位。但由于该校没有物理学的研究生课程,哈特马尼斯只得改学数学。他用了一年时间取得硕士学位,并被加利福尼亚理工学院接收为博士研究生,从事格论(lattice theory)的研究。4年后,哈特马尼斯完成博士论文,1955年取得博士学位,进入康乃尔大学数学系任教。但他在那里只工作了一年多,就转入通用电气公司设在纽约州斯克内克塔迪(Schenectady)的研究实验室,因为那里新建立了一个“信息研究部”,主任是理查德·舒伊(Richard Shuey)博士,开展有关计算机和信息学的研究,这一新的领域激发起了哈特马尼斯极大的兴趣和热情。

      当时,香农(Claude Elwood Shanon)的信息论问世不久,香农结出了一个公式,可以计算在一定的信号和噪声平均功率之下,给定带宽的信道在单位时间内的最大信息传输量(这个公式被叫做“香农公式”)。念过物理的哈特马尼斯受此启发,敏锐地想到,抽象的计算过程也应该有精确的定量法则,以确定为了对每一个问题求得解答,需要多少计算工作量。围绕这一设想哈特马尼斯和曾是普林斯顿大学的研究生,暑假到公司打过工,后来成为他的同事的斯特恩斯合作,开展了深入的研究,其结果就是那篇著名的论文“论算法的计算复杂性”(On the computational complexity of algorithms,Trams. Amer.Math.Soc.,177(1965),285-306页)。这篇论文开辟了计算机科学的一个新的研究领域,即“计算复杂性”,并奠定了它的理论基础。关于计算复杂性,本书前面已经作过一些简要的介绍,这里不再重复。

      哈特马尼斯于1965年离开通用电气公司,重返康乃尔大学,但不是回到数学系,而是负责筹建计算机科学系。由于他的眼光和魄力,也由于他的民主作风,康乃尔大学的计算机科学系吸引了一批著名学者加盟,成为美国大学中水平最高、影响最大的计算机科学系之一。这些学者中包括霍普克洛夫特(J.E.Hoperof,1986年图灵奖得主)、格利斯(D.Gries,1995年ACM优秀计算机教育奖获得者)、霍洛维茨(E.Horowitz)、韦格纳(P.Wegner)和肖(A.Shaw)等。

      20世纪90年代,哈特马尼斯曾经完成一项重要的工作。1990年4月,美国科学研究委员会(National Research Council)的计算机科学与技术部(现已改为计算机科学与通信部,缩写CSTB)建立了一个由16名专家组成的委员会,负责对计算机科学与技术在未来的对世纪中的发展方向和研究领域进行评估(Committee to Assess the Scope and Direction of Computer Science and Technology)。哈特马尼斯受命担任该委员会主席。委员中包括另外两名图灵奖获得者雷迪(R.Reddy)和格雷(J.Gray)。哈特马尼斯组织委员会委员和来自全美的 120余名学者共同努力,于1992年编写出版了《未来的计算——计算机科学与技术的广泛议题》(Computing the Future——A Broader AgendaF0r Computer Science and Engineering)一书。本书对 ZI世纪计算机科学与工程的研究、教育等重大课题进行了分析,对政府、产、学、研各部门如何适应新形势提出了一系列重要意见和看法,很值得我国科研管理部门和信息产业高层决策者重视。这本书和我们前面曾经提到的由米尔纳(R.Milner,1991年图灵奖获得者)等主编的《明天的计算:计算机科学未来的研究方向》(Computing Tomorrow : Future Research Directions in Computer Science,Combridge Uni.Pr.,1996)可以看作是姊妹篇。

      哈特马尼斯论著极多,除大量发表于杂志和会议的论文外,出版的主要著作有:

      《时序机的代数结构理论》(Algebraic Structure Theory of Sequential Machines,Prentice-Hall,1966)

      《可行计算和可证明的复杂性性质》(Feasible Computations and Provable Complexity Properties, SIAM,1978)

      《计算机复杂性理论》(Computational Complexity Theory,AMS,1989)

      哈特马尼斯还是著名的Springer出版社的《计算机科学讲课笔记》。(Lecture Notes in Computer Science)系列丛书的主编,这套丛书从 20世纪70年代问世以来,至今已推出2000多种专著,许多重要的计算机科学理论问题和新概念、新技术、新方法都是由这套丛书首先提出并展开与深入的,对推动计算机科学技术的发展起了重要作用。

      哈特马尼斯于3O岁结婚,妻子也是拉脱维亚人,但出生在德国。他们有3个子女。1988年哈特马尼斯60寿辰时,由塞尔曼(A.L.Selman)编辑出版了一本纪念文集《复杂性理论回顾》(Complexity Theory Retrospective,Springer,1988),其中包括若干对哈特马尼斯的生平和成就的介绍文章。

      与哈特马尼斯合作并共同获奖的斯特恩斯也是学数学的,1936年7月5日出生于新泽西州的卡特维尔(Caldwell)。1958年他在卡尔顿学院(Carton College)取得数学学士学位后进入普林斯顿大学,用了3年时间取得博士学位,其博士论文课题是关于博奕论的。

      斯特恩斯跨进计算机科学的大门并成为一名出色的计算机科学家是十分偶然的。1960年暑假他到通用电气公司打工,被分配到研究实验室新成立的信息研究部,这使他有缘与已成为那里正式职工的哈特马尼斯一起工作。学过物理而后改行数学的哈特马尼斯和专攻数学的斯特恩斯相结合,双方取长补短,相得益彰,使他们的合作富有成果。他们的第一个合作课题是关于时序机的状态分派问题的。这项研究进行得十分顺利,暑假打工结束时,他们已经完成了第、篇合作论文,这就是第二年发表于IRE Trans.on EC的On the state assignment problem for sequential machines(IRE-EC,1961年 12月,593-603页)。暑期临时工的经历虽然十分短暂,所做课题也和他的博士论文无关,但通用电气公司研究人员的素质和才能,那里浓郁、自由。活泼的学术空气,以及新的、充满机会的学科领域给斯特恩斯留下了十分深刻的印象。因此,一年后他一拿到博士学位,立刻毫不犹豫地应聘到通用电气公司工作,与哈特马尼斯再度携手,终于再创辉煌,很快完成了奠定计算复杂性理论基础的上述著名论文。

      说来有趣,斯特恩斯和哈特马尼斯在通用电气公司研究计算复杂性的最初几年,实验室里并无计算机可用。他们当时完全是依靠严密的理论分析提出有关计算复杂性的一系列问题,并给出了科学的解释的。直到1964年,实验室才配了一台GE 300,斯特恩斯这才开始用BASIC编程,通过电传打字机接口使用计算机。在科学技术的发展史上,开创复杂而重要的学科领域并取得巨大成功的学者,最初往往在十分困难的条件下工作,这种情况是屡见不鲜的。

      斯特恩斯和哈特马尼斯在研究“计算复杂性”理论的过程中,还有一个细节值得一提。据斯特恩斯本人回忆,他们首次明确提出“计算复杂性”这一名词的论文有过三个版本:最早是1963年4月实验室内部的一个研究报告,没有公开发表;然后是在1964年于普林斯顿举行的IEEE第五届开关电路理论和逻辑设计学术年会上提交的论文,题为“递归序列的计算复杂性”(Computational Complexity of Recursive Sequences),刊于会议论文集 82- 90页。第三个版本是发表于美国数学会汇刊1965年5月上的“论算法的计算复杂性”(on the Computational Complexity of Algorithms)。这三个版本中,会议版本虽然早于杂志版本发表,但实际上却是最后一个版本。因为在此之前,他们对布卢姆(M.Blum,1995年图灵奖得主)在MIT的博士论文研究的是同样问题并无所知;会议之前他们偶然获知这一情况,便立即去MIT拜访了布卢姆,双方进行了交流。当时,哈特马尼斯和斯特恩斯已是国际知名大公司的研究人员,而布卢姆则不过是来自南美洲的小国委内瑞拉的青年学子。但哈特马尼斯和斯特恩斯并不因此而对布卢姆有任何轻视,并且发现布卢姆在对“复杂性类”等方面的研究比自己还深入一些,因此对布卢姆十分推崇,并把他的博士论文列入了他们自己的会议论文的参考文献之中,虽然该博士论文当时尚未公开与发表。他们这种在学术上平等待人,互相尊重,善于交流的作风是很可贵和值得学习的。

      斯特恩斯后来除了在“计算复杂性”理论上继续有建树并发表了许多论文外,还对编译器的设计与理论进行深入的研究并取得了成果。1976年,斯特恩斯最先提出将上下文无关文法的理论应用于编译器的设计,推动了编译器技术的发展。他和刘易斯(P.M.Lewis)以及罗深克拉茨(D.J.Rosenkratz)合著的 Compiler Design Theory一书(Addison-Wesley,1976)被软件界认为是“编译器设计理论”方面最出色的专著之一。他和奥曼(R.J.Aumann)以及马须勒(M.B.Maschler)合著的《带不完备信息的可重复游戏》(Repeated Games with Incomplete Information, MIT Pr.,1995)则因在运筹学方间的杰出贡献而荣获当年的Lanchster奖。

      哈特马尼斯在接受图灵奖时发表及题为“论计算复杂性及计算机科学的性质”(On Computational Complexity and the Nature of Computer Science)的演说,刊载于 Comm.ACM,37(10):37-43页(Oct 1994)。

      斯特恩斯在接受图灵奖时发表了题为“是重新考虑时间这个问题的时候了”(It’s Time to Reconsider Time)的演说。演说中概括了他和哈特马尼斯以及布卢姆共同奠定了计算复杂性理论的基础以来,这一重要领域所取得的主要进展。关心这一领域的读者不妨一阅。演说全文刊载于1994年11月的 Communications of ACM, 95- 99页。

      哈特马尼斯的电子信箱为jh @ cs.cornell.edu。

      斯特恩斯现为奥尔巴尼纽约州立大学计算机科学系教授,其电子信箱为:
      res@ cs.albany.edu更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1994 Edward Feigenbaum and Raj Reddy——大型人工智能系统的开拓者(ZT)
      本文发表在 rolia.net 枫下论坛Edward Feigenbaum and Raj Reddy


      Citation
      For pioneering the design and construction of large scale artificial intelligence systems, demonstrating the practical importance and potential commercial impact of artificial intelligence technology

      1994年度的图灵奖由两位人工智能专家分享,其一是声名卓著的爱德华·费根鲍姆(Edward Albert Feigenbaum);另一位后起之秀芬伊·雷迪(Raj Reddy)。

      费根鲍姆1936年1月20日生于新泽西州的威霍肯(Weehawken),生父是波兰移民,但在费根鲍姆一岁时就去世了。他的继父是一个食品店的会计,使用着一台笨重的机电式蒙络计算器(Monroe Calculator,是 2O世纪初的发明),这引起少年费根鲍姆的极大好奇与兴趣。1952年,费根鲍姆进入卡内基-梅隆大学(当时还叫卡内基理工学院)电气工程系。在那里,他遇到了著名的诺贝尔奖得主西蒙教授(1975年图灵奖得主)。在他的指导下,费根鲍姆实现了一个模拟人在刺激人在刺激环境中记忆单词时的反应的程序,叫做EPAM(基本识别和存储设备系统即 Elementary Perceiver and Memorizer的缩写),并以此为题完成了他的博士论文。这个系统用计算机模拟人如何对无意义的话语死记硬背,除了引起心理学家的兴趣外,还引起计算机科学界的重视,因为它提出了一种叫做“辨识网”(discrimination net)的机制,这种机制通过协作过程,可以比较简单而灵活地识别和存储信息。获得博士学位之后,费根鲍姆获得Fulbright奖学金到著名的英国国立物理实验室NPL工作过一段时间。图灵曾是NPL的研究员,在那里设计和制造了最早的计算机之一ACE。费根鲍姆去NPL时,图灵早已于1954年去世,但图灵在NPL留下的巨大影响还在,活跃而富于创造性的空气还在,甚至ACE计算机也还在使用。费根鲍姆在NPL的时间虽然不长,但这段经历对他的影响却很大。

      回到美国以后,费根鲍姆进入斯坦福大学继续其人工智能的研究。在人工智能初创的第一个l。年我人们着重的是问题求解和推理的过程。费根鲍姆的重大贡献在于。通过实验和研究,证明了实现智能行为的主要手段在于知识,在多数实际情况下是特定领域的知识,从而最早倡导了“知识工程”(Knowledge Engineering),并使知识工程成为人工智能领域中取得实际成果最丰富、影响也最大的一个分支。

      知识工程自1977年费根鲍姆在第五届国际人工智能联合会议上提出以来,已逐渐发展成为研究知识信息处理的一门学科,使人工智能从理论转向应用,从基于推理为主的模型转向主要基于知识的模型,如果不说这是划时代的话,至少也是开创了一个新的阶段。通常认为,凡是用自动机对知识进行获取、操作和利用的工程系统都可以称为知识工程。它大体上分为两大类,一类是内向收敛型的,专家系统和狭义的问题求解系统都属于这一类;另一类是外展型的,机器自动发明一发现系统及机器自动规律探索系统属于这一类。

      费根鲍姆本人,作为知识工程的倡导者和实践者,于1965年和遗传学系主任、诺贝尔奖获得者莱德伯格(Joshua Lederberg)等人合作,开发出了世界上第一个专家系统程序DENDRAL。DENDRAL中保存着化学家的知识和质谱仪的知识,可以根据给定的有机化合物的分子式和质谱图,从几千种可能的分子结构中挑选出一个正确的分子结构。

      DENDRAL的成功不仅验证了费根鲍姆关于知识工程的理论的正确性,还为专家系统软件的发展和应用开辟了道路,逐渐形成具有相当规模的市场,其应用遍及各个领域、各个部门。因此,DENDRAL的研究成功被认为是人工智能研究的一个历史性突破。费根鲍姆领导的研究小组后来又为医学、工程和国防等部门研制成功一系列实用的专家系统,其中尤以医学专家系统方面的成果最为突出,最负盛名。例如,用于帮助医生诊断传染病和提供治疗建议的著名专家系统MYCIN等。目前,学术界公认,在将人工智能技术应用于医学方面,斯坦福大学处于世界领先地位,这和费根鲍姆是分不开的。

      费根鲍姆有句名言:“知识中蕴藏着力量”(In the knowledge lies the power)。这句话和培根的名言“知识就是力量”意义相近,但似乎更确切些:知识只有被人所发掘和掌握时,才能生成力量。

      费根鲍姆有许多重要著作。 1963年他主编了 Computers and Thought(《计算机与思想》,McGraw-Hill),这本书被认为是世界上第一本有关人工智能的经典性专著。书中收录的21篇文章是人工智能学者早期的研究成果,但其中的大部分观点和结论至今仍被认同。费根鲍姆和他的同事菲特曼(J.Feldman)编这本书的起因则说来有趣。当初他们想开一门计算机如何模拟思维的课,以培养学生对人工智能的兴趣。但在商学院中开这样的课显然显得离奇古怪,因此未获允准。费根鲍姆无奈之中只好求助于他的老师西蒙,西蒙从他任职的社科院计算机模拟认知过程委员会(Social Science Researeh Council Committee on Computer Simulation of Cognitive Processes)搞了几千美元给他,“买通”了商学院院长,费根鲍姆的计划才得以实现。课程开出以后,出乎意料大受欢迎,数学、物理、经济、商业管理、神经生理等各种各样专业的学生蜂拥而至前来听课。为了满足广泛领域的学生上这门课的需要,他们这才选编了这本书作为教材。本书已被译成日文、俄文及多种欧洲文字,在世界各国广泛流行。

      20世纪8O年代,费根鲍姆和巴尔(Avron Bars)等人合编了四卷本的《人工智能手册》(The Handbook of Artificial Intelligence),前三卷于1981年、1982年由 William Kaufmann出版社出版,第四卷于 1989年由Addison-Wesley出版社出版。这套手册的内容涵盖了人工智能的理论与实践的方方面面,是从事人工智能研究和开发的工程技术人员必备的参考书。

      日本推出第5代机计划以后,费根鲍姆曾到日本进行深入考察,写出了The 5th Generation:AI and Japan’s Computer Challenge to the World(《第五代:人工智能和日本计算机对世界的挑战》,New American Library,1984几本书在中国大陆和台湾省都被译成中文出版,在中国人工智能界有很大影响。还有一本有影响的著作是 The Rise of the Expert Company(《专家公司的兴挪,Times Books,1988》。

      费根鲍姆名下现在还有两个公司,一个叫Teknowledge,这是世界上第一个以开发和将专家系统商品化的公司;另一个叫IntelliGenetics,它的专家系统商品是专门用于基因嫁接的。

      费根鲍姆在接受图灵奖时发表了题为“‘什么’怎样变成‘如何’”的演说(How the“What” Becomes the“How”),对人工智能的发展作了一个历史性的回顾与总结,全文刊载于 Communications of the ACM,1996年5月,97-104页。

      费根鲍姆除在斯坦福大学计算机科学系任教授外,还是美国空军的首席科学家。费根鲍姆的电子信箱如下:

      feigenbaum@cs.stanford.edu

      雷迪于1966年参加了美国计算机协会ACM在洛杉矾举行的向A.Perlis教授授予首届图灵奖的仪式。当时是斯坦福大学研究生的雷迪十分激动,并暗下决心,也要在发展计算机科学技术上做出努力,多做贡献。28年以后,雷迪果然也走上了图灵奖的领奖台。

      雷迪自称是“第二代的人工智能研究者”(a Second-generation artificial intelligence researcher),因为他在斯坦福大学攻读博士学位时的导师是有“人工智能之父”之称的J.McCarthy(他在1971年被授予图灵奖。这种师生双获图灵奖的情况不只这一对),而另一位人工智能大师M.Minsky当时也在斯坦福大学,雷迪曾聆听过他的教导。学成以后,雷迪来到卡内基-梅隆大学工作。这里的人工智能研究也是居世界前列的,雷迪有幸与A.Newell和H.A.Simon这样一些知名教授一起工作,得到他们的指点和帮助。在这样的背景和环境下,加上雷迪自已的努力,他成长为第二代AI学者中的佼佼者就不足为奇了。不过,读者不要因此而误以为雷迪是一位“中青年”学者。实际上,雷迪的计算机经历从20世纪SO年代就开始了,他曾用过以水银延迟线作存储器的Mark II计算机,有他这种经验的人现在已为数不多了。

      雷迪本是印度人,1937年6月13日出生于印度首都新德里附近的凯托尔(Katoor),原名达不拉尔·拉亚戈帕尔·雷迪(Dabblal Rajagopal Reddy)。其父是一个地主。雷迪 1958年在印度大学毕业,取得学士学位后,去澳大利亚留学;在新南威尔士大学获硕士学位,之后再到美国深造,于1966年获得博士学位并加入美国国籍。

      雷迪主持过许多大型人工智能系统的开发,取得了一系列引人注目的成就。其中主要有:

      1. Navlab。这个项目是美国国防部高级研究计划署(即ARPA)的AVL(Autonomous Land Vehicle)项目的一部分,开始于 1984年,目标是开发出能在道路上行驶并可跨越原野的自动驾驶车辆,要求车速达到80km/h。Navlab的原型于1986年完成,最近完成的Navlab II 是野战救护车,测试时最高时速达到 110 km,在原野上连续行进了 16 km,取得了圆满成功。这个项目在计算机视觉、机器人路径规划、自动控制、障碍识别等诸多方面有许多重大的技术突破,使智能机器人跃上了一个崭新的台阶。这个项目的成功已引起美国交通部的极大兴趣和重视,已资助雷迪以重金立项研究,研究目的是利用Vavlab的技术防止高速公路上的事故。

      2.LISTEN。这个项目是用来解决扫盲问题的,核心是一个名为Sphinex II的语音识别系统。系统类似于一个文化教员,可以“听”孩子念课文,念错了或不会念时提供帮助。试验证明IJSTEN可以大大减少孩子在朗读中的错误,并帮助孩子掌握更多课文。由于美国每年在扫盲上要开支2.25亿美元,而估计LISTEN能帮助2O%的文盲说盲,其经济效益和社会效益之巨大是显而易见的。

      3.以意大利诗人但丁(Dame)命名的火山探测机器人项目。这是CMU和美国航空航天局(NASA)的合作项目,要求error-free,绝对可靠。项目计划用15年完成,预算达上百万美元。Dane的第一代和第二代模型已先后完成,现正开发第三代。

      此外,雷迪还曾主持并完成了一个叫做“自动机工厂”(Automated Machine Shop)的项目,在这个工厂中,全部加工设备都是采用机器人技术的。雷迪还开创了一个他称之为“白领机器人学”(White-Collar Robotics)的新的学科领域,就是由机器人去完成白领职工的工作,诸如生产调度等管理功能。

      雷迪现任卡内基-梅隆大学计算机学院院长,Herbert A.Simon大学首席教授,微软研究院顾问委员会委员,也是许多著名学术团体如 IEEE、ACM、AAA(美国声学会)的高级会员。 1979年他担任国际4I联合会议主席时,又带头发起成立了美国人工智能协会AAAI,并于1987—1989年任AAAI会长。他也是美国科学院和国家工程院院士,1997年被选为克林顿总统的信息技术咨询委员会委员。雷迪出身于发展中国家,因此他把将高新技术推广到发展中国家的工作看作是自己应尽的义务,在20世纪80年代初任职于巴黎的“个人计算和人类资源世界中心”(World Center for Personal Computation and Human Resources)时,工作出色,并因此而于 1984年获得法国总统密特朗授予的古罗马勋章。

      最近,即1999年6月28日,雷迪应邀来到中国,参加由《计算机世界》和微软中国研究院联合举办的“21世纪的计算学术研讨会”暨“中美顶级计算机科学家高峰对话”。会上,他发表了题为“创新、转变和革命——信息技术将如何改变21世纪的社会”的精彩报告。

      雷迪在接受图灵奖时发表了题为“对可能的‘梦想’的梦想”(TO Dream the Possible Dream)的演说,演说对某些人认为人工智能只是不切实际的幻想的观点进行了批判,认为人工智能是可以实现的美好愿望,人们应该去追求,去探索,去实践。演说全文刊载于Communications of the ACM,1996年 5月,105- 112页。

      雷迪的电子信箱为:rs@cmu.edu。更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1995 Manuel Blum——计算复杂性理论的主要奠基人之一(ZT)
      本文发表在 rolia.net 枫下论坛Manuel Blum


      Citation
      In recognition of his contributions to the foundations of computational complexity theory and its application to cryptography and program checking.

      1995年度的图灵奖授予加州大学伯克利分校的计算机科学家曼纽尔·布卢姆(Manuel Blum)。布卢姆是计算复杂性理论的主要奠基人之一。在此之前,已有5位科学家因为在计算复杂性理论方面的贡献而获此殊荣,他们是:拉宾(1976年)、库克(1982年)、卡普(1985年)、哈特马尼斯和斯特恩斯(1993年)。在图灵奖34年的历史上,这是获奖科学家最多的一个分支领域,由此可见计算复杂性作为基础性分支在计算机科学中的突出地位及其重要性。

      关于计算复杂性的一些主要理论,我们前面已陆续作了一些介绍,现在再把它简要归纳一下。

      所谓“计算复杂性”,通俗说来,就是用计算机求解问题的难易程度。其度量标准:一是计算所需的步数或指令条数(这叫时间复杂度),二是计算所需的存储单元数量(这叫空间复杂度)。我们当然不可能也不必要就一个个具体问题去研究它的计算复杂性,而是依据难度去研究各种计算问题之间的联系,按复杂性把问题分成不同的奖,即 Complexity Class。

      在采用图灵于20世纪30年代提出的理想化的计算模型即图灵叽作为标准的计算工具的情况下,可以非形式化地定义如下几类计算问题:

      1.P类问题:由确定型图灵机在多项式时间内可解的一切判定问题所组成的集合;

      2.NP类问题:由非确定型图灵机在多项式时间内可计算的判定问题所组成的集合;

      3.NP完全问题:如果判定问题πε NP,并且对所有其他判定问题π’ε NP,都有π’多项式变换到π(记为π’∞π),则称判定问题π是NP完全的。

      对P类,NP类及NP完全问题的研究推动了计算复杂性理论的发展,产生了许多新概念,提出了许多新方法。但是还有许多难题至今没有解决,P=?NP就是其中之一。许多学者猜想P≠NP,但无法证明。

      计算复杂性的研究始于20世纪50年代末60年代初,当时在美国有两个并行的中心,一个是通用电气公司设立于纽约州斯克内克塔迪(Schenectady)的研究实验室,核心人物是哈特马尼斯(J.Hartmanis)和斯特恩斯( R.Stearns)。1964年11月,他们在普林斯顿举行的第五届开关电路理论和逻辑设计学术年会上发表了论文Computational complexity of recursive sequences(递归序列的计算复杂性),论文中首次使用了“计算复杂性”这一术语,由此开辟了计算机科学中的一个新领域,并为之奠定了理论基础。他们两人是1993年度图灵奖获得者。另一个中心是麻省理工学院MIT,在那里,布卢姆与前述两人互相独立地进行着相关问题的研究,并完成了他的博士论文:A machice independent theory of the complexity of recursive functions(与机器无关的递归函数复杂性的理论),该论文的详细摘要1967年发表于J.ACM 14(2),322~336页。实际上,布卢姆是受以色列学者拉宾(M.O.Rabin)的启发而开始这方面的研究的。拉宾是希伯莱大学的教授,是研究计算复杂性问题的先驱,并在1976年荣获图灵奖。拉宾在1959-1960年间就发表过一些关于计算复杂性方面的论文和丘吉,可惜流传的面较小,影响不大。但MIT“慧眼识英雄”,邀请拉宾前来讲学。布卢姆当时正苦于没有适当的课题作博士论文,听了拉宾的讲座极感兴趣,当即决定沿此方向进行研究,其结果就是完成了上述博士论文。布卢姆的论文不但提出了有关计算复杂性的一些分理,而且在对复杂性类的归纳上也比其他学者有更高的抽象度。因此学术界公认,布、哈、斯三人是计算复杂性理论的主要奠基人。

      布卢姆是委内瑞拉人,生于首都加拉加斯。在MIT获得博士学位,并加入美国国籍。之后到加州大学伯克利分校任教。

      布卢姆除了在计算复杂性理论方面作出了开创性贡献以外,还致力于将这一理论应用于对计算机系统的安全性和通信的安全性有十分重要意义的“密码学”以及在“软件工程”中十分重要而又十分困难的程序正确性验证方面,并且取得了令人瞩目的成就。1989年5月,他和同事 Sampath Kannan在西雅图召开的 21届 ACM计算理论专题研讨会上所提交的一篇论文中_,首次提出了 Pro Checker的概念,并综合利用密码学、概率算法和程序测试、概率交互证明等手段解决程序正确性验证这一难题,把这一领域的研究推进了一大步。有兴趣的读者可参阅他们发表在J.ACM1995年1月号上的论文Designing Programs that Check Their Work。

      大家知道,Intel公司在推出其著名的奔腾微处理器Pentium。以后不久,被人发现该处理器的除法运算存在一个细微问题,从而引起了一场轩然大波。布卢姆和他的学生瓦塞曼(H.Wasserman)仔细地研究和分析了这个问题,提出了解决方案和应吸取的教训。他们的有关论文 Reflections on the Pentium Division Bug刊载于 IEEE Trans. on Computer,1996年4月。在软件可靠性方面,布卢姆1997年发表的“具有运行期结果校验的软件的可靠性”(Softwar reliability with run-time result-checking, J.ACM,1997年 11月,826-849页)一文也很值得重视。

      布卢姆是一位学风严谨、海人不倦、循循善诱的科学家和教育家。 1977年曾获加州大学的优秀教学奖(Distinguished Teaching Award)。目前他还是我国香港特别行政区香港城市大学计算机科学系的教授,因此,通过以下两个电子信箱都可以与他联系:

      blum@ cs.berkeley.edu

      csblum@cityu.edu.hk更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1996 Amir Pnueli(ZT)——把时态逻辑引入计算机科学
      本文发表在 rolia.net 枫下论坛Amir Pnueli


      Citation
      For seminal work introducing temporal logic into computing science and for outstanding contributions to program and systems verification.
      ----------------------

      1996年度的图灵奖授予了一位以色列学者,著名的以色列魏茨曼学院(Weizmann Institute of Science,位于圣城耶路撒冷西北约5O km的雷霍沃特)应用数学系教授阿米尔·伯努利(Amir Pnueli),以彰显他把时态逻辑引入计算机科学所做的贡献。

      伯努利于1967年在魏茨曼学院获应用数学博士学位,后留校任教。他的主要研究方向是时态逻辑或叫做时序逻辑(temporal logic)。时态逻辑是非经典逻辑中的一种,它研究如何处理含有时间信息(现在、过去、将来;之前、之后等)的事件的命题和谓词。时态逻辑体系包含的要素有:

      1.基本符号:事件e,关系或谓词r,时间区间I(interval)等。

      2.时态谓词:after(e,r),before(e,r)等。

      3.时态事件演算规则:初始规则、终止规则等,如holds(before(e,r)):-terminates(e,r)表终止规则,意为若事件已使谓词r 失效,则在e 之前且r成立的一段区间中r为真。

      4.时态逻辑运算:时态区间的并、交,时态谓词的与、或、非等。

      1977年,伯努利把时态逻辑引入计算机科学,把它作为开发反应式系统(reactive system)和并发式系统(concurrent system)时进行规格说明(specification)和验证(verification)的工具,取得了极大的成功,在软件工程界引起轰动,被认为是软件工程中的一场革命。伯努利也因此而声名大振,他曾被美国斯坦福大学、哈佛大学等著名高等学府聘为客座教授或进行讲学。

      伯努利和他的同事曼纳(Z.Manna)共同开发的时态逻辑系统叫“命题线性时态逻辑系统”(Proposition Linear Temporal Logic,缩写PLTL)。PLTL包含可数无穷多个命题变元,逻辑联结词“否定”┓“ 合取”∧,“析取”∨,“蕴含”∪“等价”≡;时态算子□,意为“任一时刻”;◇,意为“某一时刻”;○,意为“下一时刻”;W意为“直到”。合式公式(well-formed formula)在PLTL中的定义如下:

      (1) 命题变元P是合式公式;

      (2) 若w、w1和w2是合式公式,则┓w、w1∧w2、w1∨w2、w1∪w2的w1≡w2都是合式公式;□w、◇w、○w和w1ww2也都是合式公式;

      (3) 每个合式公式均可通过有限次应用(1)、(2)获得。

      PLTL中包含10条公理和3条推理规则,它们是:

      公理1:┓◇w≡□┓w

      公理2:□(w1∩w2)∩(□w1∩□w2)

      公理3:□w∩w

      公理4:○┓w≡┓○w

      公理5:○(w1∩w2)∩(○w1∩○w2)

      公理6:□w∩○w

      公理7:□w∩○□w

      公理8:□(w∩○w)∩(w∩□w)

      公理9w1Ww2)≡(w2∨(w1∧○(w1Ww2)))

      公理10w1Ww2)∩◇w2

      推理规则1(重言规则):若 u是命题重言式(tautology),则├ u

      推理规则2(假言推理规则):若├ u∪v且 ├ u,则 ├ v

      推理规则3(□引入规则):若├ u,则├ □u

      应用上述公理和推理规则,经过有穷步骤,可推导出一系列合式公式,即PLTL的定理。

      显然,PLTL是对普通命题逻辑(propositional logic)的扩充,但这一扩充却意义重大,因为这使系统具有了处理随时间变化而改变其值的动态变元(称为时序或时态变元邮能力。在时态逻辑中,时间的结构可以有线性、分支、离散、连续,基于时间点或时区的这样几种不同情况,可视具体应用背景而定。PLTL采用线性、离散,且与自然数同构的时间结构。它的语义解释是一个无穷状态序列б= s0,s1,s2,…,每个si都是对命题变元的一个赋值。若令6(i)=si,si+1,Si+2,…,且用6|=w表示时态公式w在解释6下为真,则各时态算子的含义如下:

      6|=□w当且仅当对任意I≧0,均有6(I)|=w

      6|=◇w当且仅当存在i≧0,使6(I)|=w

      6|=○w当且仅当6(1)|=w

      6|=w1Ww2当且仅当存在I≧0,使6(I)|=w2且对任意j(0≦j<I)均有6(j)|=w1

      由于程序的行为是一种动态现象,其状态是随着时间的推移而不断改变的,而这种改变又可能反过来影响其外部环境。并发反应式程序的这种持续的动态行为无法用经典逻辑描述,由著名的逻辑学家霍恩(A.Horn)于1951年提出,因而用他的名字命名的至多包含一个正文字的Horn子句所组成的霍恩逻辑也不能描述。而伯努利的PLTL则凭着它的极强的表达能力,填补了这一空白,成为研究并发程序尤其是持续不终止的反应式程序(如操作系统,网络通信协议等)的强有力的形式化工具,可充分表达程序的安全性、活性和事件的优先性等,成为程序规约(specification)、验证(verification)等的有力工具。

      值得指出的是,我国科学家在伯努利工作的基础上,将时态逻辑用于计算机科学的研究大大地向前发展了一步。伯努利只把时态逻辑用于程序规约和验证,而我国科学家唐稚松(中科院院土,软件所研究员)在20世纪7O年代末、80年代初把时态逻辑用于软件开发的整个过程,包括需求定义、规约、设计、证实、验证、代码生成和集成,并开发了世界上第一个可执行时态逻辑语言XYZ/E和一组相应的CASEI具,在国际上引起强烈反响。1979年,时任美国加州大学伯克利分校计算机科学系主任的布卢姆(M.Blum,计算复杂性理论奠基人之一,1995年图灵奖获得者)曾致信唐稚松本人,称:“在美国,很有一些最重要的计算机科学家知道您及您的工作,他们都对您的研究工作作了高度评价”。伯努利本人也同唐稚松建立了联系,并成为朋友。1995年8月,为庆祝唐稚松70寿辰,举办了一个名为“逻辑和软件工程”的国际专题讨论会,伯努利和他的老搭档曼纳带了一篇新的论文“有时钟的变迁系统”(Clocked Transition System)来北京参加了这个讨论会,并亲自编辑出版了会议论文集(Logic and Software Engineering: International Workshop in Honour of Chih-Sung Tang, Singapore:World Scientific Pr.,1996)。在论文集的前言中,伯努利高度评价了唐稚松的工作。

      伯努利主要从事教学和研究,但也和国外绝大多数教授一样,不限于“纯学术”工作。他和别人一起在美国马萨诸塞州的市槎伲˙urlington)办了一个公司:I-Logix Inc,他任该公司首席科学家。

      伯努利的著作反映了他的研究成果,主要有:

      《反应式系统和并发系统的时态逻辑:规约》(The Temporal Logic for Reactive and Concurrent Systems: Specification,Springer,1992)

      《反应式系统的时态验证:安全》(Temporal Verification of Reactive Systems:Safety,Spnnger,1995)

      伯努利现任施普林格出版社(Springer Verlag)著名的系列丛书Lectute Notes in Computer Science的编委,也是有关领域的不少杂志如Acta Informatica、Science of Computer Programming、Notes on Computer Science的编委。

      伯努利的电子邮箱为:

      amir@ wisdom. weizmann.ac.il更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1997 Douglas Engelbart(ZT)——鼠标器的故明人和超文本研究的先驱
      本文发表在 rolia.net 枫下论坛Douglas Engelbart


      Citation
      For an inspiring vision of the future of interactive computing and the invention of key technologies to help realize this vision.
      --------------------------------------------------

      1998年 5月 10日,ACM在美国华盛顿特区召开的Policy’98会议期间,举行了隆重的颁奖典礼,将1997年度的图灵奖授予道格拉斯·恩格尔巴特(Douglas Engelbart)。当年的图灵奖奖金25 000美元由朗讯公司提供。

      恩格尔巴特是计算机界的资深学者,但中国人对他可能并不熟悉。实际上,成千上万中国人天天在操作计算机时所用的鼠标器就是恩格尔巴特在他年轻时(196年)发明的,只是多数人并不知道而已。

      恩格尔巴特1925年1月3O日生于美国俄勒冈州的波特兰(Portland)。1948年在俄勒冈州立大学取得学士学位,1956年在加州大学伯克利分校取得电气工/计算机博士学位。完成学业以后,进入著名的斯坦福研究所SRI工作,一干就是20年。他离开SRI以后,先后在Tymshare公司和McDonnell Douglas公司任高级研究员。 1989年,他和女儿克里斯蒂娜·恩格尔巴特(Christina Engelbart)一起在硅谷 Palo Alto创建 Bootstrap研究所,并领导该所的研究工作至今。

      从历史上看,恩格尔巴特是最早认识到基于计算机和通信的工作环境对于人类文明和社会进步的极大重要性的少数先知先觉的学者之一。早在20世纪60年代初,他就发表了一篇名为“放大人类智力”(Augmenting the Human Intellect)的论文,提出了计算机是人类智力的“放大器”的观点。为此,他认为必须改善人机交互方式,发展交互式计算技术。1964年,他发明鼠标器成为代替键盘操纵计算机的方便工具,为交互式计算奠定了基础,因此被IEEE列为计算机诞生50年来最重大的事件之一。实际上,鼠标器只是恩格尔巴特开发的世界上第一个标准化的编辑器NLS(oNLine System)系统的一部分。NLS是一个完善的多媒体编辑工具,同时也为使用者提供舒适的写作环境。它支持各种文本结构,并具有层次性,用户可以方便地浏览文本中的信息,对文本进行各种操作。在1968年秋季的联合计算机会议(1968 Fall Joint Computer Conference)上,NLS首次向公众作了 90 min的演示,引起轰动。这次演示也是鼠标器、多媒体、视屏远程会议的首次登台亮相。由于NLS本身的巨大成功以及它对后来出现的编辑软件的影响(我们曾经提到,1992年图灵奖获得者兰普森正是在NLS的基础上开发出Bravo,成为“所见即所得”系统的雏形的),ACM把1990年的软件系统奖授予了NLS,恩格尔巴特是第一获奖人,第二和第三获奖人分别是英格利希(William K.English)和罗利弗逊(Juff Rulifson)。

      尼葛洛庞帝在他的《数字化生存》里写道:“当初道格拉斯·恩格尔巴特发明鼠标是为了指点文件,而不是为了在电脑上绘画,但是,这个发明却流传了下来,而且在今天随处可见”。

      恩格尔巴特发明的世界上第一只鼠标器,其外壳是用木头精心雕刻而成的,整个鼠标器只有一个按键,不像现在的鼠标器那样有2个按键。最初的鼠标器在底部安装有金属滚轮,用以控制光标的移动。

      1967年6月21日,恩格尔巴特将他的鼠挪用“X-Y定位器”的名称申请了专利,并于1970年获得了专利,从此,小小的“老鼠”引起了人们的重视。1972年,施乐公司帕洛阿托研究中心(PARC)研制成功具有图形界面的Alto微电脑,在该中心的科学家当中,有一些曾师从恩格尔巴特,他们将他发明的鼠标器配置在这台微电脑上,使这台微电脑的操作显得异常方便和快捷。1983年,苹果电脑公司也仿效PARC的做法,把经过改进的鼠标器装设在Lisa微电脑上,从而使鼠标器在计算机业界名声大振,开始像键盘一样成为一种电脑中必备的输入装置,成为电脑迷们人见人爱的“宠物”。

      20世纪90年代以来,“老鼠”随着网络热在全球范围内的升温而走向世界。尤其是Internet这一全球最热门的信息资源网,把全世界220多个国家的1.44亿电脑用户紧密地联系在一起,无论是上网的或者是还没有上网的电脑用户,在使用电脑时,都离不开这只小小的“老鼠”了。

      实际上,恩格尔巴特对Internet的贡献远不限于这只小小的“老鼠”。因为在SRI期间,恩格尔巴特积极推动和参与了美国国防部的ARPAnet计划。SRI与加州大学洛杉矾分校UCLA、加州大学圣巴巴拉分校UCSB和犹他大学UU是第一批接入ARPAnet的四个站点,恩格尔巴特本人是联网初期该计划的13个主要研究人员之一。恩格尔巴特虽然没有参加 ARPAnet计划中关键的斯诺波特会议(Snowbiul是犹他州的一个城市,1969年夏,ARPA在这里召集上述4家联网单位的代表为网络进行设计与定义术语。SRI的代表是恩格尔巴特的亲密合作者罗利弗逊),但在整个计划实施中起了积极作用。ARPAnet初步建成后建立了三个运行和管理中心:网管中心NCC、网络测量中心NMC和网络信息中心NIC。其中NIC就是在恩格尔巴特的建议下成立的,它设在SRI,恩格尔巴特任该中心主任直至1977年。现在风靡全球的Internet就是在ARPAnet的基础上发展起来的。

      至于恩格尔巴特父女10年前创建的Bootstrap研究所,其宗旨和方向很奇特,主要研究如何通过从战略上改进基础设施以提高整个组织机构的“集体智商”(Collective IQ)。研究所的名称 Bootstrap的本献是“依靠自己的力量”,这也是计算机接通电源后首先要执行的“自举”程序或称“引导”程序的名称。实际上,这也是恩格尔巴特在20世纪60年代初在“放大人类智力”论文中就提出的概念框架CoDIAK(Concurrent Development Integration and Application of Knowledge),即对知识进行合作开发、集成和应用的进一步延伸和发展。在这一宗旨下,恩格尔巴特及其研究所近10年来有一系列的发明和创意,其中包括屏幕多窗口、互连超媒体、远程会议、在线出版等。

      在概念框架CoDIAK之下,恩格尔巴特推出的核心技术叫“开放的超文档系统”OHS(Open Hyperdocument System),这是一个集成的、无缝的、多厂商的体系结构,在其中人们可以在共享屏幕上共享由各》多媒体文件组成的超文档。OHS的商品化形式是在NLS的基础上发展而成的,叫AUGMENT,由联成网络的2O多台主机服务器组成,分布在美国各地。恩格尔巴特在这方面的概念、发明创造和产品对当前颇受重视的所谓CSCW研究,即“计算机支持的协同工作”(Computer Supported Cooperative Work)有着十分重要的影响。尤其是在超文本方面,虽然这个名词(hypertext)是由纳尔逊(T.Nelson)于1965年发明的,并开发出了第一个超文本系统“仙都”〔Xanadu,这是英国诗人柯尔律治的长诗“忽必律汗”中的一个地名,指忽必律在热河(承德)的行宫〕,但恩格尔巴特在超文本技术的研究上有许多创新,做出了重大贡献。因此,ACM的超文本会议以他的名字命名其最佳论文奖,即 The ACM Hypertext Conference Engelbart Best Paper Promoting Hypermedia Research。

      最近,比尔·盖茨在一次演说中提出了“知识工人”的概念,引起媒体的极大重视,纷纷报道和评论。实际上,恩格尔巴特在其论文和研究报告中早就一再使用了“知识工人”这个词汇。就笔者所见,最多的一次是18年前,即1982年,在旧金山举行的AFIPS办公自动化会议上,恩格尔巴特发表的一篇论文题目就是Toward High-perfor- mance Knowledge Workers,有兴趣的读者可查阅该会议的论文集。在1995年的一篇论文: Toward Augmenting The Human Intellect and Boosting Our Collective IQ( COMM.ACM,38(8):30-33页)中,恩格尔巴特也多处用了 Knowledge Worker这个词。由此可见,恩格尔巴特不愧是信息革命和知识经济的先驱。

      由于恩格尔巴特的思想总是超前(有人说他的思想超前他的时代 20年——20 years ahead of his time),他常常不被人理解,不受到重视,甚至被人嘲笑,但恩格尔巴特始终保持乐观。他性格开朗,喜欢运动、徒步旅行、野营、航海、跳舞和骑自行车,在家里养鸭、养蜂、养蚯蚓,给子孙们讲滑稽故事。他有4个子女,8个孙子、孙女,在为人类进步作出贡献的同时,享受着天伦之乐。更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 1998 James Gray——数据库技术和“事务处理”专家
      本文发表在 rolia.net 枫下论坛James Gray


      Citation
      For seminal contributions to database and transaction processing research and technical leadership in system implementation.
      -----------------------------------------------------------------------------------------



      1998年度的图灵奖授予了声誉卓著的数据库专家詹姆斯·格雷(James Gray)或称吉姆.格雷(Jim Gray, Jim是James的呢称)。这是图灵奖诞生32年的历史上,继数据库技术的先驱查尔斯·巴赫曼(Charles W.Bachman,1973)和关系数据库之父埃德加·科德(Edgar F.Codd,1981)之后,第3位因在推动数据库技术的发展中做出重大贡献而获此殊荣的学者。

      格雷生于1944年,在著名的美国加州大学伯克利分校计算机科学系获得博士学位。其博士论文是有关优先文法语法分析理论的。学成以后,他先后在贝尔实验室、IBM、Tandem、DEC等公司工作,研究方向转向数据库领域。

      在IBM期间,他参与和主持过 IMS、System R、SQL/DS、DB2等项目的开发,其中除 System R仅作为研究原型,没有成为产品外,其他几个都成为IBM在数据库市场上有影响力的产品。

      在Tandem期间,格雷对该公司的主要数据库产品ENCOMPASS 进行了改进与扩充,并参与了系统字典、并行排序、分布式SQL、Nonstop SQL等项目的研制工作。

      在DEC,他仍然主要负责数据库产品的技术。格雷进入数据库领域时,关系数据库的基本理论已经成熟,但各大公司在关系数据库管理系统(RDBMS)的实现和产品开发中,都遇到了一系列技术问题,主要是在数据库的规模愈来愈大,数据库的结构愈来愈复杂,又有愈来愈多的用户共享数据库的情况下,如何保障数据的完整性(Integrity)、安全性(Security)、并行性(Concurrency),以及一旦出现故障后,数据库如何实现从故障中恢复(Recovery)。这些问题如果不能圆满解决,无论哪个公司的数据库产品都无法进入实用,最终不能被用户所接受。正是在解决这些重大的技术问题,使DBMS成熟并顺利进入市场的过程中,格雷以他的聪明才智发挥了十分关键的作用。

      目前,各DBMS解决上述问题的主要技术手段和方法如下:

      1.把对数据库的操作划分为称之为“事务”(或“事务元”,transaction)的一个个原子单位。事务是事务处理(transaction processing)的基本执行单位,即一个事务中的操作要么全部被执行,要么全部都不执行,即实行所谓 all or none的原则。一个事务一般以一个“开始”语句(begin)开始,先从数据库中取出一些数据,然后进行所需的处理,最后以“提交”语句(commit)结束。如事务中发生异常,则用“异常终止”语句(abort)或“回退”语句(rollback)撤销本事务执行过程中对数据库已做的所有更新(即所谓undo),将数据库恢复到事务开始时的正确状态,以保障数据的完整性、一致性。

      2.用户在对数据库发出操作请求时,系统对有关的不同粒度(granularity)的数据元素(字段、记录以至整个文件)“加锁”(locking),加锁的数据将被暂时禁止其他用户访问(我们这里仅是一种简化的解释,实际上,根据用户对数据请求的不同性质,加锁的数据如何对待另一用户的请求,呈现复杂的情况,例如,如果加锁的数据将被修改,那是绝对禁止其他用户访问的;而如果加锁的数据只用于读出,则其他用户的读者还将是允许的。这由所谓“销相容性矩阵”——lock compatibility matrix管理和控制)。操作完成后“解锁”(unlocking)。这一机制用以既保持事务之间的“并发性”,又保证数据的“完整性”。

      3.建立系统运行日志(log),记载各事务的始点、终点以及在事务中被更新过的页面的改前和改后状况(before image和 after image),以便在系统出现故障使数据库遭到破坏时,能根据定期或不定期为数据库所作的备份(backup)加上日志中的信息将数据库恢复到系统故障前的正确状态,同时又能保留最后一次备份以来对数据库所作的修改。

      4.对数据库的任何更新分两阶段提交(two-phase commit)。这是基于一个事务可能同时涉及两个不同的数据库系统而必需的,这在分布式系统中尤为重要。。

      上述及其他各种方法可总称为“事务处理技术”(transaction processing technique)。格雷在事务处理技术上的创造性思维和开拓性工作,使他成为该技术领域公认的权威。他的研究成果反映在他发表的一系列论文和研究报告之中,最后结晶为一部厚厚的专著Transaction Processing:Concepts and Techniques(Morgan Kaufmann Publishers,1993,另一作者为德国斯图加特大学的A.Reuter教授)。事务处理技术虽然诞生于数据库研究,但对于分布式系统,client/server结构中的数据管理与通信,对于容错和高可靠性系统,同样具有重要的意义。

      格雷的另一部著作是The Benchmark Handbook:for Database and Transaction Processing Systems,第 1版于 1991年,第 2版于 1993年出版,也是Morgan Kaufmann出版社出版的。格雷还是该出版社“数据管理系统丛书”的主编。

      格雷在数据库学术界十分活跃。国际上定期或不定期举行的一些重要的数据库学术会议如 VLDB、SIGMOD上,都能见到他的身影,听到他的声音。除了在公司从事研究开发外,他还兼职在母校伯克利、斯坦福大学、布达佩斯大学从事过教学和讲学活动。1992年,VLDB杂志(The VLDB J0umal)创刊,他出任主编。

      格雷是ACM于 1988年授予 IBM的 System R以软件系统奖的6位得奖人之一,其他5人是 Donald Chamberlin、Raymond Lorie、Gianfranco Putzolu、Paricia Selinger和Irving Traiger。正是由于格雷在数据库技术方面的声誉,软件业中的“巨无霸”微软公司在1993年决定进入大型关系数据库市场时,才不惜用种种手段把格雷从DEC公司挖过来。因格雷不喜欢微软总部所在的多雨的西雅图,愿意留在阳光灿烂的旧金山,微软特地在;日金山开辟第二个微软研究院叫“湾区研究中心”BARC(Bay Area Research Center),安排格雷任该研究院主管。格雷果然不负所望,领导一个研制小组开发出了 MS SQL Server 7.O,成为微软历史上一个里程碑式的版本,而且也成为当今关系数据库市场上的佼佼者。

      格雷是在1999年5月4日于亚特兰大举行的ACM全国会议上接受图灵奖的。格雷发表了“信息技术今后的目标”的演说(What Next?-A dozen remaining IT problems),纵论了信息技术发展中有关的几个方向性问题。后来,该文经修改后在SIGMOD的会上以What Next?-A dozen IT Research Goals为题再次发表。格雷的演说在对计算技术的发展作总结性回顾时认为,英国数学家巴贝奇(Charles Babage,1791一1871)在19世纪所梦想和追求的计算机今天已经基本实现;美国数学家布什(Vannevar Bush,1890-1974,曾任罗斯福总统的科学顾问)20世纪40年代所设想的“梅米克斯”MEMEX即“记忆延伸器”(MEMory EXtender)当前已接近实现;而图灵所提出的智能机器离实现还有一段距离,目前的计算机还难以通过“图灵测试”。为了完全实现上述3位科学巨人的理想,格雷呼吁美国政府要重视支持对IT技术的长期研究,认为其重要意义不亚于200年前杰弗逊(Thomas Jefferson,1743-1826,“独立宣言”的起草者,美国第三任总统,1801-1809在位)决定用 1500万美元从法国政府手中买回路易斯安娜领地(Louisiana Territory,这是位于密西西比河和治机山脉之间,北至加拿大,南达墨西哥湾的大块土地,面积达2070000 km2)这一被称为 Louisiana Purchase的著名历史事件,然后又派出以刘易斯上尉(Captain Meriwether Lewis)和克拉克(William Clark)为首的“发现军团(Corps for Discovery)到西部探险直至太平洋海岸,为最终形成美国如今的版图奠定了基础。格雷认为,一个好的IT长期目标应具有以下5个关键性质:

      1.可理解性 目标应能简单表述并被人理解。

      2.有挑战性 如何达到目标不是很明显的。

      3.用途广泛 不只对计算机科学家有用,而是对大多数人有用。

      4.可测试性 以便检查项目进展并知道目标是否已经达到。

      5.渐进性 中间有若干里程碑,以检查项目进展并鼓舞研究人员干下去。

      在以上论点支持下,格雷提出的几个IT技术的长期研究目标如下:

      1.规模可伸缩性(scalability)

      2.通过图灵测试。

      3.语音到文本的转换(Speech to Text)

      4.文本到语音的转换(Text to Speech)。

      5.机器视觉,能像人一样识别物体和运动。

      6.个人的“梅米克斯”,可记录人所看到和听到的一切,需要时快速检索出来。

      7.世界的“梅米克斯”,即建立文本、音乐、图像、艺术、电影的“全集”(corpus,可回答有关的任何提问,像人类专家那样快而好地做索引,做文摘。

      8.虚拟现实(格雷用了Tele Presence这个词,参见对1969年图灵奖获得者明斯基的介绍)

      9.无故障系统(Trouble-Free Systems)

      10.安全系统(Secure Systems)。

      11.高可用系统( AlwaysUp)。

      12.自动程序设计(Automatic Programming)。

      格雷的图灵奖演说全文已由笔者译出,摘要刊于《中国计算报》2000年6月,有兴趣的读者可以一阅。

      目前,格雷本人正在从事Scalability这一长期目标的研究,他微软“规模可伸缩的服务器研究小组”( Scalable Servers Research Group)的高级研究员,该项目已有若干研究成果在网上公布。

      格雷的电子信箱为:

      gray@microsoft.com

      他的因特网个人主页为:

      http://www.research.microsoft.com/research/barc/gray更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 2000 Andrew Chi-Chih Yao(ZT)做研究是最快乐的事情--计算机图灵奖获得者姚期智教授访谈
      本文发表在 rolia.net 枫下论坛Andrew Chi-Chih Yao


      Citation
      In recognition of his fundamental contributions to the theory of computation, including the complexity-based theory of pseudorandom number generation, cryptography, and communication complexity
      ----------------------------------------------------------------------------------------

      作者:王丹红 发表时间:2003-10-13 摘自:科学时报
         
       
        简介:姚期智博士(Andrew C.Yao)是美国普林斯顿大学计算机科学系讲座教授、美国科学院院士、计算机科学理论学家。2000年获得美国计算机学会(ACM)颁发的图灵奖。创建于1966年的图灵奖被认为是计算机科学领域的诺贝尔奖,奖励在计算机科学和技术领域作出重大和持久贡献的人士。奖金为10万美元,由英特尔公司赞助。图灵奖每年只授予一位专业人士,姚期智因其在计算理论方面的基础性贡献获得此奖,是迄今为止获得图灵奖的唯一一位华裔科学家。

        姚期智1946年出生于上海,幼年随父母移居台湾,1967年从台湾大学毕业后赴美留学,先后获得美国哈佛大学物理学博士学位和伊利诺依大学计算机博士学位。曾在麻省理工学院、斯坦福大学、加州大学伯克利分校从事研究和教学,1986年到普林斯顿大学任教授。他的研究领域是计算机理论,包括以复杂性为基础的伪随机数字代码、密码学和通讯复杂性。

        2003年8月底,应国家自然科学基金委员会信息科学部邀请,姚期智作为海外评审专家到北戴河参加信息科学部2003年面上项目的评审,在此期间他接受了本报记者的采访。

      问: 您是怎么走上今天的学术之路的?
      答: 在我们那时长大的学生,走上学术道路是很自然的事。因为当时在台湾的出路不是很多,多学些高深的知识是有用的,中国的父母认为孩子多学些知识是最重要的事,因此他们会尽力让孩子多学知识。我们小时候成绩不够好是要打手板心的。
      我1967年从台湾大学毕业,1972年获得哈佛大学物理学博士学位,在加州大学圣 巴巴拉分校做博士后时发现在物理学中做的研究与自己的想象不一样,受我太太的影响,我对计算机的问题产生了兴趣,所以又到伊利诺依大学读计算机博士,3年后取得学位,以后就一直从事计算机科学的理论研究。
         
      问: 您获得计算机图灵奖的工作是什么?
      答: 是关于密码和计算机理论的一些工作。
         
      问: 研究和教学都会占用很多时间,您怎么平衡二者?
      答: 基本上是研究第一,也就是说做研究花的时间最多。在美国的研究型大学工作,教书的量不是很多,每个学期只教一门课,每周有2个小时的教学时间。
         
      问: 您会录取什么样的学生做研究生?
      答: 有兴趣、有才能的学生,做我们这个领域还要求有扎实的数学根底。平时我只带1到2个学生。通常情况下学生来时并不是马上选导师,我会先出些题目让他做做看,看他对问题的兴趣和解决问题的能力,看他对你的指导是否满意,然后大家再看看怎么样是个最好的配合。
         
      问: 您对研究生的要求是什么?
      答: 希望他能够自动、自发,有很强的欲望想要做出东西来,所以这个动机(motivation)是最重要的,对我们这个领域来说尤其如此。学生必须对这方面的问题有真正的兴趣,不能说只是想拿到一个学位,老师说这个问题很重要,而是说他真的要到这个程度,早晨起来后一整天都在想这个问题。我们这个领域比较像数学,要有很大的兴趣才能做出成就来,像做家庭作业一样的方式是做不出成就的。
         
      问: 在决定是否聘请或晋升一位年轻教授时,您的评判标准是什么?
      答: 我想对一个年轻的教授来说,最主要想决定的事情是看他有没有前途?将来做大事的希望是多少?你希望一个年轻的教授将来在你的系里能够做得好,能够得到终身职位,能够留下来,怎么样做这个决定呢?一方面看他已经做的研究成果,看他的论文和其它的工作;另外一个是看他的介绍信,这是他所在的领域与他熟悉的教授所写的,因此从中可以得到很好的信息;第三点,面试也是很重要的,前面的两点让你决定准备面试哪些人,面试就要看这个人与你想像的是否一样?应对的情形如何?与大家相处的情况?是否有利于本系的发展、教书的兴趣等,这些都需要在面试时作出判断。面试一般为一天,最多二天。
         
      问: 您怎么对一个项目进行评审?
      答: 基本上是两点,一点是这个人以前的研究成果,尤其是他以前做过的与他建议书中提出的研究相关的工作;第二点是他写的建议中想要做的事,这是不是一个好的建议书?这样的研究是不是值得做?他的目标是否能达到?评审就需要在这些方面做出学术判断。
         
      问: 评审项目很占用时间,您怎么看待这个问题?
      答: 读建议书是很花费时间,但这是一个研究者的责任。教授是一份相当好的工作(因为作为一个教授,这是一个相当好的工作,)但人不能太自私,当你在某一领域里有了一些知识后,你可能是最适合的人来评判一些建议书,所以如果可能的话,我们都会花时间做评审工作。
         
      问: 有观点认为中国是一个计算机消费大国,却不是计算机科学的研究基地,您怎么看这个问题?
      答: 想要变成一个研究很先进的地方确实不是一件很容易的事。在信息研究领域,美国的研究水平确实要高一些,其它国家很难与它竟争。这里有很多因素,所以说想要变成信息领域很尖端的研究基地,需要筹划,看怎么样能够得到一些人才。
      美国最成功的一点是它能够吸引很多外国的人才,让他们接受教育,让他们留在美国,这一点世界上其它地方很少能与它竞争。每个国家想要在研究上处于竞争地位,都需要想想自己的国情。中国是一个比较有希望的国家,因为中国人在海外有尖端知识的人很多,唯一需要的是怎么能让他们大批回来,在中国建研究实验室。
         
      问: 在吸引人才回来方面,您有什么好的建议吗?
      答: 这是一个很大的问题。我想一方面来讲,时间是一个非常重要的因素,像中国这样的发展如果能继续下去的话,5-10年后就会水到渠成。在经济发展上能达到一个相当水平后,想做研究的人应该就能够回来。
         
      问: 现在有很多学生都选择学习计算机专业,或者在研究生阶段转入计算机专业,您对这些学生有什么忠告?
      答: 我想很难给一个很适合的忠告,基本上每个人在做决定时都是在判断怎样做对他的生活才是最理想的,所以说如果他的想法是找一个比较容易赚钱、比较舒适的物质生活,这应该是人之常情,无可厚非。我想主要的一点不是让所有人都改变他们的观点,我觉得只要有一部分人除了赚钱以外还有其它的理想,那么事情就能够达到比较平衡的水平。
         
      问: 最近新闻报道说,在中国同样资历的计算机人士,他们今年的收入比前两、三年要少一半,您怎么看待这个问题?
      答: 从某个角度来讲,这是一个好的现象。因为前几年确实有一个比较不正常的情况,大家对于科技能够制造出的财富过于乐观,有太多不切实际的想法。那么,我想一个比较现实的观点是科技不能使大家都变成暴发户,这个现实让人对生活有比较理智的考虑。
         
      问: 在中国做评审人与在美国做评审人有什么不一样吗?
      答: 对我来讲,感觉上没有太大的不一样,因为我都是用同样的尺度来看和听。我这次来参加的这个评审会的体制非常像美国国家科学基金委员会的评审体制,我挺习惯的。
         
      问: 您认为大陆、台湾和美国的研究和教育体制有什么区别?
      答: 我到美国已经30多年了,对台湾和大陆的教育体制没有切身的感受。这些年我在大陆给了不少的演讲,但不是长时间地与学生交流。我在台湾、大陆做演讲与在美国做演讲,在个人感觉上是不一样的,在台湾和大陆,听众是中国人,能够引起共鸣,在感情上很亲切,与听众的交流比较好;但从科学的角度上讲,也许在美国演讲时听众中的同行要多一些,因为我的专业在亚洲是比较少的。
         
      问: 您为什么愿意回大陆帮助学术界做工作?
      答: 我其实并没有做什么事情。对我来讲有感情上的共鸣是非常有意义的事情,我从中得到了很多的快乐,我想来过以后我会来得更多,这是一个很好的经验。同时,我觉得中国有才能的学生非常多,能够尽量让他们在科学和技术上发挥才能是很好的事,否则是一种浪费。我带过几个中国大陆的学生,他们都很用功,基础也很好。
         
      问: 中国目前的研究水平与国际先进水平还有一定的距离,这也是部分华人科学家留在美国的原因,您怎么看待这个问题?
      答: 这是一个事实,从研究来看,确实美国的研究水平是比较高一点。我的看法是很难苛求中国在这个时候的研究水平就与美国一样,主要的一点是需要有一种榜样,需要有一些人带头做,开头很难,维持很容易,从开始阶段到尖端阶段是一个相当难的过程。怎么能够多一些研究人才回来呢,唯一的方法就是让做尖端研究的人能够真正地带领一批人做研究,这样才能够建立起研究文化。这件事需要耐心。经济发展到了一定阶段,研究水平会提高。
         
      问: 普林斯顿大学怎样宣传、介绍自己研究人员的工作?
      答: 我的学校有一些新闻周刊等,里面会用浅显的话来介绍某位教授做的新研究。除此之外,学校基本上没有特别的宣传计划,我想可能是我们的学校已经很著名了,因此它不需要专门介绍自己的研究成果。
         
      问: 普林斯顿大学是一个很特别的大学,因为它即没有法学院和商学院,也没医学院,但它仍然是世界著名大学,在美国大学的排名在前三位,那么普林斯顿大学是怎样看待学术研究和学术成就的?
      答: 我想成功有很多不同的模式,如果在每一个模式里你都有自己的想法,做得特别好,那么都能够成功。一般来讲,学校专业比较完整如哈佛大学,有各种专业学院,那么它就比较容易著名,因为一个特别大的学校有各方面的成就,就比较容易做成一流的大学。普林斯顿大学传统的理念是我们不需要做所有的事情,我们只需要把想做的事情都做好,做得最好。
      普林斯顿大学是比较小的学校,目前它有大学生6000多人,研究生有2000多人。在这样小的学校里,教学对学生有一种特别的风味,学生感觉学校像自己的家一样,因为一个社团大了,归属感就会淡一些。所以,普林斯顿的学生毕业后对学校很有忠诚感,校友学校捐钱的比例在美国大学中是最高的。毕业后的学生都很想念他们在普林斯顿的生活。
         
      问: 您现在的梦想是什么?
      答: 我现在的梦想就是能够继续做我现在做的事情,做研究本身就是一个最快乐的事。我现在的生活从物质方面来讲,已经很好了,在这方面没有更大的指望。
         
      问: 中国的国家自然科学基金会(NSFC)与美国的国家科学基金会(NSF)有什么不同?
      答: 到目前为止我没有看出两者有什么不同,我听说NSFC创立时参照了许多NSF的运作方式。我对于中国的制度没有太深的了解,但我看到的是NFSC工作人员的态度非常好,没有骄傲心理,他们希望听到一些建议,怎样让基金工作做得更好。
         
      问: 中国的自然科学基金是研究补助性的,美国的科学基金是这样的吗?
      答: 在美国基本上是这样的,如果他认为你的研究建议很好的话,那么他给你的经费至少能够让你勉强地达成这个任务。我想在美国基金会等也会考虑到将钱给多一些人做研究,这样机会会多一些,但一般来讲,它的哲学不是给你一部分补助,然后再让你去想别的办法筹钱,它经过评审认为你的研究值得做,而且在它的资源能力范围内,它就会让你将事情做成。更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • pipibug (golf) 你干了件大好事,很多人会感谢你( 当然也包括我 ),可你的翻译实在是太糟了,如果是机翻另当别论。