Пролог (язык программирования): различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Мертвая ссылка. Сделал копию на страницу из web.archive.org
Метка: добавление ссылки
Нет описания правки
Строка 33: Строка 33:


== Кроссплатформенность ==
== Кроссплатформенность ==
Пролог реализован практически для всех известных операционных систем и платформ (в том числе для [[Java]] и [[.NET]]). В число операционных систем входят OS для [[мэйнфрейм]]ов, всё семейство [[Unix]], [[Windows]], OS для мобильных платформ.
Пролог реализован практически для всех известных операционных систем и платформ (в том числе для [[Java]] и [[.NET Framework|.NET]]). В число операционных систем входят OS для [[мэйнфрейм]]ов, всё семейство [[Unix]], [[Windows]], OS для мобильных платформ.


== Архитектура ==
== Архитектура ==
Строка 82: Строка 82:
* [http://www.dobrev.com/ Болгарский Клубничный Пролог]
* [http://www.dobrev.com/ Болгарский Клубничный Пролог]
* [http://www.swi-prolog.org/ SWI-пролог]
* [http://www.swi-prolog.org/ SWI-пролог]
* [http://www.artint.ru/articles/narin/kii-98.htm Искусственный интеллект: стагнация или новая перспектива] - [http://web.archive.org/web/20080822215127/http://www.artint.ru/articles/narin/kii-98.htm (Копия статьи из web.archive.org)]
* [http://www.artint.ru/articles/narin/kii-98.htm Искусственный интеллект: стагнация или новая перспектива] — [http://web.archive.org/web/20080822215127/http://www.artint.ru/articles/narin/kii-98.htm (Копия статьи из web.archive.org)]


{{Языки программирования}}
{{Языки программирования}}

Версия от 16:41, 9 октября 2010

Пролог
Семантика логическое программирование
Класс языка язык программирования, декларативный язык программирования и дедуктивный язык программирования[d]
Появился в 1972
Автор Alain Colmerauer
Расширение файлов .pl, .pro или .P
Основные реализации Turbo Prolog, Visual Prolog, GNU Prolog, Quintus, SICStus, SWI-Prolog, YAP
Диалекты ISO Prolog, Edinburgh Prolog
Испытал влияние Planner
Повлиял на Mercury, Oz, Erlang, Strand

Пролог (англ. Prolog) — язык и система логического программирования, основанные на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.

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

Факты в языке Пролог описываются логическими предикатами с конкретными значениями. Правила в Прологе записываются в форме правил логического вывода с логическими заключениями и списком логических условий.

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

Факты в базах знаний на языке Пролог представляют конкретные сведения (знания). Обобщённые сведения и знания в языке Пролог задаются правилами логического вывода (определениями) и наборами таких правил вывода (определений) над конкретными фактами и обобщёнными сведениями.

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

Развитие

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

Язык Пролог в 1980-х годах был включен в ряд советских вузовских и школьных учебников информатики для изучения элементов математической логики, принципов логического программирования и проектирования баз знаний и моделей экспертных систем. С этой целью на IBM PC и ряде советских школьных компьютеров были реализованы учебные русскоязычные интерпретаторы Пролога.

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

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

Кроссплатформенность

Пролог реализован практически для всех известных операционных систем и платформ (в том числе для Java и .NET). В число операционных систем входят OS для мэйнфреймов, всё семейство Unix, Windows, OS для мобильных платформ.

Архитектура

Многие современные реализации языка имеют внутреннее расширение за счет ООП-архитектуры. Кроме проприетарных решений также существуют свободные реализации Пролог. Важно, что для языка существует стандарт ISO, принятый как ISO/IEC JTC1/SC22/WG17.

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

Критика

Пролог критикуется в первую очередь за свою недостаточную гибкость[источник не указан 5022 дня], от чего решения на «обычных» языках программирования (например, C++, Java) в сочетании с базами данных оказываются более технологичными, чем аналогичные решения на Прологе. Негибкость заключается в трудности изучения языка, более высоких требований к квалификации программиста на Прологе, трудности отладки программы, неразвитости технологии программирования, плохой контролируемости промежуточных результатов[источник не указан 5022 дня].

Новая перспектива

Перспектива развития всемирной Сети, известной как проект Веб 3.0 поддерживает особый интерес к семантике распределенных данных и их обработке декларативными методами. В связи с этим появились концепции языка OWL, основанного на концепции First-Order Logic (FOL)[2], реализацию которой, в свою очередь, можно рассматривать как значительно более расширенную технику классического Prolog.

Примечания

Литература

  • Иван Братко. Алгоритмы искусственного интеллекта на языке PROLOG = Prolog Programming For Artificial Intelligence. — М.: Вильямс, 2004. — 640 с. — ISBN 0-201-40375-7.

Ссылки


Шаблон:Link GA