加载中...
1972年由Alain Colmerauer设计的逻辑编程语言,程序由事实和规则组成,执行靠自动推理和回溯搜索。曾是人工智能研究的主流工具,自然语言处理和约束求解领域至今有实际应用,IBM Watson的部分组件使用Prolog。

| 类型 | 逻辑编程、声明式 |
| 发布年份 | 1972年 |
| 开发者 | Alain Colmerauer、Philippe Roussel(马赛大学) |
Prolog(Programming in Logic)的编程模型与命令式语言根本不同:你不描述「怎么做」,而是描述「是什么」。程序员定义事实(parent(tom, bob))和规则(ancestor(X, Y) :- parent(X, Y)),然后提出查询,Prolog引擎通过统一(unification)和回溯搜索自动找出答案。
这对于知识表示、约束满足问题、解析器是非常自然的方式。SWI-Prolog是现代主流实现,活跃维护,支持ISO标准,有Web服务器库(HTTP)和数据库接口,不是纯粹的历史遗迹。[1]
Prolog在以下场景仍有竞争力:专家系统(规则引擎)、自然语言语法分析(DCG,Definite Clause Grammars)、约束逻辑编程(CLP,用于调度/规划问题)。IBM Watson在Jeopardy!中展示的部分推理能力背后有Prolog。
局限同样明显:Prolog的执行模型对程序员来说是「黑箱」,回溯搜索的性能难以预测,写出高效的Prolog需要对执行顺序有深入理解,与命令式语言的思维方式差异极大。作为第二语言学习,Prolog能有效训练逻辑思维和声明式编程思维,这也是它长期出现在编程语言课程里的原因。

| 类型 | 逻辑编程、声明式 |
| 发布年份 | 1972年 |
| 开发者 | Alain Colmerauer、Philippe Roussel(马赛大学) |
登录 后参与讨论
暂无讨论,来发表第一条评论吧