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


Логи́ческое программи́рование — парадигма программирования, основанная на математической логике — программы в ней задаются в форме логических утверждений и правил вывода. Наиболее известный язык логического программирования — Пролог.

Первым языком логического программирования был язык Плэнер[1], в котором была заложена возможность автоматического вывода результата из данных и заданных правил перебора вариантов (совокупность которых называлась планом). Плэнер использовался для того, чтобы понизить требования к вычислительным ресурсам (с использованием техники поиска с возвратом) и обеспечить возможность вывода фактов, без активного использования стека. Затем был разработан Пролог, который не требовал плана перебора вариантов и был, в этом смысле, упрощением Плэнера.

От Плэнера также произошли логические языки программирования QA-4, Popler, Conniver и QLISP, а также язык Ether, не использующих метод поиска с возвратами[1]. Языки Mercury, Visual Prolog, Oz, Fril, Datalog основаны на Прологе.

Использование математической логики для представления и выполнения компьютерных программ также является особенностью лямбда-исчисления, разработанного Алонзо Чёрчем в 1930-х. Однако первое предложение использовать клаузальную форму логики для представления компьютерных программ было сделано Корделлом Грином[англ.].[2] При этом использовалась аксиоматизация подмножества LISP вместе с представлением отношения ввода-вывода для вычисления отношения путём моделирования выполнения программы в LISP. С другой стороны, язык программирования Absys использовал комбинацию уравнений и лямбда-исчисления в языке ассертивного программирования, который не накладывает никаких ограничений на порядок выполнения операций.[3]