win7显示本地连接图标:1B.1 G?del语言的主要创新

来源:百度文库 编辑:偶看新闻 时间:2024/04/30 00:20:12
http://www.docin.com/p-92139363.html

        由于Prolog所取得的巨大成功,一直以来Prolog都是逻辑程序设计的代称。但是,Prolog基于一阶逻辑的Horn子集,作为一种无类型 逻辑程序设计语言,它缺乏足够的可表达性。而且,由于Prolog在具体实现时,出于效率考虑,引入了非逻辑的语言成分,如cut等,经常使用会使Prolog程序缺乏清晰、明确的说明性语义,导致理解、分析、转换、优化、验证、调试Prolog程序都非常困难。理想的逻辑程序设计语言应该将其理论基础从Horn子集扩展到一阶逻辑,程序的计算执行过程对程序员透明,即程序员可以不必了解程序的推理求解过程,直接按照说明性定义的方式设计程序即可,具体的推理计算过程交由系统来完成。针对Prolog存在的不足,逻辑程序设计的研究者们一直在尝试改进这些缺陷。Godel语言的设计者们充分汲取了该领域的研究成果,将多种新的语言成分引入语言设计中,使Godel继承并发展了Prolog。Godel试图解决Prolog中存在的诸多语义问题,增强Prolog的可表达性,缩小理想逻辑程序设计语言与现实逻辑程序语言的差别。
        Godel语言是继Prolog语言之后出现的新型说明性通用逻辑程序设计语言,于20世纪90年代中期由英国Bristol大学的J.W.Lloyd和Leeds大学的P.M.Hill为首的研究小组设计开发。它借鉴了Prolog语言的诸多元素,并从Prolog语言的众多变型如IC-Prolog、NU-Prolog等以及ML语言、Module-2语言引入新的语言成分,从而使其具备更强的程序设计表达能力。它建立在多态多类的一阶逻辑基础之上,摒弃了Prolog语言中的非逻辑成分,有效地解决了Prolog语言中存在的语义问题与表达性较弱的问题。Godel语言对逻辑程序的主要创新可以概括为,引入了参数型多态多类型系统,增加了延迟计算等新的语言成分,支持模块化程序设计和元程序设计;具有灵活的计算规则和剪枝操作,并以系统模块形式提供丰富的抽象数据类型以支持通用程序设计,对其适当扩展可支持面向对象程序设计。
        Godel语言的类型是一个强类型系统。类型的引入便于知识表示,因为知识的预期解释在大多数逻辑程序设计应用中时被类型化的,类型信息有利于发现程序中的错误,提高程序的开发效率,也使得Godel语言具有很强的可表达性能力和实用性;Godel语言程序设计采用模块结构,提供了组织大规模程序的方法,有利于信息隐藏。这些机制结合多态多类型系统,使Godel语言能够支持某些现代软件工程方法。Godel语言拥有灵活的计算规则,可以通过声明延迟计算条件,达到控制选取消子目标次序的目的,再结合commit剪枝,可以极大地提高推理空间的搜索效率;采用抽象数据类型来处理元程序,为元程序设计提供了一个良好的机制。
        更为重要的是,Godel语言在引入这些新的逻辑程序成分的同时,还使该语言有比Prolog更优的程序说明性程序语义,而良好的概念化、结构性说明性程序语义对逻辑程序至为重要。首先,它减轻了程序员的负担,使他们在程序设计时只需考虑把问题及相关的知识、逻辑关系定义好,告诉计算机系统“要计算什么”,而不必关心“如何计算”,真正向说明性程序设计方向上又迈进了一步;其次,当前大多数实用的逻辑程序设计语言都是从Prolog语言演变而来,运用了许多非说明性语言成分和非逻辑成分,如cut、retract等,而Godel在这一方面有了较大的进步,大大地减少了对非逻辑性成分的依赖,缩小了在逻辑程序设计中理论与现实之间的差距,有利于逻辑程序的理论分析;最后,程序设计语言理论研究表明,具有良好的说明性语义的程序更容易实现并行。Godel语言的这些创新为逻辑程序设计注入了新的内容。可以预见,一旦该语言的编译系统取得突破并得到推广,它将会成为人工智能、数据挖掘、数据库等领域进行智能软件开发的重要工具。