Prolog语言

来自计算思维百科
跳转至: 导航搜索

现今最广泛应用的逻辑程序设计语言是Prolog。Prolog建立在形式逻辑中的一阶逻辑之上,不同于其他的编程语言,Prolog是描述性语言,程序的逻辑性通过关系来表达,从而呈现出规则和事实。计算的过程就是在各种关系中启动查询的一个过程。

Prolog语言有以下几个特点:

①Prolog语言是一种描述语言,Prolog求解问题时,只须程序员描述待解问题中的对象及它们之间关系的一些已知事实和规则。强调描述对象之问的逻辑关系,不存在if、when等控制流程语句,只需告诉计算机“do what”,而不是像普通程序设计语言那样告诉计算机“how do”。

②数据和程序结构统一,Prolog语言提供了一种统一的数据结构,称为“项”。所有的程序和数据均由项构成,数据即程序,程序就是数据。

③递归,由于这一特点,一个大的数据结构常常能由一小的程序来处理。

Prolog是由Philippe Roussel使用前缀命名法命名的(在法语中programmation en logique,表示programming in logic),其思想最早(20世纪70年代)由在英国爱丁堡大学的R. Kowalski首先提出,并由M.Van Emden作了模型示范。在1972年,Alain Colmerauer(Prolog之父)与Philippe Roussel及其研究小组在法国马赛大学研制成功了第一个Prolog系统,第一个Prolog的应用于口译,另外David H.D. Warren提出了一个早期影响深远的Prolog编译器Warren抽象机(Warren Abstract Machine),用于定义Prolog的一个变种Edinburgh Prolog,而Edinburgh Prolog提供了大量的现代扩展基本语法。

现代大量的Prolog工程发展来源于FGCS(Fifth Generation Computer System project)的促进,这项工程为它的第一个操作系统开发了Prolog的一个变种语言Kernel Language。Prolog一直在北美和欧洲被广泛使用。日本政府曾经为了建造智能计算机而用Prolog来开发ICOT第五代计算机系统。在早期的机器智能研究领域,Prolog曾经是主要的开发工具。80年代Borland开发的Turbo Prolog,进一步普及了Prolog的使用。

与Prolog相关的语言有:Visual Prolog(我们通常所知的有PDC Prolog和Turbo Prolog)、Datalog(Prolog的一个子集语言,对关系的分层进行限制,并不允许复合形式的关系,相对于Prolog,它是非图灵完备的语言)、AgenSpeak(一种在多代理系统中描述代理习惯的Prolog语言变种)等。