如何将以约束为中心的 Alloy 模型映射到编程语言代码?

How to map constraint-centric Alloy models to programming language code?

我真的很喜欢通过简单地列出约束然后 运行 Alloy 分析器来设计 Alloy 模型:找到满足约束的实例.

但我突然想到,将这种以约束为中心的 Alloy 模型映射到编程语言代码中可能很困难。可能不会存在 Alloy 约束表达式到 Java 语句的一对一映射。实际上,将 Alloy 约束表达式列表映射到 Java 代码可能非常困难。

如果 Alloy 表达式和编程语言代码之间存在巨大的 semantic/syntactic 差距,那么 Alloy 的好处不会减少吗?

设计以约束为中心的Alloy模型会更好吗?设计以算法为中心的 Alloy 模型(即制作看起来像编程语言代码的 Alloy 模型)以缩小 semantic/syntactic 差距会更好吗?

我很想听听您对此的看法。

我的两条评论:

  1. 可以以基于约束的方式进行编程。请参阅逻辑编程语言。

  2. 但即使您使用传统的编程语言:隐含地,模型始终存在。它只是没有在程序代码中表达。

因此,在我看来,这种差距不会削弱 Alloy 的优势,让您的模型尽可能具有声明性是明智的。