本文发表在 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
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