【问题标题】:Comparision of abstract machines for execution of Prolog [closed]用于执行 Prolog 的抽象机器的比较 [关闭]
【发布时间】:2014-05-17 13:17:30
【问题描述】:

我正在寻找研究论文或任何其他出版物,它们比较不同的抽象机器(不止一个)以执行 Prolog 与不基于抽象机器的 prolog 解释器。到目前为止,我所看到的是,尽管提出了其他抽象机器(例如,Vienna Abstract MachineTree-Oriented Abstract Machine)并且没有任何一般性比较,但大多数实现似乎都将它们的 prolog 解释器基于 Warren Abstract Machine。我对效率比较感兴趣(not 特性),尽管所有比较的解释器都应该允许约束逻辑编程。

【问题讨论】:

  • 请参阅stackoverflow.com/questions/4478615/alternatives-to-the-wam/… 尚不清楚您还可以通过比较来表示什么。我不清楚“使用不基于抽象机器的 Prolog 解释器执行 Prolog”是什么意思:任何实现都基于一些抽象机器。
  • @false,我可以使用 C++ 编写 Prolog 解释器,然后它不会基于任何抽象机器。通过比较,我的意思是例如测试每个解释器的工作效率(在计算时间、内存消耗方面)。
  • 即便如此,您仍然在使用抽象机器。还有很多决定要做。想想回溯/追踪。
  • 效率比较是 1980 年代 Prolog 中的一个雷区,因为系统实际上是由 KLips 销售的。但是,请参阅上面提到的答案,其中包含对效率某些方面的非常详细的比较。

标签: prolog abstract-machine warren-abstract-machine


【解决方案1】:

您可以在普通 prolog 之上构建约束逻辑编程 如果您为尾随约束存储引入一些原语,并且 统一挂钩的一些原语。例如:

SICStus Prolog:属性变量
http://sicstus.sics.se/sicstus/docs/3.7.1/html/sicstus_17.html

Jekejeke Minlog:小求解器
http://www.jekejeke.ch/idatab/doclet/prod/en/docs/15_min/10_docu/02_reference/04_examples/05_solver.html
http://www.jekejeke.ch/idatab/doclet/prod/en/docs/15_min/15_stdy/06_bench/10_examples/02_addensure/01_referensure.p.html

当然,您可以将其他原语视为新指令 在抽象机器中。但在上述两种情况下,原语都是 在谓词级别上添加,因此它引出了是否存在的问题 确实是需要一个抽象机来进行约束逻辑编程。

当然你会发现一些关于约束逻辑编程的建议 抽象机器也可以通过 google。

再见

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 2012-11-24
    • 2015-11-02
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    相关资源
    最近更新 更多