第4卷第2期 智能系统学报 Vol 4 Ng 2 2009年4月 CAA I Transactions on Intelligent System s Apr 2009 逻辑程序设计语言Gode1与Prolg的比较 昌杰,赵致琢,李慧琪,高伟 (厦门大学计算机科学系,福建厦门361005) 摘要:在多态多类的一阶逻辑基础之上,围绕类型系统、模块系统、控制机制、元程序设计和输入输出部分对 Godeli语言功能进行分析.重点比较了逻辑程序设计语言Godel与Pobg的联系与区别,通过比较分析,表明由于摒 弃了Pobg语言中的非逻辑成分,引入了多种新的语言成分,Gode语言具有更好的说明性语义和执行效率 关键词:Godeli语言;Pobg语言:模块系统;类型系统;控制机制;元程序设计 中图分类号:TP311文献标识码:A文章编号:16734785(2009)02016306 A com parison between the logic programm ng languages Godel and Prolog CHANG Jie,ZHAO Zhi-zhuo,L IHui-qi,GAO Wei (Deparment of Computer Science,Xiamen University,Xiamen 361005,China) Abstract:We analyzed the functions of the Godel language on the bassis of the first-order logic with polymorphis and multi types The focus was on its types,module system,control mechanisns,metaprogramm ing,and input/ output Emphasiswas on comparisons of relationships and disparities in Prolg and Godel The comparisons showed that the Godel language ismore declarative and efficient because it elm inates the non-lgical parts of Prolog and in- troduces many kinds of new language elements Keywords:Godel Prolg modular system;type system;control mechanis;metaprogramm ing PDog是当代最有影响的人工智能语言之一, 成了它们的程序主体.另外,在执行机理上,合一算 由于该语言很适合表达人的思维和推理过程,分别法和D反驳一消解法为结果的正确性提供了有 在机器定理证明、自动推理、专家系统、智能规划等 效的保证.Godell同时也借鉴了Poog和程序设计领 许多方面得到了广泛的应用,成为人工智能应用领 域的最新成果,引入类型系统、延迟计算和剪枝操作 域的开发工具.但是,P®og在使用中也暴露了该语等诸多新的语言成分,将语言的理论基础扩展到多 言存在的不足:缺乏类型系统、基于Hom子句的语 态多类的一阶逻辑,试图解决Pobg中程序的效率 句形式限制了语言的可表达性能力、控制机制中的 问题和因cut的出现而带来的有争议的语义问题, 非逻辑成份易于导致语义问题等.于是,发展新型逻 Godel是Poog的进一步发展,其主要内容包括类型 辑程序设计语言成为一种选择 系统、控制机制、模块系统、元程序设计和输入输出 Godeli语言是继Pobg之后出现的一个新型说 等部分.本文从这几个方面对Godeli语言进行功能 明性通用逻辑程序设计语言,由以英国Bristol大学 分析,重点讨论了Godel与Pobg的区别,从中可以 的Loyd和Leeds:大学的Hil为代表的研究小组在 看到Godell的一些好的设计思想和理念,有助于新 20世纪90年代中期设计开发.由于Godeli语言是从 型程序语言的研究、设计和开发山 Pbg发展而来,两者之间不可避免地存在一些联 1类型系统的分析与比较 系和相似之处.比如,在语法结构上使用了项、原子 和子句,其中,无条件子句、条件子句和目标子句构 在程序设计语言中,引入类型系统是非常有必 要的.引入类型系统给所有的常数、变量、函数等对 收稿日期:2008-12-16 象加上类型信息,规定对象的取值范围和允许施加 通信作者:昌杰.Emaik changjie2003@163cm 在其上的运算操作,这不仅便于知识表示,提高程序 1994-2009 China Academic Journal Electronie Publishing House.All rights reserved.http://www.cnki.net第 4卷第 2期 智 能 系 统 学 报 Vol. 4 №. 2 2009年 4月 CAA I Transactions on Intelligent System s Ap r. 2009 逻辑程序设计语言 Go¨del与 Prolog的比较 昌 杰 ,赵致琢 ,李慧琪 ,高 伟 (厦门大学 计算机科学系 ,福建 厦门 361005) 摘 要 :在多态多类的一阶逻辑基础之上 ,围绕类型系统、模块系统、控制机制、元程序设计和输入 /输出部分对 Go¨del语言功能进行分析. 重点比较了逻辑程序设计语言 Go¨del与 Prolog的联系与区别 ,通过比较分析 ,表明由于摒 弃了 Prolog语言中的非逻辑成分 ,引入了多种新的语言成分 , Go¨del语言具有更好的说明性语义和执行效率. 关键词 : Go¨del语言 ; Prolog语言 ;模块系统 ;类型系统 ;控制机制 ;元程序设计 中图分类号 : TP311 文献标识码 : A 文章编号 : 167324785 (2009) 0220163206 A compar ison between the logic programm ing languages Go¨del and Prolog CHANG Jie, ZHAO Zhi2zhuo, L I Hui2qi, GAO W ei (Department of Computer Science, Xiamen University, Xiamen 361005, China) Abstract:We analyzed the functions of the Go¨del language on the bassis of the first2order logic with polymorphism and multi types. The focus was on its types, module system, control mechanism s, meta2p rogramm ing, and input/ output. Emphasiswas on comparisons of relationship s and disparities in Prolog and Go¨del. The comparisons showed that the Go¨del language ismore declarative and efficient because it elim inates the non2logical parts of Prolog and in2 troduces many kinds of new language elements. Keywords: Go¨del; Prolog; modular system; type system; control mechanism; meta2p rogramm ing 收稿日期 : 2008212216. 通信作者 :昌 杰. E2mail: changjie_2003@163. com. Prolog是当代最有影响的人工智能语言之一 , 由于该语言很适合表达人的思维和推理过程 ,分别 在机器定理证明、自动推理、专家系统、智能规划等 许多方面得到了广泛的应用 ,成为人工智能应用领 域的开发工具. 但是 , Prolog在使用中也暴露了该语 言存在的不足 :缺乏类型系统、基于 Horn子句的语 句形式限制了语言的可表达性能力、控制机制中的 非逻辑成份易于导致语义问题等. 于是 ,发展新型逻 辑程序设计语言成为一种选择 [ 1 ] . Go¨del语言是继 Prolog之后出现的一个新型说 明性通用逻辑程序设计语言 ,由以英国 Bristol大学 的 Lloyd和 Leeds大学的 H ill为代表的研究小组在 20世纪 90年代中期设计开发. 由于 Go¨del语言是从 Prolog发展而来 ,两者之间不可避免地存在一些联 系和相似之处. 比如 ,在语法结构上使用了项、原子 和子句 ,其中 ,无条件子句、条件子句和目标子句构 成了它们的程序主体. 另外 ,在执行机理上 ,合一算 法和 SLD 反驳 —消解法为结果的正确性提供了有 效的保证. Go¨del同时也借鉴了 Prolog和程序设计领 域的最新成果 ,引入类型系统、延迟计算和剪枝操作 等诸多新的语言成分 ,将语言的理论基础扩展到多 态多类的一阶逻辑 ,试图解决 Prolog中程序的效率 问题和因 cut的出现而带来的有争议的语义问题. Go¨del是 Prolog的进一步发展 ,其主要内容包括类型 系统、控制机制、模块系统、元程序设计和输入 /输出 等部分. 本文从这几个方面对 Go¨del语言进行功能 分析 ,重点讨论了 Go¨del与 Prolog的区别 ,从中可以 看到 Go¨del的一些好的设计思想和理念 ,有助于新 型程序语言的研究、设计和开发 [ 1 ] . 1 类型系统的分析与比较 在程序设计语言中 ,引入类型系统是非常有必 要的. 引入类型系统给所有的常数、变量、函数等对 象加上类型信息 ,规定对象的取值范围和允许施加 在其上的运算操作. 这不仅便于知识表示 ,提高程序