Файл: Содержание 1 Цель 3 2 Введение 3 3 Преимущества логического программирования 4.docx
Добавлен: 10.11.2023
Просмотров: 228
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Содержание
1 Цель 3
2 Введение 3
3 Преимущества логического программирования 4
4 Язык логического программирования Prolog 4
4.1 О языке Prolog 4
4.2 Сравнение с традиционными языками программирования. 6
4.3 Программирование на чистом Прологе. 8
4.4 Порядок правил. 8
4.5 Проблема завершения программ. 9
4.6 Порядок целей. 9
4.7 Избыточные решения. 10
4.8 Эффективность программ на Прологе. 11
4.9 Разработка программ. 13
5 Другие языки логического программирования. 16
5.1 Язык логического программирования KL0. 17
5.2 Типы данных KL0. 17
5.3. Язык программирования ShapeUp. 18
6 Заключение 20
7 Список литературы 21
-
Цель
Целью данной работы является изучение с парадигмы логического программирования
-
Введение
Логическое программирование — парадигма программирования, а также раздел дискретной математики, изучающий методы и возможности этой парадигмы, основанной на выводе новых фактов из данных фактов согласно заданным логическим правилам.
Логическое программирование возникло как упрощение функционального программирования для математиков и лингвистов, решающих задачи символьной обработки. Вместо описания алгоритма решения задачи описывается мир задачи, какие имеются объекты, их свойства и отношения между ними. За основу описания берутся отношения между объектами. Логическая программа представляет собой набор отношений, которые называются фактами, и правил, на основании которых могут быть получены новые отношения. Она не задает никакого процесса вычислений. Это своего рода база данных (БД) о предметной области задачи. Ее применение инициализируется запросом. Поиск ответа на запрос заключается в попытке логического вывода запроса на основании фактов и правил, имеющихся в БД. Поиск решения выполняется специальной программой - интерпретатором.
Первым языком логического программирования был язык Planner, в котором была заложена возможность автоматического вывода результата из данных и заданных правил перебора вариантов (совокупность которых называлась планом). Planner использовался для того, чтобы понизить требования к вычислительным ресурсам (с помощью метода backtracking) и обеспечить возможность вывода фактов, без активного использования стека. Затем был разработан язык Prolog, который не требовал плана перебора вариантов и был, в этом смысле, упрощением языка Planner.
В настоящее время самый популярный язык логического программирования – Prolog, с множеством диалектов, являющийся по своей сути универсальной машиной вывода, работающей в предположении замкнутости мира фактов. Другие менее популярные языки: Datalog, Mercury, Oz.
-
Преимущества логического программирования
-
Задача программиста – описание логической модели предметной области в терминах объектов, их свойств и отношений между ними (без деталей): описание данных и логики их обработки
аналогия с ООП.
1 Цель 3
2 Введение 3
3 Преимущества логического программирования 4
4 Язык логического программирования Prolog 4
4.1 О языке Prolog 4
4.2 Сравнение с традиционными языками программирования. 6
4.3 Программирование на чистом Прологе. 8
4.4 Порядок правил. 8
4.5 Проблема завершения программ. 9
4.6 Порядок целей. 9
4.7 Избыточные решения. 10
4.8 Эффективность программ на Прологе. 11
4.9 Разработка программ. 13
5 Другие языки логического программирования. 16
5.1 Язык логического программирования KL0. 17
5.2 Типы данных KL0. 17
5.3. Язык программирования ShapeUp. 18
6 Заключение 20
7 Список литературы 21
Цель
Введение
Преимущества логического программирования
Задача программиста – описание логической модели предметной области в терминах объектов, их свойств и отношений между ними (без деталей): описание данных и логики их обработки
Удобство описания отношений между объектами (реляционная модель).
Компактность кода (обработка структурированных данных, лог. правила).
Возможность перебора и поиска различных решений, заложенная в язык.
Легкость понимания (описание отд. правил), отладки программ (trace).
Легкость описания сложных структур данных (деревья, списки и т.п.).
Эффективный метод вычислений – рекурсия.
Отсутствие указателей, операторов присваивания и безусловного перехода.
Множество областей для применения: автоматический перевод, обработка текстов, экспертные системы, САПР, Data-minig системы, автоматическое управление, СУБД, символьные вычисления.
-
Язык логического программирования Prolog
-
О языке Prolog
Логические программы, исполняемые с помощью вычислительной модели Prolog, называются программами на чистом Прологе. Чистый Prolog представляет собой приближённую реализацию вычислительной модели логического программирования на последовательной машине. Конечно, данная реализация не является единственно возможной. Она является, однако, одной из наилучших с практической точки зрения – совмещения свойств абстрактного интерпретатора с возможностью эффективного выполнения.
При построении на основе абстрактного интерпретатора некоторого интерпретатора для конкретного языка программирования необходимо принять два решения. Во-первых, следует ограничить произвол в выборе редуцируемой цели в резольвенте, т.е. уточнить метод расписания. Во-вторых, нужно реализовать недетерминированный выбор предложения программы, используемого в редукции.
Существуют разные языки программирования, использующие различные способы выбора. Грубо говоря, они делятся на два класса. Пролог и его расширения основаны на последовательном выполнении. Другие языки, такие, как Parlog, Параллельный Пролог и GHC, основаны на параллельном выполнении. Последовательные языки отличаются от параллельных методом реализации недетерминизма. Отличие Пролога от его версий состоит в методе выбора редуцируемой цели.
Выполнение программ на Прологе заключается в работе абстрактного интерпретатора, при которой вместо произвольной цели выбирается самая левая цель, а недетерминированный выбор предложения заменяется последовательным поиском унифицируемого правила и механизма возврата.
Другими словами, в Прологе используется стековый метод расписания. В Прологе резольвента используется как стек – для редукции выбирается верхняя цель, производные цели помещаются в стек резольвенты.
В дополнение к методу стека Пролог моделирует недетерминированный выбор редуцирующего правила с помощью последовательного поиска и механизма возврата. При попытке редуцировать цель выбирается первое предложение, заголовок которого унифицируем с данной целью. Если не существует правила, унифицируемого с выбранной целью, то вычисление восстанавливается на стадии последнего сделанного выбора и выбирается следующее унифицируемое предложение.
-
Сравнение с традиционными языками программирования.
В логическом программировании обработка данных полностью заключена в алгоритме унификации. В унификации реализованы:• однократное присваивание,• передача параметров,• размещение записей,• доступ к полям записей для одновременных чтения/записи.Традиционные языки, как правило, содержат различной степени сложности средства обработки ошибочных и исключительных ситуаций. Чистый Пролог не содержит механизма обработки ошибок и исключительных ситуаций, встроенного в описание языка. В отличие от традиционных языков ситуации, приводящие к ошибке (например, отсутствие нужной ветви в операторе case, деление на нуль), в чистом Прологе приводят к “отказу”.
-
Программирование на чистом Прологе.
-
Порядок правил.
Порядок предложений в программах на общепринятом Прологе важнее, чем порядок предложений в программах на чистом Прологе.
-
Проблема завершения программ.
-
Порядок целей.
-
Избыточные решения.