Questions tagged «prolog»

逻辑编程语言。

18
一个人如何管理上千条IF ... THEN ... ELSE规则?
我正在考虑构建一个应用程序,该应用程序的核心是数千个if ... then ... else语句。该应用程序的目的是能够预测奶牛在任何景观中如何移动。他们受到太阳,风,食物来源,突发事件等的影响。 如何管理这样的应用程序?我想象在经过数百个IF语句之后,程序将如何响应并调试导致某种反应的结果将意味着每次必须遍历整个IF语句树,这将是无法预测的好。 我已经阅读了一些有关规则引擎的内容,但是我看不到它们如何克服这种复杂性。

4
为什么Prolog对AI编程有好处?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 我正在研究用于AI编程的编程语言。我知道LISP在我的大学中是作为AI编程语言教授的,但Prolog很少教授。我有点喜欢Prolog,但是我不是AI程序员,所以我认为我没有资格自己判断为什么Prolog比LISP / Scheme更好。我想知道程序员是否对此主题有任何投入。 您如何辩称Prolog对AI编程会更有用? 我一直在研究它,而我一遍又一遍地看到的基本论据是,由于思想是用逻辑表达的,而Prolog是一种逻辑编程语言,因此Prolog可以轻松构建决策机器,或达到某种程度的效果。 AI中的Prolog还有什么可以说的吗?

