【发布时间】:2014-09-01 19:53:40
【问题描述】:
Software Abstractions 中的第一个练习是将示例属性从关系演算样式转换为谓词演算样式。
尽管学习了书中的逻辑章节,但我仍然无法自信地说出哪个是谓词、导航表达式和关系样式的示例,哪个不是。
任何建议表示赞赏
【问题讨论】:
标签: alloy
Software Abstractions 中的第一个练习是将示例属性从关系演算样式转换为谓词演算样式。
尽管学习了书中的逻辑章节,但我仍然无法自信地说出哪个是谓词、导航表达式和关系样式的示例,哪个不是。
任何建议表示赞赏
【问题讨论】:
标签: alloy
您寻求的是建议,而不是三种表达方式的定义。我的建议是:不要担心。
我已经使用 Alloy 多年了,我不记得曾经遇到过任何解决方案取决于区别的问题。您可以将 Software Abstractions 中的讨论视为一种明确 Alloy 提供多种方式来表达同一想法的方式的一种方式,并在关键方面使用名称来明确这一点这是语言设计的故意属性,而不是偶然的。
如果您正在为一个小组项目编写 Alloy,那么您随时选择哪种风格可能很重要;如果你是为自己写的,你可以做的比写东西更糟糕,以任何方式让你最清楚表达的意思(并且最容易告诉你表达的表达是否正确)。
【讨论】:
不要灰心。正如 Michael Sperberg-McQueen 解释的那样,这不是必需的,你不应该担心并继续前进。我把它放在书中是为了向来自不同逻辑背景的人解释如何以他们熟悉的风格使用合金:熟悉传统一阶逻辑的人的谓词风格;适合那些熟悉用 Java 和 OCL 等语言编写运行时断言的人的导航风格;以及那些看过 Z 的人的关系风格。对于那些不熟悉这些的人来说,那部分结果证明是相当不开明的!
【讨论】: