рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

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

Логическое программирование на Лиспе - раздел Программирование, Обзор языков логического программирования Логическое Программирование На Лиспе. Лисповские Функции, Как И Написанные На...

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

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

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

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

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

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

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

Пользователя привлекает ясность, содержательность программ и их нетехнический характер. В программе не нужно описывать, каким образом решается задача. Достаточно описания самой задачи и того, что желательно узнать. Однако логическое программирование с использованием лишь хорновских предложений было бы слишком узконаправленным. Поэтому, кроме этого, используются другие методы программирования.

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

– Конец работы –

Эта тема принадлежит разделу:

Обзор языков логического программирования

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

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Логическое программирование на Лиспе

Что будем делать с полученным материалом:

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

Все темы данного раздела:

Чистый Полог
Чистый Полог. Взаимосвязь логического программирования и языка Пролог напоминает взаимосвязь лямбда-исчисления и языка Лисп. Оба этих языка являются конкретной реализацией абстрактных вычислительны

Сравнение с традиционными языками программирования
Сравнение с традиционными языками программирования. Язык программирования характеризуется присущими ему механизмами управления и обработки данных. Пролог как универсальный язык программирования мож

Программирование на чистом Прологе
Программирование на чистом Прологе. Основная цель логического программирования создать возможность разработки программ на языке высокого уровня. В идеале программист должен записать аксиомы, опреде

Проблема завершения программ
Проблема завершения программ. Используемый в Прологе принцип обхода дерева в глубину приводит к серьзным проблемам. Если дерево поиска цели относительно некоторой программы содержит бесконечную вет

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

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

Эффективность программ на Прологе
Эффективность программ на Прологе. В практическом программировании на Прологе необходимо обращать внимание на эффективность программ. Установим критерии оценки программ. Основной оцениваемый

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

Язык логического программирования KL
Язык логического программирования KL. KL0 от англ. kernel-language version 0 ядро-язык версии 0 язык, в основу которого положено расширение языка логического программирования Пролог. Среди особенно

Типы данных KL
Типы данных KL. Рассмотрим в общих чертах некоторые базовые типы данных языка. К ним относятся символы, целые и действительные числа, строки и др. Символы в основном предназначены для представления

Язык программирования ShapeUp
Язык программирования ShapeUp. ShapeUp - ещ один язык логического программирования, в основу которого положен Пролог, расширенный средствами сопоставления строк. В ShapeUp образцы строк рассматрива

Lisp язык функционального программирования
Lisp язык функционального программирования. Почему я решил заострить внимание на Лиспе. Дело в том, что кроме функционального программирования которое является основным в Лиспе в этом языке

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

Используемая литература
Используемая литература. И. Братко Программирование на языке Пролог для искусственного интеллекта. М Мир 1990г. 2. Язык Пролог в пятом поколении ЭВМ. Сборник статей под редакцией Ильинского.

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги