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

Перейти к навигацииПерейти к поиску
Парадигмы программирования

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

История

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

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

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

Примечания

  1. 1 2 Ehud Shapiro. The family of concurrent logic programming languages (англ.) // ACM Computing Surveys[англ.]. — 1989. — Vol. 21, iss. 3. — P. 413–510. — doi:10.1145/72551.72555.
  2. Green, Cordell. Application of Theorem Proving to Problem Solving (PDF). IJCAI 1969. Архивировано (PDF) 10 февраля 2023. Дата обращения: 26 ноября 2023.
  3. Foster, J.M.; Elcock, E.W. (1969). ABSYS 1: An Incremental Compiler for Assertions: an Introduction. Fourth Annual Machine Intelligence Workshop. Machine Intelligence. Vol. 4. Edinburgh, UK: Edinburgh University Press. pp. 423—429.

Литература

Ссылки