×

逻辑编程入门。 (英语) Zbl 1451.68003号

人工智能与机器学习综合讲座44.加利福尼亚州圣拉斐尔:Morgan&Claypool出版社(ISBN 978-1-68173-724-9/hbk;978-1-681 73-722-5/pbk;97 8-1-68173-723-2/电子书)。xx,199页。(2020).
书中所采用的方法被称为“来自30多年的研究、应用和教学”,“采用模型理论方法而不是传统的证明理论方法”,以及“与国家平等对待变化”。在此基础上,读者只能怀着极大的兴奋打开这本书,但正如我们将看到的那样,当他们读完后合上它时,会感到更加沮丧。
逻辑编程是一个古老的领域,正如每一位从事该领域工作的研究人员所认为的那样,它旨在让“程序员明确编码有关应用领域和程序目标的信息,但他们不指定内部处理细节,让执行这些程序的系统自己决定这些细节”,正如“逻辑程序[…]关注的那样什么是正确的,并且什么被通缉,而不是怎样实现预期目标”。这是一个很好的想法,但30年前,纯声明式编程只能在最简单的示例中使用,例如亲属关系,甚至只是其中一些递归关系,如“后代”已经要求程序员了解证明引擎的工作原理,以便对规则体中的规则和原子进行正确排序。然而,不放弃这个想法,努力取得进展,是有道理的,也可能是值得赞扬的。这样一本书应该表明,已经取得了微小的进展。相反,读者将被告知他们不应该写作
目标(X,Y):-p(X)&r(X,Y)&q(X)
但是
目标(X,Y):-p(X)&q(X)&r(X,Y)
(在这种情况下,除了这两个令人兴奋的规则变体之外,没有考虑其他任何东西),因为评估进行的方式不同。专注于什么是真实的,鼓励命令式程序员质疑他们的if-else语句就到此为止了!这是一个细节问题(仍在一页半的篇幅中讨论),但唉,书中没有任何内容,绝对没有任何内容会鼓励任何对这个问题的观点尚未明确的人花时间学习逻辑编程,而不是Python或深度学习。这只是一个微小的玩具例子——一个有3条边的图形,一个有5个块的块世界,2个父母和4个孩子,3个按钮和3个灯,整数加法的定义…–用代码片段捕获;除了在已经出版的许多逻辑编程教科书中可以找到的最简单的代码之外,其他什么都没有,它们通常看起来更优雅,拼写错误更少,并且是更实质性实现的一部分。任何人如果将今天的人工智能状态与30年前的状态进行比较,欣赏它今天所取得的成就,认为它在一年、两年、五年前都没有取得成就,相信它在未来一年、二年、五年内所能实现的承诺,那么当他们遇到这样的说法时,他们不会转向逻辑编程什么怎样用与30年前完全相同的术语表达,支持或更经常地不支持始终相同的玩具示例,进一步简化,以低于平均教学标准的方式。
除了失望之外,读者还会感到愤怒,如果他们真的读了这本书,然后想知道是否有人曾经费心这么做过,无论是同事、评论家还是学生,他们都应该“忍受过这本书的早期版本”。当然,所有的书都有错别字,但第一张是第一张图片上的一棵小树,上面有一个标记为节点的在下一页的表格上会变成东亚银行这是一个不祥的预兆,如此明目张胆,出现在一篇显然一点都不重要的文本中如此早。不幸的是(这是一个副词,加上幸运的是,作者一次又一次令人恼火地使用它),几乎所有人都怀疑校对工作松懈;这不仅仅是小的拼写错误,也不仅仅是将并集系统地写成交集,比如文本说了什么,而形式主义(虽然很简单)说了什么。也有明显的错误。
材料的处理方式可能不同,据说确实如此。事实上,它触及了逻辑编程的一些常见概念,基本上是事实、规则、查询、统一、解释、自下而上与自上而下搜索、分层,并引入了一些自己的术语:事实、安全、查询规则、更新规则、,查看关系和定义…这构成了前16章,分为4个部分,每个章节都很短,通常约8页,包括一页左右的简单练习。这本书的章节联系松散,结构不清晰。每件事都被极其简短、极其肤浅地涵盖了。特别是,所谓的新概念或观点,例如更新,如果有什么值得欣赏的地方,或者甚至只是出于动机,那么给予它们的空间太小,无法得到适当的欣赏,就像只要提供一个足够重要的例子并加以实施就会得到的那样。在几章之后,概念被定义和重新定义,只需稍作修改(例如,在第7章中,在书的中间,规则的概念被重新审视)。同样的例子——带有4条边的图形、5个块、2个父图形和4个子图形——被反复使用,每次都使用空间从头开始描述它们——文本、代码片段、图片——只是为了说明一个新的细节点。
这种方法实际上不是模型理论,也不是证明理论;这两者都不是,因为语义学和证明理论都没有得到恰当的定义。这一切都是那么肤浅!统一算法得到了充分的描述,尽管不是以最精确、优雅、有效的方式描述的,而且它仅限于此,因为似乎要覆盖SLD分辨率,文本必须跳过相当多的复杂性级别。但语义并没有得到更好的处理;它也只是到处被提及。结果没有明确说明,也没有证据、证据草图和提示。第4章涵盖了更新的创新概念,描述了一个可能会遇到麻烦的程序;显然需要某种陈述,连同证据,至少是一些论点。相反,每件事都可以放在几页纸上,用通常模糊的定义,用通常的小例子,在最后,用规则注释
p(X,z)=>~p(X,a)&p(a,X)
,“我们的语义规定删除factoid,然后再重新添加”(它没有这样说,也没有真正说其他东西;它太模糊了)。这句话很好地说明了概念上的考虑,以及它们在书中的处理方式。在第7章中,分层的概念被笨拙地定义,像往常一样,有一个很小的例子,很难说它说明了这个概念,然后才声称分层有利于前面两页笨拙定义的语义,这可以结束这一章;是时候继续下一个了,不管它是以某种方式相关还是根本无关;这无关紧要。
不,在这本书中,逻辑编程的处理方式没有什么独到之处,或者说没有被处理。在第10章中,声称“我们开始研究涉及构造函数和复合术语的视图定义”。术语可能是新的,但本章只提供了数字的归纳定义(写了数万次),整数加法的归纳定义
下一个
,在声称需要它来定义之前
添加
,在定义之前
添加
就像皮亚诺一样,没有
下一个
它已经被写了数万遍;恭喜!),整数之间小于关系的归纳定义,我们将看到如何定义列表,如何附加两个列表,检查列表是否排序的三个规则,列表成员关系,检查列表是排序列表的子列表的两个规则,排序列表交集,最后是四分之一页,其中有三条树的简短规则。前16章最快、最简短地介绍了这个和那个——规划、自然语言处理…–以前面所示的风格,在第16章“交互式工作表”中,将Prolog、HTML片段和某种模块的文档混合在一起,在背景中又进行了一次有趣的讨论。烟花爆竹是为第17章“变体”准备的,其中作者将撰写不到7页的关于逻辑产生系统、约束逻辑编程、析取逻辑编程、存在逻辑编程、答案集编程和归纳逻辑编程的文章;完成!该章开始于最后一部分,标题为“结论”(为什么不?),并辅以两个附录。第一个附录是EpilogJS的文档,“一个Javascript子例程设计库[碳化硅]用于处理用Epilog编写的逻辑程序”。对于以下功能的列表,最好提供在线用户指南的链接
相同的
选择
通过
乌头
,
日志2
,
最大值
,
随机的,随机的
,
颠倒
以及其他数十种情况,这种情况可能会不时发生改变。第二个附录也是Sierra的一种用户手册,“Epilog的基于浏览器的IDE”。一张内容最少的截图;一页。同样,链接到在线文档或短视频会更加有效,如果愿意,它可以始终保持最新,并且可以节省树木。

MSC公司:

68-01年 与计算机科学相关的介绍性说明(教科书、教程论文等)
68N17号 逻辑编程
PDF格式BibTeX公司 XML格式引用
全文: 内政部