PROLOG 语言列表


PROLOG 语言列表

文章插图
PROLOG 语言列表【PROLOG 语言列表】Prolog是一种逻辑程式语言,它建立在数理逻辑学的理论基础之上,最初用于自然语言等研究领域 。
基本介绍中文名:PROLOG 语言列表
外文名:PROLOG
类型:逻辑程式语言
时间:1972年
系统:计算机
学科:计算机原理
关于PrologProlog(Programing in Logic)的第一个系统是1972年开发的 。它是一种典型的逻辑型语言,其理论基础是一阶谓词逻辑,重点在于对象问的逻辑描述,因而又称描述性语言 。编写的程式是由说明程式应达到目标的逻辑说明组成的,程式设计师只需说明达到程式目标的逻辑方法,而不必说明程式执行的步骤,所以又有人把Prolog称为面向目标的语言 。Prolog程式设计不是描述计算机“如何做”,而是描述计算机要“做什幺”,至于如何做,则由Prolog语言自己完成 。这说明Prolog语言在向自动求解方面迈进了一大步 。Prolog的基本机制是匹配、递归定义、自动回溯和控制回溯 。程式接近于自然语言、文法简捷、逻辑性强、易写易读、便于学习使用、易于正确性证明 。日本在开展第五代计算机计画时,曾经把Prolog语言作为核心语言使用 。目前Prolog语言已广泛套用于关係资料库、抽象问题求解、数理逻辑、符号处理、定理证明、自然语言理解、专家系统以及人工智慧的许多领域 。在国内流行的Prolog语言主要版本有:纯Prolog、Prolog II、Arity Prolog、Wisdom Pmlog、Micro Prolog、PDC(Turbo,Visual) Prolog、SWI Prolog、B-Prolog、Dec一10 Prolog、MP Pmlog、PDP一11 UNIX Prolog和Quintus Prolog等 。Turbo PrologTurbo Prolog由美国Prolog开发中心(Pmlog Development Center,PDC)1986年开发成功,Borland公司对外发行,其1.0、2.0和2.1版本取名为Turbo Pmlog,主要为IBM PC系列及其兼容微机研製的一种编译型Prolog系统,也可在MS—DOS环境下运行 。PDC Prolog1990年后,PDC推出新的版本,更名为PDC Prolog 3.0和3.2 。它把运行环境扩展到OS/2作业系统,并且向全世界发行 。它的主要特点是:(1)速度快,记忆体要求小 。编译及运行速度都很快,编译时採用累积的方式,把整个原始码编译成机器代码,可产生与Pascal、C语言非常的紧凑代码,编译中发现错误能自动回到编辑状态,指出出错位置,修改后原来已编译好的部分基本不动,效率大为提高 。(2)用户界面友好 。集编辑、编译、连结、调试等功能为一体,按多视窗选单和系统提示,边上机边学习,可方便快速地进行套用开发,能自动连线生成目标档案,同时能对原始码进行跟蹤调试 。(3)内部谓词丰富独特,提供了强有力的外部资料库系统,用萤幕、视窗、颜色、声音、图形、绝对地址存取、数据连线埠等控制,编写出图文并茂的程式 。(4)具有强大的图形功能 。支持与Turbo C和Turbo Pascal同样的图形功能 。(5)集成式、模组化的程式开发环境,可将多个程式模组联结成一个可执行的程式,能与C、Pascal、Fortran、彙编、dBASE III等语言实现自然和谐的联结,可与DOS互动 。可产生能从其他语言调用Prolog的子程式,也可从Prolog中调用其他语言产生的子程式 。(6)提供了一个用PDC Prolog编写的Prolog解释起原始码 。用户可以用它研究Prolog的内部机制,并创建自己的专用程式语言、推理机、专家系统外壳或程式接口 。Visual PrologVisual Prolog是基于Prolog语言的可视化集成开发环境,是PDC推出的基于Windows环境的智慧型化编程工具,也是一个可以製作界面的Prolog,已经推出版本4.x、5.X、6.X和7.x 。它的基本Prolog语句同DOS下的Turbo Prolog相似,曾使用过Turbo Prolog的人很容易就能上手,原DOS下的Prolog源程式也很容易移植 。这个Prolog版本需要对谓词以及数据进行声明,就像c语言一样 。因此在使用的时候比较複杂,不过更加适合编制较大的程式 。Visual Prolog为编译型执行,运行速度比解释型Prolog快,源程式可编译为独立执行的可执行程式,也可发布为动态程式库供VB、VC、Delphi等调用,为开发者提供更灵活的组合开发方式 。Visual Prolog具有模式匹配、递归、回溯、对象机制、事实资料库和谓词库等强大功能 。它包含构建大型应用程式所需要的一切特性:图形开发环境、编译器、连线器和调试器,支持模组化和面向对象程式设计,支持系统级编程、档案操作、字元串处理、位级运算、算术与逻辑运算,以及与其他程式语言的接口 。基本语句Prolog语言只有3种基本语句:事实、规则和问题 。与命令式程式语言相比,Prolog程式中的问题相当于主程式,规则相当于子程式,而其事实相当于数据 。事实事实用来说明问题中已知对象之间的性质和关係 。例如:likes(1ibai,book). /*喜欢(李白,书)*/以上语句是一个名为like的关係,表示对象libai(李白)和book(书)之间有喜欢的关係 。末尾“.”表示句子结束 。以上语句对计算机来说没有真正的含义,完全可以用“ai(lb,shu).”来表达这个关係,只要自己清楚ai表示爱,lb表示李白,shu表示书就可以了 。规则规则用来描述事实之间的依赖关係,用来表示对象之间的因果关係、蕴含关係或对应关係 。规则左边表示结论,右边表示条件 。例如:bird(X):一animal(X),has(X,feather)./*鸟(X):一动物(X),有(X,羽毛).*/以上语句表示,凡是动物并且有羽毛,那幺它就是鸟 。“:一”表示“如果”(if)的意思,可用它来定义规则,它的左边是规则的结论,右边是规则的前提 。“,”表示而且(and)的意思,用来分隔两个句子 。问题问题表示用户的询问,它是程式运行的目标,问题是程式执行的起点 。问题可以写在程式内部,但是不能与事实及规则排在一起,它需要在程式中单独列出 。问题也可以在程式运行时临时给出,运行Prolog程式后,就可以询问有关问题的答案了 。例如:?-student(libai). /* 李白是学生吗?*/ 特点Prolog语言的语法结构相当简单,但描述能力很强 。例如,当事实和规则描述的是某一学科公理.那幺问题就是待证的命题;当事实和规则描述的是某些数据和关係,那幺问题就是数据查询语句;当事实和规则描述的是某些状态变化规律,那幺问题就是目标状态 。因此,Prolog语言是一种智慧型型程式设计语言 。Prolog程式没有特定的运行顺序,程式运行顺序完全按照数理逻辑推导(消解法)的方式进行,而不是由编程式的人决定 。Prolog是一种描述型语言,用特定的方法描述一个问题,然后由计算机自动找到这个问题的答案 。举个极端的例子.当建立好事实和规则后,只需要把某个问题告诉它.它就会自动查找答案 。Prolog程式中没有if、case、for这样的控制流程语句 。通常情况下,程式设计师不需要了解程式的运行过程,只需要注重程式的描述是否全面 。不过Prolog也提供了一些控制程式流程的方法,这些方法和其他语言中的方法有很大区别 。在Prolog程式巾,程式和数据高度统一,很难分清楚哪些是程式,哪些是数据 。事实上,Prolog中所有东西都有相同的形式,也就是说数据就是程式,程式就是数据 。例如,用c语言编写一个计算某个数学表达式的程式很简单(如:a=2+54);但是如果编写一个C程式.由用户输入表达式,由程式计算出表达式的值,这样的程式编制很困难 。因为用户输入的是一段数据(字元串),如果想让C语言处理这个字元串,就需要多方面的技术,因为在C语言中,程式和数据是分开的 。Prolog具有智慧型资料库功能,它的工作原理与关係资料库基本相同,它是建立在关係资料库的基础上的.它与SQL资料库查询语言有很多相似之处 。递归是一种非常简洁的方式,它能够有效地解决许多难题 。在Prolog程式语言中,递归功能得到了充分体现 。