Maksym Prokopov
Personal blog powered by a passion for technology.

Введение в Prolog

29.05.2018
Reading time: 2 min.

Хочу такой туториал, с которым все понятно, куда коней запрягать. А его нет. Напишу тогда свой.

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

5 разных человек в 5 разных домах разного цвета, курят 5 разных марок сигарет, выращивают 5 разных видов животных, пьют 5 разных видов напитков. Вопрос: кто выращивает рыбок?

Подсказки:

  • Норвежец живет в первом доме.
  • Англичанин живет в красном доме.
  • Зеленый дом находится левее белого.
  • Датчанин пьет чай.
  • Тот, кто курит Rothmans, живет рядом с тем, кто
  • выращивает кошек.
  • Тот, кто живет в желтом доме, курит Dunhill.
  • Немец курит Marlboro.
  • Тот, кто живет в центре, пьет молоко.
  • Сосед того, кто курит Rothmans, пьет воду.
  • Тот, кто курит Pall Mall, выращивает птиц.
  • Швед выращивает собак.
  • Норвежец живет рядом с синим домом.
  • Тот, кто выращивает лошадей, живет в синем доме.
  • Тот, кто курит Philip Morris, пьет пиво.
  • В зеленом доме пьют кофе.

Для решения задач такого типа очень подходит Prolog.
Язык оперирует всего тремя понятиями, это Факт (Fact), Правило (Rule) и Запрос (Query).

Факт.

Как выглядит факт? Простое утверждение, без условий.

Пример: Норвежец живет в первом доме.

Правило.

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

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

Запрос.

Пример: Кто выращивает рыбок?

Здесь все понятно, система должна найти ответ на запрос используя факты и правила.

Написание программы на прологе и есть нахождение ответа на запрос используя для этого правила и факты. Создание таких правил и фактов и есть написание программы.

Где еще используется Prolog? В языке запросов Datalog в Datomic и Cascalog на Hadoop.