发布网友 发布时间:2022-05-07 01:54
共1个回答
热心网友 时间:2023-10-11 15:34
首先,在计算机程序设计语言方面,米尔纳和戈顿(M.J.Gordon)等人一起提出了形式化逻辑系统的数学模型,实现了他称之为LCF的一个系统——“可计算函数的逻辑”(LogicforComputableFunc-tions)。LCF不但是一种有效的建模工具,还是一种强有力的验证工具,利用它可以方便地验证计算机程序的正确性。由于在利用计算机解决各种各样的具体问题时,建立正确的形式化系统在理论上和实践上都具有重要的意义,因此米尔纳的LCF受到学术界的高度评价。实际上,米尔纳是受斯科特(D.Scott,1976年图灵奖获得者)的影响和启发才从事这一研究的。我们前面已经介绍过,斯科特是研究自动机理论,和拉宾(M.O.Rabin)一起提出了“非确定性”有限状态自动机的著名学者,后来在20世纪60年代又和斯特雷奇(C.Stra-chey,1916—1975)合作,提出了程序设计语言的“标志语义模型”,为“标志语义学”(又称“指称语义学”或“数学语义学”)奠定了基础,对计算机程序设计语言的发展产生了重大的影响。斯科特曾到牛津大学访问、讲学,米尔纳听了他的讲演,看了他的著作,引起了对这个问题的极大兴趣,从而深入进行研究,并获得成果。20世纪70年代初,米尔纳在斯坦福大学的人工智能实验室作访问学者时,曾用LCF证明了那里的一个很复杂的编译器的正确性,受到有“人工智能之父”之称的麦卡锡(J.McCarthy,1971年图灵奖获得者)的高度评价。
在斯坦福大学期间,米尔纳学习了由麦卡锡主持开发的函数式人工智能程序设计语言LISP,这使他受到很大启发,进一步打开了他的思路和智慧之窗。回到爱丁堡大学以后,他借鉴LISP的经验,在LCF的基础上,花了几年的时间,开发成功了一个更加重要的系统,即ML,也就是元语言(metalanguage),一种用来描述、表达与验证其他语言的语言。ML是一种强多态类型的语言,一个ML程序也就是一个包含变量定义和函数作用的表达式序列,具有比LCF更强的推理能力。ML有时也被称为函数式语言,但与纯函数式语言有所不同,因为它具有引用的概念,即变量是可以赋值的。此外,它的输入/输出系统也引入了副作用。
ML取得成功以后,米尔纳致力于使它国际化和标准化。在他的努力下,1984年成立了一个包括爱丁堡大学、剑桥大学和贝尔实验室等知名高等学府和研究机构的专家在内的15人工作小组,采取通过电子邮件交换意见进行设计的方式工作。20世纪90年代初标准ML即SML问世。SML具有高阶函数功能、I/0机制、参数化的模块系统和完善的类型系统。比如计算1+2+3+…+10的值的SML程序如下所示:
letfunsumitot=ifi=othentot
else sum(i-1)(tot+i)
insum100
end 米尔纳另一方面的贡献是关于并发计算(concurrentcomputing)和并行计算(parallelcomputing)的。由于并发与并行计算与传统的串行计算(sequentialcomputing)有着本质上的不同,其复杂程度大大增加,无法用后者的方法和术语表达前者的意义。严格说来,所谓两个事件是“并发”的,是指一个系统内部发生的这两个事件之间没有因果关系,并非先后关系(当然,有因果关系者必有先后关系,但有先后关系者不一定有因果关系)。并发概念由发明著名的“佩特里网”的C.A.Petri于1962年首先严格定义并建立了模型。至于“并行”,指的是利用多个处理机或其他功能部件同时工作以提高系统性能或可靠性,冯·诺伊曼在20世纪40年代提出细胞自动机可认为是并行计算思想的开端。米尔纳经过深入研究,提出了一种新的观点,把可以按任意次序在系统内发生的两个事件定义为并发事件,称之为“交叠式并发”,而佩特里定义的严格并发则称为“真并发”。在交叠式并发概念的基础上,米尔纳利用代数方法创造了一种用于建立并发与并行计算的概念框架的系统叫“通信系统演算”CCS(Calculusfor,Com-municatingSystems)。CCS与霍尔(C.A.R.Hoare,1980年图灵奖获得者)所创建的“通信顺序进程CSP(CommunicatingSequentialProcess)是最典型的两个描述性并发模型,即进程代数模型,都以进程及进程间的通信为主要描述对象,系统中的事件就是进程通信,特别适合于描述分布式系统。CCS已经成功地用来解释用于书写通信协议规约的国际标准语言Lotos,而Lotos则已用于面向对象的ROOA方法中,用来描述面向对象需求定义中的抽象数据类型和进程定义。CCS本身虽然只有交叠式语义,但利用一些特殊的方法,如多层佩特里网方法,也可以建立起一个完整的真并发语义,因此具有很重要的价值。
米尔纳在学术上的一个特点是十分注意打好基础,精益求精。他主持开发和标准化的ML被认为是定义得最完善,最无懈可击,结构最优美、和谐而又最短小、精悍的语言之一。在作风上,米尔纳谦虚谨慎,从善如流,非常注意听取和吸收合作者的意见。例如,标准ML有允许设计“大模块”程序的功能,就是米尔纳根据贝尔实验室的麦克奎因(D.MacQueen)所提出的构思实现的。ML原先是一个专用语言,意大利学者鲁卡·凯德利(LucaCardelli,当时还是一个正在写博士论文的研究生)实现了ML的一个扩充版本,使之更适合于教学。米尔纳看到以后十分赞赏,在它的基础上把ML进一步发展为一个通用语言。米尔纳的成功与他的这些优秀品格是分不开的。