Prolog 现代流行的标准序言是什么,业余的序言口译员应该瞄准什么?

Prolog 现代流行的标准序言是什么,业余的序言口译员应该瞄准什么?,prolog,standards,iso-prolog,Prolog,Standards,Iso Prolog,我正在写一个Prolog解释器作为练习,想知道我应该瞄准什么。不幸的是,有许多版本的Prolog可供选择,并且它们都有不同程度的文档记录。我很快从一个显然对互联网期望过高的人那里发现,他想要一个详细的Prolog html规范。答案是你可以花30美元获得ISO标准,但这是相当不切实际的。当用户可以用更少的钱获得一个Prolog解释器时,他们永远不会仅仅为了阅读Prolog而支付30美元,因此如果你付钱并遵守标准,很少有人会认可你的努力。因此,ISO标准没有得到普遍遵守一点也不奇怪 从假设ISO标

我正在写一个Prolog解释器作为练习,想知道我应该瞄准什么。不幸的是,有许多版本的Prolog可供选择,并且它们都有不同程度的文档记录。我很快从一个显然对互联网期望过高的人那里发现,他想要一个详细的Prolog html规范。答案是你可以花30美元获得ISO标准,但这是相当不切实际的。当用户可以用更少的钱获得一个Prolog解释器时,他们永远不会仅仅为了阅读Prolog而支付30美元,因此如果你付钱并遵守标准,很少有人会认可你的努力。因此,ISO标准没有得到普遍遵守一点也不奇怪


从假设ISO标准是一个笑话开始,解释器应该瞄准的Prolog的真实版本是什么?我不是说每一个小的Prolog解释器都应该完全实现每一个特性,但是当构建一个Prolog解释器时,必须做出的小决定是没有尽头的。有人应该如何发现Prolog社区对Prolog应该是什么的共识呢?

我认为现在Prolog标准的驱动力很大,所以看看他们的文档。。。除此之外,在过去的几年里,在Prolog标准化会议上,您所提出的问题被反复讨论。一些人认为应该将表格编入标准,其他人则主张自动索引也应如此,以此类推。因此,在我看来,你能做的最好的事情就是模仿SWI对大多数东西所做的,你几乎肯定会在标准中

我认为现在Prolog标准的驱动力很大,所以看看他们的文档。。。除此之外,在过去的几年里,在Prolog标准化会议上,您所提出的问题被反复讨论。一些人认为应该将表格编入标准,其他人则主张自动索引也应如此,以此类推。因此,在我看来,你能做的最好的事情就是模仿SWI对大多数东西所做的,你几乎肯定会在标准中

如果你将编写一个Prolog系统作为练习,不要期望你做得太多。毕竟,这是一项相当大的努力

首先,目标是,即13211-1:1995,包括林前1:2007 林后2:2012。该核心几乎得到了许多系统的支持,如:IF、SWI、YAP、B、GNU、SICStus、Jekejeke、Minerva。因此,虽然这个核心只涵盖了最基本的内容,但对您来说仍然有很多工作要做

那么,你可以考虑你想去的方向。从标准的角度来看,这些是特定于实现的扩展。系统提供扩展的方式差别很大,因此没有明确的选择方法。最流行的系统是商业和开源的。一个比SWI具有更好的一致性的开源系统

你的问题有很多值得商榷的含意,所以让我来整理一下:

标准的价格。ISO标准确实需要花费一些钱——这些文件具有一定的法律地位——这取决于您所在的国家和立法。免费提供的网络文件只能作为证据。例如,请参见您以相同价格获得的示例:一个官方高价285美元,另一个由INCITS降低30美元。区别只在于封面。至少,您可以以显著降低的价格获得Prolog标准


相关性。只有一个标准。而且系统的一致性相当高。在他们不同的地方,他们的差异相当随机。举个例子,看看这篇文章,它涵盖了阅读和写作两个方面。通常,这些差异是由受到一种或另一种差异影响的用户报告的。这些差异还没有正式定义。

如果您将编写一个Prolog系统作为练习,不要期望完成太多工作。毕竟,这是一项相当大的努力

