Логическое программирование

       

Декларативная и процедурная семантики


Декларативная семантика

программы касается только отношений, определенных в программе. Таким образом, декларативная семантика определяет, что должно быть результатом работы программы. Является ли целевое утверждение истинным, исходя из данной программы, и если оно истинно, то для какой конкретизации переменных.

Процедурная семантика Пролога - это процедура достижения списка целей в контексте данной программы. Процедура выдает истинность или ложность списка целей и соответствующую конкретизацию переменных. Процедура осуществляет автоматический возврат для перебора различных вариантов.

Декларативная семантика программы на “чистом” Прологе не зависит от порядка предложений и от порядка целей в предложениях.

Процедурная семантика существенно зависит от порядка целей и предложений. Поэтому порядок может повлиять на эффективность программы; неудачный порядок может даже привести к бесконечным рекурсивным вызовам.

Имея декларативно правильную программу, можно улучшить ее эффективность путем изменения порядка предложений и целей при сохранении ее декларативной правильности. Переупорядочивание один из методов предотвращения зацикливания.

Кроме переупорядочивания существуют и другие, более общие методы предотвращения зацикливания, способствующие получению процедурно правильных программ.

Определение – это попытка окружить пустыню стеной из слов.

Сэмюэль Батлер 1835-1902



Содержание раздела