Основы современных компьютерных технологий


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


Логическое программирование (ЛП) - это направление в программировании, основанное на идеях и методах математической логики. Термин "логическое программирование" в литературе по информатике трактуется в широком и узком смысле.

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

Наибольшие практические результаты достигнуты в системах программирования, где в качестве логических программ используются специальные классы логических формул - хорновские дизъюнкты, а в качестве способа их использования применяются специальные методы логического вывода - варианты метода резолюций. Программирование с использованием таких систем называют хорновским и резолюционным, но чаще всего - логическим программированием, перенося узкую трактовку термина на более широкое понятие. Самыми известными системами такого рода являются реализации языка Пролог (Программирование в терминах логики - Programming in logic). Рассмотрим основные идей и понятия ЛП в узком смысле.

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

Конкретному применению логической программы соответствует понятие запроса (цели) - например, каково значение функции, заданной логической программой, при данном значении аргумента.


Начало  Назад  Вперед