无意的过度约束:所有声明式描述风格的缺点?
Inadvertent overconstraint: A downside of all declarative styles of description?
书 Software Abstractions 第 163 页有这样一段非凡的陈述:
The declarative style of description is very powerful, but it has a
downside: inadvertent overconstraint.
哇!
"inadvertent overconstraint"是所有声明式语言都会出现的问题吗?例如,XML Schema 中是否会出现无意的过度约束? SQL 中是否发生无意的过度约束?
换句话说,"inadvertent overconstraint"问题是Alloy特有的,还是普遍适用于所有声明式语言?如果是后者,我将非常感谢您的解释。
这是合相带来的好处的反面。在编程语言中,您不能通过说 "the output is a permutation of the input and the elements are in order" 来编写排序,但您可以在允许 和 的规范语言中说。这提供了很多功能,尤其是通过启用关注点分离,它让您可以从最小的约束开始,然后增加它们。但有一个缺点:添加太多约束,您可能最终会得到 false(或者更糟的是,结果比您预期的要强一点)。 Alloy 的 unsat 核心设施有助于解决这个问题,但不能完全解决问题。
书 Software Abstractions 第 163 页有这样一段非凡的陈述:
The declarative style of description is very powerful, but it has a downside: inadvertent overconstraint.
哇!
"inadvertent overconstraint"是所有声明式语言都会出现的问题吗?例如,XML Schema 中是否会出现无意的过度约束? SQL 中是否发生无意的过度约束?
换句话说,"inadvertent overconstraint"问题是Alloy特有的,还是普遍适用于所有声明式语言?如果是后者,我将非常感谢您的解释。
这是合相带来的好处的反面。在编程语言中,您不能通过说 "the output is a permutation of the input and the elements are in order" 来编写排序,但您可以在允许 和 的规范语言中说。这提供了很多功能,尤其是通过启用关注点分离,它让您可以从最小的约束开始,然后增加它们。但有一个缺点:添加太多约束,您可能最终会得到 false(或者更糟的是,结果比您预期的要强一点)。 Alloy 的 unsat 核心设施有助于解决这个问题,但不能完全解决问题。