绿叶网 LOGO

Prolog 在线编译器

关于 Prolog 在线编译器

如果只是想体验一下 Prolog 的 “事实、规则和查询”,或者临时验证一段逻辑推理,还得专门去安装环境、配置交互终端,确实有些折腾。对初学者来说,代码还没写几行,可能就被繁琐的准备工作绕晕了。

这时候,直接使用咱们绿叶网的 Prolog 在线编译器就省事多了。打开网页就能写,写完直接看结果,非常适合新手边学边试,或者快速验证一小段独立的逻辑。

Prolog 在线编译器怎么用?

页面上方就是咱们的 Prolog 在线编译器。使用方式非常简单直接:写代码、运行、看结果,然后根据输出继续修改。

  • 编写代码:在编辑区直接敲入,或粘贴你的 Prolog 代码。
  • 运行代码:点击 “运行” 按钮,也可以直接使用 Ctrl + Enter 快捷键。
  • 查看结果:程序跑完后,下方结果区会直接显示 write、writeln 等语句的输出内容。
  • 调试修改:如果规则写错或没查到预期结果,改完代码再次运行就行。

我们来跑个小例子体验一下:先设定几条 “父子关系” 的事实,再写一条 “祖孙关系” 的规则,让 Prolog 根据已知条件自动推导结果。

parent(lisi, zhangsan).
parent(zhangsan, xiaoming).
parent(zhangsan, xiaohong).

grandparent(X, Z) :-
    parent(X, Y),
    parent(Y, Z).

main :-
    findall(Person, grandparent(lisi, Person), People),
    write(People),
    nl.

:- initialization(main).

运行结果如下。

[xiaoming,xiaohong]

像这种短小精悍的测试代码,最适合用在线编译器来跑。随写随测,完全不需要费时费力去搭本地环境。

Prolog 在线编译器适合哪些场景?

Prolog 在线编译器最适合 “小规模逻辑关系、马上验证” 的场景。它的思维方式和 C、Java、Python 很不一样,因此边写边运行往往比只看语法更容易建立感觉。

其中,它非常适合用于:

  • 新手入门练习:学习事实、规则、变量、查询、列表和递归时,可以写一点测一点,不用先折腾完整的本地环境。
  • 逻辑推理验证:想测试一组关系能否推出某个结论,或者检查某条规则是否写对时,在线运行非常直观。
  • 搜索与回溯练习:排列组合、路径搜索、谜题等问题经常存在多个候选解,用小例子观察 Prolog 如何尝试不同分支很合适。
  • 规则与知识表示练习:把人物关系、课程先修关系、简单推荐条件等写成事实和规则,可以快速体验声明式建模。
  • 课堂教学与交流:老师演示统一、回溯和递归时,直接打开网页就能运行,学生也能马上修改规则观察结果。

绿叶网 Prolog 在线编译器的主要使用场景,包括入门练习、逻辑推理、回溯搜索和规则建模。

Prolog 是什么?

简单来说,Prolog 是一门主打 “逻辑推理” 的编程语言。

Prolog 语言概念解析图,说明其作为逻辑推理语言,通过“事实”加“规则”推导出“结论”的特点。

平时我们用其他语言(比如 C 或 Java)写代码,就像是在写一份详细的操作说明书:你要告诉电脑第一步干嘛、第二步干嘛,比如要自己写个循环,一步步去查 “谁是谁的爷爷”。

但在 Prolog 里,玩法完全变了,我们更像是一个布置线索的侦探。我们只需要干两件事:

  • 摆事实:告诉它已知条件(比如张三是小明的爸爸,李四是张三的爸爸)。
  • 定规则:告诉它逻辑关系(爸爸的爸爸就是爷爷)。

然后,我们直接向它提问:“李四的孙子是谁?” 至于中间怎么搜索、怎么匹配,全交给 Prolog 自己去推理,这就是所谓的 “声明式编程”。所以,学习 Prolog 最大的乐趣在于 “换脑子”——从 “教电脑一步步怎么做”,变成 “告诉电脑规则是什么,让它自己找答案”。

Prolog 主要用在哪些地方?

一句话概括:Prolog 不是用来写网页或开发 App 的,它的主场在 “逻辑、规则与搜索推理” 。常见的应用场景有:

  • 逻辑推理与专家系统:把各个领域的专业知识变成一条条事实和规则存进去,让程序像专家一样根据条件推导出结论。在早期的人工智能研究中,Prolog 是个大红人。
  • 排班调度与逻辑解谜:比如学校排课、工厂排班,或者解一些烧脑的逻辑谜题。这类问题往往条件繁杂,只要你把约束条件(规则)列清楚,Prolog 就能自动帮你搜出满足所有条件的解。
  • 自然语言处理研究:人类语言本身就充满了各种语法规则,这跟 Prolog 的 “脾气” 非常对味,所以在一些语法解析和语言处理的教学研究中,依然能看到它的身影。
  • 拓宽编程思维:它是大学计算机课程里的常客。大家学它,主要是为了体验递归、回溯和声明式编程的魅力。