首先,目标是,即13211-1:1995,包括林前1:2007 林后2:2012。该核心几乎得到了许多系统的支持,如:IF、SWI、YAP、B、GNU、SICStus、Jekejeke、Minerva。因此,虽然这个核心只涵盖了最基本的内容,但对您来说仍然有很多工作要做

那么,你可以考虑你想去的方向。从标准的角度来看,这些是特定于实现的扩展。系统提供扩展的方式差别很大,因此没有明确的选择方法。最流行的系统是商业和开源的。一个比SWI具有更好的一致性的开源系统

你的问题有很多值得商榷的含意,所以让我来整理一下:

标准的价格。ISO标准确实需要花费一些钱——这些文件具有一定的法律地位——这取决于您所在的国家和立法。免费提供的web文档 n仅作为证据。例如,请参见您以相同价格获得的示例:一个官方高价285美元,另一个由INCITS降低30美元。区别只在于封面。至少,您可以以显著降低的价格获得Prolog标准


相关性。只有一个标准。而且系统的一致性相当高。在他们不同的地方,他们的差异相当随机。举个例子,看看这篇文章,它涵盖了阅读和写作两个方面。通常,这些差异是由受到一种或另一种差异影响的用户报告的。这些差异没有正式定义。

我不同意您关于ISO Prolog的假设,事实上,我建议尝试实现ISO Prolog的一小部分,即“确保”正确实现findall/setof

ISO标准的一个主要问题是模块指令。然后选择一个实现对模块进行建模,或者完全跳过它们

甚至一些“未讨论的”构建将很难实现,这取决于你使用C语言、Haskell、Lisp、SQL、JavaScript、C++…以及你对翻译程度的选择。大多数实现不是解释器,而是具有不同程度运行时支持的字节码编译器。字节码级别最常用的选择是Warren的抽象机器WAM,您肯定知道


很多年前,当我写这篇文章时,我设计并实现了一个面向对象的数据库模型,使用算法ABC而不是WAM,我巧妙地设计并实现了变量处理。。。但是我遗漏了setof/bagof,例如…

我不同意你关于ISO Prolog的假设,事实上我建议尝试实现ISO Prolog的一小部分,即“确保”正确实现findall/setof

ISO标准的一个主要问题是模块指令。然后选择一个实现对模块进行建模,或者完全跳过它们

甚至一些“未讨论的”构建将很难实现,这取决于你使用C语言、Haskell、Lisp、SQL、JavaScript、C++…以及你对翻译程度的选择。大多数实现不是解释器,而是具有不同程度运行时支持的字节码编译器。字节码级别最常用的选择是Warren的抽象机器WAM,您肯定知道


很多年前,当我写这篇文章时,我设计并实现了一个面向对象的数据库模型,使用算法ABC而不是WAM,我巧妙地设计并实现了变量处理。。。但是我遗漏了setof/bagof,例如…

你能给我指一下讨论表格的会议记录吗?或者任何书面提案?我知道的大部分信息来自Skuttlebutt:-我不知道任何书面提案,甚至讨论提交的会议记录都应该写入标准。我所知道的是,越来越多的Prolog用户似乎接受现代Prolog系统应该实现tabling…tabling是Prolog的一个扩展,在考虑它的有效实现之前,您可以并且应该在Prolog中实现并应用它。除了XSB、YAP或B之外,还有其他系统支持tabling吗?这些系统在实施上似乎也有很大的不同。你能给我看一下讨论过提交表格的会议记录吗?或者任何书面提案?我知道的大部分信息来自Skuttlebutt:-我不知道任何书面提案,甚至讨论提交的会议记录都应该写入标准。我所知道的是,越来越多的Prolog用户似乎接受现代Prolog系统应该实现tabling…tabling是Prolog的一个扩展,在考虑它的有效实现之前,您可以并且应该在Prolog中实现并应用它。除了XSB、YAP或B之外,还有其他系统支持tabling吗?似乎这些系统在实施方面也有很大的不同。