图灵奖得主(麦卡锡\霍尔)

约翰.麦卡锡 --"人工智能之父"和LISP语言的发明人
    1971年的图灵奖授予提出"人工智能"这一术语并使之成为一个重要的学科领域的斯坦福大学教授约翰. 麦卡锡( John McCarthy)。
    麦卡锡1927年9月4日生于波士顿。他的父亲是一个爱尔兰移民,做过木匠和渔夫,同时也是一个发明家和工会积极分子,拥有捻船缝机和桔汁冷冻机两项专利。麦卡锡的母亲是来自立陶宛的犹太人,热心于*女*权运动,当过记者。夫妻两人在20世纪30年代都曾参加美国共产党。受父母的影响,麦卡锡对社会问题也比较关注,参与过在加州的Palo Alto 创办自由大学的活动,倡议过修改"人*权*法*案"(the Bill of Rights,这是美国于1789年通过的对美国宪法的第一次修正案)。但与他在计算机科学上所做的工作和贡献相比,麦卡锡主要还是一个科学家而非社会活动家。此外,麦卡锡还喜欢攀登、跳伞、驾驶滑翔机等有刺激性和危险性的运动,曾和他的第二任妻子维拉.沃特森(Vera Watson)一起攀登过世界上不少大山高峰。沃特森是一位程序员,也是世界知名的女登山运动员,是第一位独自攀上西半球第一高峰、位于阿根廷和智利边界的安第斯山脉的阿空加瓜山(海拔6960米)的女性,后来在一次攀登位于尼泊尔中部的阿那波尔那峰(海拔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个有共同努力设计出一台具有真正智能的机器。会议的经费是洛克菲勒基金会资助的,包括每个代表1200美元加上外地代表的往返车票。会议的原始目标虽然由于不切实际而不可能实现,但由于麦卡锡在下棋程序尤其是α-β搜索法上所取得的成功,以及卡内基-梅隆大学的西蒙(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 Holland, 33-70页)集中反映了他这方面的成果。麦卡锡在这篇论文中系统地论述了程序设计语言形式化的重要性,以及它同程序正确性、语言的正确实现等问题的关系,并提出在形式语义研究中使用抽象语法和状态向量等方法,开创了"程序逻辑(logics of programs)研究的先河。程序逻辑就是一种"语言",用这种语言可以无二义地表达程序的各种性质,其语义规定了该语言中各种表达式的意义,而它的一组规则则用同意义相关的方式去操作这些表达式以计算该语言中的各种断言 (assertation)的真值。研究程序的逻辑对于帮助人们了解软件是否合理十分重要,它可以用于程序的逻辑对于帮助人们了解软件是否合理十分重要,它可以用于程序验证(program verification),自动程序设计,为优化和审计而进行的程序分析等方面。麦卡锡在上述论文中提出的方法是用递归函数作为程序的模型。他以两个链表(list)的"附加"(append)操作为例说明可以用递归的方法定义这个函数,并可以用形式化的方法证明链表的附加操作是满足结合律的(associative law ),即x @ (y @ z) = (x @ y) @ z。麦卡锡进而证明了用一系列递归定义的函数就完全可能建造大型的软件系统,并用归纳法证明这些系统所具有的性质。麦卡锡所提出的方法是有关程序逻辑研究中第一个比较系统而成熟的方法,曾被广泛地采用。
      20世纪70年代以后,麦卡锡又开始研究非单调逻辑。在经典逻辑中,由已知事实推出的结论,决不会在已知事实增加时反而丧失其有效性,因此是"单调的" (monotonic)。但在人类思维过程中,由于信息的不完全和认识的局限性,常常有随着事物的发展变化,原有结论被否定和取消的情况,这就导致了所? "非单调逻辑"(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 出自《ACM图灵奖——计算机发展史的缩影》(高等教育出版社)

查尔斯·霍尔

---从QUICKSORT、CASE到程序设计语言程序设计语言的公理化

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

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

switch E

{case C1:S1;

case C2:S2;

.

.

.

case Cn-1:Sn-1;

[default:Sn]

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

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

begin al;a2;a3;…;an end

if p then a1 else a2

while p do a

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

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

p{a}q

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

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

p’ pp{a}qq→q’

1.

p’{a}q’

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

2.

P(e){x:=e}p(x)

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

3. P{a}qq{b}r

p{a;b}r

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

4. p∧r{a}qp∧~r(b)q

p{if r then a else b}q

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

5. p∧q{a}p

p{while q do a}p∧~q

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

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

A: x:1;B

B: while y>0 do C

C: x:y×x;y:=y-1

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

i. y>0∧x×y! =n! {x:=y×x}y>0∧x×(y-1)! =n!

[首先y>0∧x×y! =n!→y>0∧(y×x)×(y-1)! =n!]

然后用规则(2),用x代替y×x]

ii. y>0∧x×(y-1)! =n!{y:=y-1}y≥0∧x×y! =n!

[类似(i),利用规则(2)]

iii.y>0∧x×y! =n! {C}y≤0∧x×y! =n!

[对(i)和(ii)用规则(3)]

iv.Y≥0∧y=n∧x=1{B}x=n!

[因为] y=n∧x=1→x×y! =n!

又因为0! =1,所以Y≥0∧x×y! =n! ∧y≤0→y=0∧x=n! →x×y! =n!

根据(iii),利用规则(5),令(5)中p=y≤0∧x×y! =n!,q=y>0,孥可得(iv)]

v. y≥0∧y=n{x:=1}y≥0∧y!=n∧x=1

[因为p{x:=1}p∧x=1]

vi. y≥0∧y=n{A}x=n!

[对(V)和(Vi)利用规则(3)]

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

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

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

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

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

霍尔的论著极多,而且都很有份量,有很高的学术水平。有评论说,霍尔每发表一篇论文,几乎就要改变一次人们对程序设计的认识。这虽然是一种夸张的说法,但也说明霍尔的论著确实非常重要。ACM在1983年评选出最近四分之一个世纪中发表在Communications of ACM上的有里程碑式意义的25篇经典论文,只有两名学者各有2篇论文人选,霍尔就是其中之一(另一名是首届计算机先驱奖获得者狄克斯特拉)。霍尔人选的两篇论文分别是 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 Communication,Addison-Wesley,1990)

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

除了获得计算机先驱奖和图灵奖以外,霍尔还在1981年获得AFIPS的Harry Goode奖;1985年获得英国IEE的法拉第奖章。霍尔曾应邀到过世界的许多国家讲学,中国科学院研究生院也曾于1983年邀请霍尔到北京讲学,并主办讨论班。1989年霍尔当选为欧洲科学院院士。1992年新加坡政府授予霍尔“李光耀优秀访问学者”称号。在2000年北京WCC大会上,霍尔应邀作了主题报告。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值