Программирование на чистом Прологе

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

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

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

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

Порядок предложений в программах на общепринятом Прологе важнее, чем порядок предложений в программах на чистом Прологе. 2.3.2.