Prolog 语言的应用领域,展示其在专家系统、排班解谜、自然语言处理等逻辑规则搜寻方面的优势。

总而言之,今天我们学 Prolog,并不是说要用它去重写所有的项目,而是为了掌握一种截然不同的解题思路。下次当你遇到那些死磕规则、条件和逻辑推导的复杂问题时,你就会发现这套 “只描述关系” 的思维方式简直太香了。

Prolog 的事实、规则和查询分别是什么?

小伙伴们刚开始学 Prolog,只要搞懂 “事实、规则、查询” 这 3 个核心词,就算摸到门道了。我们可以把它们想象成写逻辑推理题的三大要素:

  • 事实(Fact):就是直接告诉系统一条不折不扣的 “真理” 或已知条件。比如 parent(lisi, zhangsan).,意思是 “李四是张三的父母”。
  • 规则(Rule):说明 “在什么条件下,结论才成立”。比如 grandparent(X, Z) :- parent(X, Y), parent(Y, Z).,意思是 “如果 X 是 Y 的父母,Y 又是 Z 的父母,那么 X 就是 Z 的祖父母”。这里的 :- 可以简单理解为 “如果”。
  • 查询(Query):向系统提问,让它去寻找答案。比如输入 grandparent(lisi, X),就是问系统 “李四的孙辈是谁(X)?”。

写 Prolog 最大的思维转变在于:我们不再需要像写 C 或 Python 那样操心 “先循环什么、再判断什么”,只管把事实和规则列清楚,剩下的 “找答案” 工作全交给 Prolog 就行了。

Prolog 的三大核心要素,图文解释“事实(Fact)”、“规则(Rule)”与“查询(Query)”的结构与关系。

Prolog 的统一和回溯是什么?

这两个词听起来很高大上,但其实这是 Prolog 能 “自动推理” 的两大秘密武器:

  • 统一(Unification):我们可以把它理解为高级版的 “完形填空” 或 “连连看”。当系统拿你的问题 parent(lisi, X) 去和已知事实 parent(lisi, zhangsan) 匹配时,一看两边形状对上了,就会自动把变量 X 填上 zhangsan。这比普通的字符串对比要聪明得多。
  • 回溯(Backtracking):这就好比走迷宫。Prolog 找答案时,如果发现这条路走不通(条件不满足),或者你想找找看还有没有其他答案,它就会自动退回到上一个 “岔路口”,换另一条路继续试。至于怎么退、变量怎么恢复,系统在后台全包了,完全不用你手写代码控制。

Prolog 的自动推理机制示意图,直观展示了“统一”过程中的变量匹配和“回溯”过程中的分支尝试。

为什么 Prolog 变量通常以大写字母开头?

如果小伙伴们习惯了 Java、Python 或是 C 语言,这里一定要特别留心,Prolog 的命名规矩正好反过来了:

  • 小写字母开头的叫原子(Atom),通常代表具体的常量或名字。比如 lisi、apple、parent。
  • 大写字母或下划线开头的才是变量(Variable),比如 X、Person。

举个例子:parent(lisi, X). 是在问 “具体人物李四(lisi)的孩子是谁(X)”。如果你手滑首字母大写,写成了 parent(Lisi, X).,那 Lisi 就变成了一个未知变量,整个意思就变成了 “谁是谁的父母”,逻辑完全变味了。

此外,单独一个下划线 _ 是非常实用的 “匿名变量”,意思是 “这儿有个东西,但我不在乎它是啥”。比如 parent(_, xiaoming),意思就是 “存在某个人是小明的父母”,至于这个人具体叫啥,不重要,不用记下来。

常用快捷键

代码写得多了以后,鼠标点来点去多少有点慢。Prolog 在线编译器支持下面这些常用快捷键,小伙伴们先把几个高频的记住就够用了。

  • Ctrl + Enter:运行代码。
  • Ctrl + Z:撤销、Ctrl + Y:重做。
  • Ctrl + C:复制、Ctrl + V:粘贴。
  • Ctrl + A:全选。
  • Ctrl + X:剪切。
  • Ctrl + /:注释或取消注释。
  • Ctrl + Home:跳转到首行的行首。
  • Ctrl + End:跳转到末行的结尾。

其中最值得记住的还是 Ctrl + Enter。修改一条事实或规则后顺手运行一次,很快就能看到推理结果有没有发生变化。

「在线编译器」正在不断完善中,小伙伴们如果发现任何问题,或者有更好的建议,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com