1. Общие сведения о языке Пролог
Пролог - машинный язык пятого поколения, используемый при построении экспертных систем, настраиваемых баз данных, естественно-языковых интерфейсов и интеллектуальных систем управления. Свое название Пролог получил от слов "Программирование на языке ЛОГики".
Теоретической основой Пролога является раздел символьной логики, называемый исчислением предикатов. Предикат - это логическая функция, которая выражает некоторое отношение между своими аргументами и принимает значение "истина", если это отношение имеется или "ложь", если
оно отсутствует.
В отличие от Паскаля, Бейсика и других традиционных процедурных языков программирования,
где программист должен описать процедуру решения шаг за шагом, приказывая компьютеру, как решать проблему, при использовании Пролога программисту достаточно описать задачу и основные
правила се решения, а Пролог сам определит, как прийти к решению. Прологу присущ ряд свойств, которыми не обладают процедурные языки программирования, что делает его мощным средством
логического программирования. К таким свойствам относятся:
- механизм вывода с поиском и возвратом,
- встроенный механизм сопоставления с образцом,
- простая, но выразительная структура данных с возможностью ее изменения.
Пролог отличается единообразием программ и данных. Данные и программы лишь две различные точки зрения на объекты Пролога. В единой базе данных можно свободно создавать и
уничтожать отдельные элементы. Поскольку не существует различия между программой и данными, то можно менять программу во время ее работы. Естественным методом программирования
является рекурсия.
Пролог является декларативным языком. Это означает, что имея необходимые факты и правила,
он может использовать дедуктивные выводы для решения задач программирования. Пролог - язык описаний и вместо серии шагов, определяющих, как компьютер должен решать проблему,
программа на Прологе содержит описание проблемы, которое включает в себя:
- Имена и структуры объектов, используемых в задаче.
- Имена отношений (предикатов), существующих между объектами.
- Основную цель (задачу), решаемую данной программой.
- Факты и правила, описывающие отношения между объектами.
Такое описание используется для спецификации желаемых отношений между имеющимися входными данными и
выходными данными, генерируемыми на основании входных. Первые две области описаний аналогичны секции объявлений программ на Паскале. Третья описывает формулировку основной
цели программы. Четвертая содержит список логических утверждений в форме фактов, таких как,
Иван любит Марью
Петр любит пиво
или в форме правил, например,
Иван любит X, если Петр любит Х
( Иван любит то, что любит Петр ).
На основе имеющихся правил и фактов Пролог делает выводы. Имея два вышеприведенных факта и одно правило. Пролог придет к выводу, что
Иван любит пиво.
А если задать Прологу задачу, Например,
Найти всех, кто любит пиво ,
то он найдет все решения этой задачи. При этом он автоматически управляет решением задачи, стараясь во время выполнения программы найти все возможные наборы значений, удовлетворяющие
поставленной задаче. При этом поиск производится по всей базе данных, ранее введенной в систему (термин база данных используется при объединении набора фактов для совместного их
использования при решении некоторой конкретной задачи).
В Прологе используется метод поиска с возвратом, который позволяет в случае нахождения
одного решения пересмотреть все сделанные предположения еще раз, чтобы определить, не приводит ли новое значение переменной к еще одному решению. Синтаксис Пролога очень короток и прост. Поэтому ею проще освоить, чем запутанный
синтаксис традиционных языков программирования.