Назад | Содержание| Вперёд 1. 5. Декларативный и процедурныйсмысл программ...

Назад | Содержание| Вперёд

1. 5.    Декларативный и процедурныйсмысл программ

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

декларативный смысл и

процедурный смысл.

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

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

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

Резюме

Программирование на Прологе состоит в определении отношений и в постановке вопросов, касающихся этих отношений.

Программа состоит из предложений. Предложения бывают трех типов: факты, правила и вопросы.

Отношение может определяться фактами, перечисляющими n-ки объектов, для которых это отношение выполняется, или же оно может определяться правилами.

Процедура - это множество предложений об одном и том же отношении.

Вопросы напоминают запросы к некоторой базе данных. Ответ системы на вопрос представляет собой множество объектов, которые удовлетворяют запросу.

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

Различают два типа смысла пролог-программ: декларативный и процедурный. Декларативный подход предпочтительнее с точки зрения программирования. Тем не менее, программист должен часто учитывать также и процедурные детали.

В данной главе были введены следующие понятия:

    предложение, факт, правило, вопрос

    голова предложения, тело предложения

    рекурсивное правило

    рекурсивное определение

    процедура

    атом, переменная

    конкретизация переменной

    цель

    цель достижима, цель успешна

    цель недостижима,

    цель имеет неуспех, цель терпит неудачу

    возврат

    декларативный смысл, процедурный смысл.

Литература

Различные реализации Пролога используютразные синтаксические соглашения. В данной книгемы применяем так называемый Эдинбургскийсинтаксис (его называют также синтаксисом DEC-10,поскольку он принят в известной реализацииПролога для машины DEC-10; см. Pereira и др. 1978), ониспользуется во многих популярныхпролог-системах, таких как Quintus Prolog, Poplog, CProlog, Arity/Prolog, Prolog-2 и т.д.

Bowen D. L. (1981). DECsystem-10 Prolog User's Manual. University ofEdinburgh: Department of Artificial Intelligence.

Mellish С. and Hardy S. (1984). Integrating Prolog in the POPLOG environment.Implementations of Prolog (J. A. Campbell, ed.). Ellis Horwood.

Pereira F. (1982). C-Prolog User's Manual. University of Edinburgh: Departmentof Computer-Aided Architectural Design.

Pereira L. M., Pereira F., Warren D. H. D. (1978). User's Guide to DECsystem-10Prolog. University of Edinburgh: Department of Artificial Intelligence.

Quintus Prolog User's Guide and Reference Manual. Palo Alto: Quintus ComputerSystem Inc. (1985).

The Arity/Prolog Programming Language. Concord, Massachusetts: ArityCorporation (1986).

Назад | Содержание| Вперёд









Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Наверх