Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект по ЯП_Гайденрайх.doc
Скачиваний:
23
Добавлен:
16.03.2015
Размер:
533.5 Кб
Скачать

Логическое программирование Занятие 9.

Логическое программирование – наряду с функциональным, еще одна из наиболее известных альтернатив традиционному императивному программированию. Можно сказать, что еще одной чертой является то, что парадигма логического программирования еще более «поднимает» уровень абстракции.

Достаточно сказать, что языки логического программирования, в частности – Пролог, заслуженно может быть отнесен к декларативным. Иными словами, Пролог-система может находить решение задачи самостоятельно, без четкого предписания со стороны программиста, КАК это сделать. Программисту необходимо лишь указать, ЧТО мы хотим получить, и четко описать предметную область на некотором формальном языке.

x*15-1=224 ? УМНОЖЕНИЕ(x,15,-1,224).

В основу языков логического программирования, как следует из самого названия, положена логика. А логика, как известно – это «наука о правильном мышлении», «правила рассуждения».

Логическое программирование сильно отклоняется от основного пути развития языков программирования. Используется не некоторая последовательность преобразований, отталкивающихся от архитектуры фон Неймана и присущего ей набора операций, а теоретическая модель, никак не связанная с каким либо типом машины.

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

Постановка задачи формализуется в виде логического утверждения, подлежащего доказательству. Такое утверждение называется целевым утверждением или вопросом. Программа - это множество аксиом и правил вывода, а исполнение - это попытка логического вывода целевого утверждения из программы. При этом используется конструктивный метод доказательства целевого утверждения, т.е. в процессе доказательства находятся аргументы, которые делают истинным данное целевое утверждение.

Исторические аспекты происхождения логического программирования К 1969 году относятся первые получившие достаточную известность попытки создания логических языков программирования – это Absys, созданный в США в университете Абердина в Шотландии, и Planner – фунционально-логический язык, разработка Карла Хьюита из Лаборатории Искусственного Интеллекта Массачусетского Технологического Института, США. Planner породил впоследствии целый ряд потомков, среди которых QA4, Popler, Conniver, QLisp и Ether. Одним из ранних языков логического программирования стал эквациональный язык Golux в котором программа представляет собой совокупность равенств (1973), автором которого Хайесом была сформулирована идея «вычисления = контролируемая дедукция».

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

  • Mercury

  • Strand

  • ALF

  • Fril

  • Gödel

  • XSB

  • KLO

  • ShapeUp

  • Hayes.