什么是逻辑编程?和其他有什么不同

时间:2010-04-18 15:07:05

标签: programming-languages logic prolog

今天我和其他朋友谈过,他说他有逻辑编程技巧,所以我很好奇。

3 个答案:

答案 0 :(得分:8)

wikipedia条目很好地解释了这一点:虽然从表面上看它似乎是一个多余的术语,因为所有的编程都使用逻辑,实际上它是一个明确定义的范例,比如说,“函数式编程”和“面向对象编程“。具体地,

  

逻辑编程,在更窄的范围内   更常见的感觉   理解,就是用逻辑作为   声明性和程序性   表达语言。它是基于   事实上,倒退   推理定理 - 证明器适用于   陈述形式的陈述句   影响:

If B1 and … and Bn then H
  

将其含义视为   目标缩减程序:

to show/solve H, show/solve B1 and … and Bn.

语言Prolog(在某些变体或其他变体中)可能仍然是最流行的逻辑编程语言。

答案 1 :(得分:1)

我通常理解它意味着使用prolog。 Prolog允许您定义谓词和真值。然后,prolog解释器可以使用标准逻辑规则获得进一步的“真理”。例如,以下每一行在第一个和第二个参数之间建立father_childmother_children关系(提到的人来自辛普森一家)。

member(X, [X|_]).
member(X, [_|T]) :- member(X,T).

mother_children(marge, [bart, lisa, maggie]).
mother_children(mona, [homer, jay]).

mother_child(X, Y) :- mother_children(X, C), member(Y, C).

father_child(homer, bart).
father_child(homer, lisa).
father_child(homer, maggie).
father_child(abe, homer).
father_child(abe, herb).
father_child(abe, abbie).

sibling(X, Y) :- parent_child(Z, X), parent_child(Z, Y).

parent_child(X, Y) :- father_child(X, Y).
parent_child(X, Y) :- mother_child(X, Y).

如果你将这个程序解释为prolog解释器,然后问它sibling(X,Y),它将返回给你所有存在的兄弟姐妹对。有趣的是,我们从不明确地说,巴特是丽莎的兄弟姐妹。我们只是定义父亲和母亲的关系,但是通过定义进一步的规则,prolog使用常规规则来推导出满足sibling规则的名称。

Prolog在80年代,各种AI系统等中更受欢迎。这些天有点过时了(不是你在大学里知道的,它仍然是热门的东西)。

答案 2 :(得分:-2)

我会将该陈述称为“我可以编制if / then / else语句”。换句话说,我会用这句话来表示“我不能用任何真正的技术编程”。我不会留下深刻的印象。