4
业务规则引擎和约束编程语言之间的关系
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 如果看过(可能是较旧的)Drools手册或某些其他规则引擎的手册,则其增值插图之一就是解决难题,例如Miss Manners难题(Drools手册)。现在,使用Prolog或较新的约束编程语言自然地解决了这些难题,有人想知道为什么有人会为此目的使用Drools。在这种情况下,Prolog和CPL所带来的附加价值是他们能够自然地将难题表达为一组逻辑谓词并自动搜索解决方案的空间(在这方面CPL效率更高)。但是,诸如Drools之类的产品的附加价值是什么(我的意思是,除了拿起Excel文件并将其转换为一组规则之外)。 更具体地说,Prolog实现了回溯搜索,CLP实现了具有约束传播的回溯搜索,因此,不是搜索单个变量的整个笛卡尔积,而是修剪掉该乘积空间的大部分。这使它们有效和有用。文献中充分讨论了Prolog和CLP。 另一方面,虽然很明显Rete算法以某些数据结构的形式缓存规则集,但是据我所知,如果某些输入已更改,则可以更有效地评估输出,并给出有效地更新此数据结构以进行增量更改的方法,(对我而言)很难理解基本思想,甚至更难理解其有效性(与Prolog和CLP相比)?不幸的是,很难找到在更广泛的上下文中查看Rete算法的良好参考。 不幸的是,在这方面,Drools的文档提供的信息很少。我能找到的最多的是“ Rete算法,Leaps算法及其后代(例如Drools的Reteoo(和Leaps))提供了非常有效的方式来将规则模式与您的域对象数据进行匹配。当您拥有不会完全改变(因为规则引擎可以记住过去的比赛。这些算法已经过战斗验证”。非常高效-相比之下呢?经战斗证明-可以指向现实世界的应用程序吗? 如果有人可以对此主题提供更多的启示或提供有效的参考,我将不胜感激。

5
是什么使函数式编程语言声明式而不是命令式?
在许多描述函数式编程优势的文章中,我看到函数式编程语言(例如Haskell,ML,Scala或Clojure)被称为“声明性语言”,与命令式语言(例如C / C ++ / C#/ Java)不同。我的问题是什么使函数式编程语言具有声明性而非命令性。 一个经常遇到的描述声明式和命令式编程之间差异的解释是,在命令式编程中,您告诉计算机“如何做某事”,而不是声明性语言中的“做什么”。我在此说明中遇到的问题是,您在所有编程语言中都经常这样做。即使您进入最低级别的程序集,您仍在告诉计算机“该怎么做”,您告诉CPU将两个数字相加,但并没有指示它如何执行加法。如果我们走到另一端,像Haskell这样的高级纯函数式语言,实际上就是在告诉计算机如何完成特定任务,这就是您的程序所要执行的一系列指令,计算机无法单独实现这些任务。我了解到,Haskell,Clojure等语言显然比C / C ++ / C#/ Java高,并提供诸如惰性求值,不可变数据结构,匿名函数,currying,持久数据结构等功能,所有这些使得函数式编程是可能且高效的,但我不会将它们归类为声明性语言。 对我而言,纯声明性语言将是仅由声明完全构成的语言,此类语言的示例将是CSS(是的,我知道CSS从技术上讲不是编程语言)。CSS只包含页面的HTML和Javascript使用的样式声明。CSS除了作声明外,不能做任何其他事情,它不能创建类函数,即,基于某些参数确定要显示的样式的函数,您无法执行CSS脚本等。对于我来说,它描述了声明性语言(注意,我没有说声明性语言编程语言)。 更新: 我最近一直在使用Prolog,对我而言,Prolog是最接近完全声明式语言的编程语言(至少在我看来),如果它不是唯一的完全声明式编程语言。要详细说明Prolog中的编程,请进行声明,声明要说明事实(规则(对于特定输入返回true的谓词函数))或规则(对基于输入的给定条件/模式返回true的谓词函数),规则使用模式匹配技术定义。要在序言中做任何事情,您都可以通过用变量替换谓词的一个或多个输入来查询知识库,而序言会尝试查找谓词成功的变量的值。 我的观点是在序言中没有强制性指令,您基本上是在告诉(声明)计算机知道的信息,然后询问(查询)有关知识的信息。在函数式编程语言中,即使您不是直接操作内存位置或不逐步编写计算,也仍在给出指令,即获取值,调用函数X并为其添加1等。从这个意义上讲,我不会说用Haskell,ML,Scala或Clojure进行编程是声明性的,尽管我可能是错的。在我上面所描述的意义上,它是正确,真实,纯函数式的声明式编程。

3
为什么不在Prolog中编写规则引擎?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 从我对Prolog的了解来看,似乎很适合为应用程序设计规则引擎。但是,我不相信我曾经见过用Prolog编写的规则引擎。Prolog是否存在一些固有的限制(例如,糟糕的垃圾回收算法),以防止其用于构建规则引擎?

5
AI的最新编程语言?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 几十年来,用于AI的编程语言选择是Prolog或LISP,还有其他一些不太知名的语言。它们大多数是在70年代之前设计的。 在其他许多领域特定的语言上发生的变化很多,但是在AI领域却没有Web特定语言或脚本等出现那么多。 是否有最新的编程语言旨在改变AI中的游戏并从以前的语言中学习不足?

9
Prolog专业有用吗?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 多年前,我在大学学习了Prolog。在我的职业生涯中,我从未需要使用Prolog。我错过了一些特别的东西吗? 据我所知,与著名的编程语言相比,Prolog需要完全不同的思维方式。 Prolog是否真的曾经被用来实现某些专业上有用的东西?

3
为什么(不是)逻辑编程?
我还没有听说过软件行业中逻辑编程语言(例如Prolog)的任何用法,也不知道它在业余编程或开源项目中的用法。不过,它(Prolog)在某种程度上被用作学术语言(为什么在学术界使用它?)。 这让我感到奇怪,为什么要使用逻辑编程,为什么不呢?为什么没有得到可检测的行业使用率?

4
为什么Prolog在命令式编程中不如SQL流行的历史先例?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 似乎编写声明式 SQL在命令式编程中很受欢迎。但是,编写声明式代码 似乎也Prolog可以节省很多复杂性,但这并不是很常见。 对于这种明显的优先于Prolog的SQL,是否有历史的先例? 如果原因是命令式语言缺乏本机支持,那么是否有可能回答为什么语言创建者最初对本机支持没有帮助Prolog呢? 提供一些具体示例: 示例1: 评估贷款申请可能只需要输入几行代码Prolog,就像SELECT/JOIN查询只需要输入几行代码一样SQL,但似乎好处不如SQL。 示例2 这是Prolog中的另一个示例问题和解决方案。以下约束逻辑程序代表约翰作为老师的历史的简化数据集: teaches(john, hardware, T) :- 1990 ≤ T, T < 1999. teaches(john, software, T) :- 1999 ≤ T, T < 2005. teaches(john, logic, T) :- 2005 ≤ T, T ≤ 2012. rank(john, instructor, T) :- 1990 ≤ T, …

1
Prolog并行性
是否有任何序言解释器可以在功能上分解您的“程序”以提高效率? 我知道有一些关于Prolog解释器的研究,该解释器通过并行(一种典型的C程序员无法“看到”的)达到接近C的速度。有人知道这个话题吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.