Prolog - 简介


Prolog 顾名思义,是逻辑编程的缩写形式。它是一种逻辑性和声明性编程语言。在深入了解 Prolog 的概念之前,让我们首先了解什么是逻辑编程。

逻辑编程是计算机编程范式之一,其中程序语句表达形式逻辑系统中不同问题的事实和规则。在这里,规则以逻辑子句的形式编写,其中存在头部和主体。例如,H是头部,B1、B2、B3是身体的元素。现在,如果我们说“当 B1、B2、B3 都为真时,H 为真”,这就是一条规则。另一方面,事实就像规则一样,但没有任何实体。因此,事实的一个例子是“H 为真”。

一些逻辑编程语言,如 Datalog 或 ASP(答案集编程)被称为纯声明性语言。这些语言允许声明程序应该完成什么。没有关于如何执行任务的分步说明。然而,其他语言(例如 Prolog)具有声明性和命令性属性。这还可能包括诸如“为了解决问题 H,执行 B1、B2 和 B3”之类的程序语句。

下面给出了一些逻辑编程语言 -

  • ALF(代数逻辑函数式编程语言)。

  • ASP(答案集编程)

  • 环化L

  • 数据记录

  • 模糊CLIPS

  • 雅努斯

  • 帕洛格

  • 序言

  • 序言++

  • 罗普

逻辑和函数式编程

我们将讨论逻辑编程和传统函数式编程语言之间的差异。我们可以使用下图来说明这两个 -

逻辑和函数式编程

从这个例子中,我们可以看到,在函数式编程中,我们必须定义过程,以及过程如何工作的规则。这些程序根据算法逐步解决一个特定问题。另一方面,对于逻辑编程,我们将提供知识库。使用这个知识库,机器可以找到给定问题的答案,这与函数式编程完全不同。

在函数式编程中,我们必须提及如何解决一个问题,但在逻辑编程中,我们必须指定我们真正想要解决哪个问题。然后逻辑编程会自动找到合适的解决方案来帮助我们解决该特定问题。

现在让我们看看下面更多的差异 -

函数式编程 逻辑编程
函数式编程遵循冯·诺依曼架构,或者使用顺序步骤。 逻辑编程使用抽象模型,或处理对象及其关系。
语法实际上是语句序列,如 (a, s, I)。 语法基本上是逻辑公式(Horn Clauses)。
计算通过顺序执行语句来进行。 它通过扣除子句来计算。
逻辑和控制混合在一起。 逻辑和控制可以分开。

什么是 Prolog?

Prolog 或LOG ics 中的PRO语法是一种逻辑和声明性编程语言。它是支持声明式编程范式的第四代语言的主要示例之一。这特别适合涉及符号或非数字计算的程序。这是使用 Prolog 作为人工智能编程语言的主要原因,其中符号操作推理操作是基本任务。

在Prolog中,我们不需要提及一个问题如何解决,我们只需要提及问题是什么,Prolog就会自动解决它。然而,在Prolog中我们应该给出线索作为解决方法

Prolog 语言基本上具有三个不同的元素 -

事实- 事实是真实的谓词,例如,如果我们说“汤姆是杰克的儿子”,那么这是一个事实。

规则- 规则是包含条件子句的事实的消除。为了满足规则,应该满足这些条件。例如,如果我们将规则定义为 -

grandfather(X, Y) :- father(X, Z), parent(Z, Y)

这意味着,对于 X 来说,Y 是 Y 的祖父,Z 应该是 Y 的父母,X 应该是 Z 的父亲。

问题- 要运行序言程序,我们需要一些问题,这些问题可以通过给定的事实和规则来回答。

Prolog 的历史

Prolog 的遗产包括对定理证明器的研究以及 20 世纪 60 年代和 1970 年代开发的其他一些自动演绎系统。Prolog 的推理机制基于 1965 年提出的 Robinson 解析原理和 Green (1968) 的答案提取机制。随着线性解析程序的出现,这些想法有力地结合在一起。

明确的目标导向线性解析程序推动了通用逻辑编程系统的发展。第一个Prolog 是基于Colmerauer在 1970 年工作的Marseille Prolog。这个 Marseille Prolog 解释器的手册(Roussel,1975)是对 Prolog 语言的第一个详细描述。

Prolog 也被认为是支持声明式编程范式的第四代编程语言。1981 年宣布的著名的日本第五代计算机计划采用 Prolog 作为开发语言,从而引起了对该语言及其功能的广泛关注。

Prolog的一些应用

Prolog 用于各个领域。它在自动化系统中起着至关重要的作用。以下是使用 Prolog 的其他一些重要领域 -

  • 智能数据库检索

  • 自然语言理解

  • 规范语言

  • 机器学习

  • 机器人规划

  • 自动化系统

  • 解决问题