Как сопоставить модели Alloy, ориентированные на ограничения, с кодом языка программирования?

Мне очень нравится создавать модели Alloy, просто перечисляя ограничения, а затем запуская анализатор Alloy: Найдите экземпляры, удовлетворяющие ограничениям.

Но мне пришло в голову, что отображение таких ориентированных на ограничения моделей Alloy в код языка программирования может быть затруднено. Вероятно, не будет однозначного сопоставления выражений ограничений Alloy, скажем, с операторами Java. Действительно, сопоставление списка выражений ограничений Alloy с кодом Java, вероятно, будет довольно сложным.

Если существует огромный семантический/синтаксический разрыв между выражениями Alloy и кодом языка программирования, то не уменьшается ли преимущество Alloy?

Не лучше ли не разрабатывать модели Alloy, ориентированные на ограничения? Не лучше ли было бы вместо этого разрабатывать модели Alloy, ориентированные на алгоритмы (т. е. создавать модели Alloy, которые выглядят как код языка программирования), чтобы уменьшить семантический/синтаксический разрыв?

Я очень хочу услышать ваши мысли по этому поводу.


person Roger Costello    schedule 16.04.2018    source источник


Ответы (1)


Два комментария от меня:

  1. Можно программировать на основе ограничений. См. языки логического программирования.

  2. Но даже если вы используете обычный язык программирования: неявно модель всегда есть. Это просто не выражено в коде программы.

Так что, на мой взгляд, этот пробел не умаляет преимущества Alloy, и было бы разумно сделать ваши модели максимально декларативными.

person wmeyer    schedule 17.04.2018