- •Кафедра Информационных систем и вычислительной техники Национального минерально-сырьевого университета «Горный"
- •Содержание
- •История развития и современное состояние языка prolog
- •Тенденции в истории развития языка Prolog
- •Области применения языка Prolog
- •Современные реализации языка Prolog
- •Поддержка веб-технологий в реализацях Prolog
- •Понятие факта, правила, запроса и процедуры
- •Основы разработки prolog-программ
- •Общие сведения о языке Prolog
- •Механизм сопоставления и поиска с возвратом
- •Основные элементы языка Prolog
- •Среда разработки программ pie и система swi-prolog
- •Основы работы в консоли Prolog
- •Основы работы с программными файлами
- •Справка и помощь в среде swi-Prolog
- •Основы трассировки и отладки в среде pie и swi- Prolog
- •Графические интерфейсы на базе swi-Prolog/xpce
- •Загрузка и запуск программ swi-Prolog'a
- •Использование ярлыков для запуска программ
- •Использование командных и скриптовых сценариев
- •Среда разработки turbo-prolog
- •Структура программы на Turbo Prolog'e
- •Оболочка системы Turbo Prolog
- •Отладка и трассировка программ
- •Работа с простейшими программами в Turbo Prolog'e
- •Работа с графикой в Turbo Prolog'e
- •Среда разработки visual prolog
- •Интегрированная среда разработки
- •Разработка консольного проекта
- •Разработка gui проекта на Visual Prolog'e
- •Prolog — язык логического программирования
- •Системы основанные на знаниях
- •Логические модели и логическое программирование
- •Простейшие конструкции языка предикатов
- •Предикатные формулы
- •Определение правильно построенной формулы
- •Логический вывод
- •6.6.1. Правило резолюции для простых предложений
- •Правило резолюции для сложных предложений
- •Простая резолюция сверху вниз
- •Общая резолюция сверху вниз
- •Унификаторы и примеры унификации
- •Решение задач и извлечение ответа
- •Приложение 1. Запуск Turbo-Prolog в ос Windows 7
- •1. Стандартные предикаты ввода данных.
- •Предикаты преобразования данных
- •Предикаты работы с окнами.
- •Предикаты работы с файлами.
- •Предикаты управления экраном.
- •Предикаты обработки строк.
- •Предикаты работы с графикой.
- •Разные предикаты.
- •Правила вычисление атрибутов экрана.
- •Приложение 3. Пример программы построения дерева синтаксического анализа
- •Интеллектуальные информационные системы prolog - язык разработки интеллектуальных и экспертных систем
История развития и современное состояние языка prolog
Тенденции в истории развития языка Prolog
Любой язык программирования всегда ориентирован на определенный круг задач, при решении которых он наиболее эффективен. Для языка Prolog типичными являются проекты, связанные с разработкой систем искусственного интеллекта — это различные экспертные системы, системы планирования, программы-переводчики, интеллектуальные игры и т.п. Prolog обладает достаточно мощными средствами, позволяющими извлекать информацию из баз данных и знаний. При этом его методы поиска принципиально отличаются от "традиционных". Кроме этого, Prolog часто используют в задачах, связанных с манипулированием на естественном языке.
Интерес к Prolog поднимался и затихал несколько раз, энтузиазм сменялся жёстким неприятием. Наиболее высокий интерес к языку Prolog, как к языку будущего, возник в 1980-х годах во время разработки японской национальной программы «компьютеры пятого поколения». В рамках этого проекта разработчики надеялись, что с помощью Prolog можно будет сформулировать новые принципы, которые приведут к созданию компьютеров более высокого уровня интеллекта.
Эта надежда базировалось на том, что логическое программирование использует не последовательность абстракций и преобразований, которая отталкивается от машинной архитектуры фон Неймана и присущего ей набора операций, а на основе абстрактной модели, которая никак не связана с каким-либо типом машинной модели. Из этого подхода следовало, что не человека надо обучать мышлению в терминах операций компьютера, а компьютер должен выполнять инструкции, свойственные человеку. И на этом историческом этапе некоторые ученые и инженеры считали подобный путь простым и эффективным.
Prolog - язык программирования, который основан не на алгоритме, а на логике предикатов. Если программа на алгоритмическом (процедурном) языке является последовательностью инструкций, выполняющихся в заданном порядке, то Prolog, будучи декларативным языком, содержит только описание задачи, а Prolog-машина выполняет поиск решения, руководствуясь только этим описанием и используя механизм поиска с возвратом и унификацию.
Разработка языка Prolog началась в 1970 г. Аланом Кулмероэ (Alain Colmerauer) и Филиппом Русселом (Philippe Roussel) в университете города Марсель, Франция. Они хотели создать язык, который мог бы делать логические заключения на основе заданного текста. Их работа была частично мотивирована желанием примирить использование логики в качестве декларативного языка представления знаний с процессуальным подходом к представлению знаний, который был популярен в Северной Америке в
конце 1960-х и начале 1970-х годов.
Название Prolog было выбрано Филиппом Русселом как аббревиатура от французского PROgrammation en LOGique (PROLOG) и первая реализация этого языка с использованием компилятора Николауса Вирта "Algol- W" была закончена в 1972 году. Основы современного языка были заложены в 1973 году. Prolog постепенно распространялся среди тех, кто занимался логическим программированием, в основном благодаря личным контактам, а не через коммерциализацию продукта.
Только в 1977 году Д. Уоррен и Ф. Перейра в университете Эдинбурга создают очень эффективный компилятор языка Prolog для ЭВМ DEC-10 и переводят методы логического программирования в практическую плоскость. Интересно, что компилятор был написан на самом Prolog. Эта реализация Prolog, известная как "эдинбургская версия", фактически стала первым и единственным стандартом языка. Как правило, если современная Prolog-система и не поддерживает эдинбургский Prolog, то в ее состав входит подсистема, переводящая Prolog-программу в "эдинбургский" вид.
Позднее в 1980 году К. Кларк и Ф. Маккейб в Великобритании разработали версию Prologа для персональных ЭВМ. А в 1996 году международной организация по стандартизации (ISO - International Organization for Standardization) была создана по языку программирования Prolog рабочая группа ISO/IEC JTC1/SC22/WG17 и принят стандарт ISO/IEC 13211-1 (Part 1: General core). Этот стандарт имеет две коррекции в 2007 и 2012 годах. Кроме этого в 2000 году был принят дополнительный стандарт ISO/IEC 13211-2 (Part 2: Modules), который стандартизует использование в Prolog модулей.
Как видно из приведенных выше стандартов, слухи о безвременной кончине Prolog не являются достоверными. Он и сейчас остается наиболее популярным языком искусственного интеллекта в Японии и Европе. В США, традиционно, более распространен другой язык искусственного интеллекта — язык функционального программирования Лисп.
В развитии языка Prolog наблюдаются очень интересные тенденции. Этот язык быстро приобрел популярность в Европе как инструмент практического программирования. В Японии вокруг языка Prolog были сосредоточены все разработки компьютеров пятого поколения. С другой стороны, в США этот язык в целом был принят с небольшим опозданием в связи с некоторыми историческими причинами [1].
Одна из них состояла в том, что США вначале познакомились с языком Microplanner, который был близок к идее логического программирования, но неэффективно реализован. Определенная доля низкой популярности Prolog в этой стране объясняется также реакцией на существовавшую вначале "ортодоксальную школу" логического программирования, представители которой настаивали на использовании чистой логики и требовали, чтобы логический подход не был "запятнан" практическими средствами, не относящимися к логике.
В прошлом это привело к распространению неверных взглядов на язык Prolog. Некоторые считали, что на этом языке можно программировать только рассуждения с выводом от целей к фактам. Но истина в том, что Prolog является универсальным языком программирования и на нем можно реализовать любой алгоритм. Позиция "ортодоксальной школы" была преодолена практиками, которые использовали более прагматический подход, объединив декларативный подход с традиционным, процедурным. Одной из самых мощных реализаций Prolog в настоящее время является система Visual Prolog, представляя собой полнофункциональную среду программирования. При этом он имеет богатую историю и является развитием и наследником таких систем, как Turbo Prolog и PDC Prolog.
• Turbo Prolog 1.0 (1986 г.) — Разработан датской компанией Prolog Development Center (PDC) в содружестве с фирмой Borland International. Система создавалась с серьезными отступлениями от неофициального стандарта языка, самым существенным из которых было введение строгой типизации данных, но это позволило значительно ускорить трансляцию и выполнение программ. Новый компилятор был по достоинству оценен программистами-практиками, хотя и критиковался в академических кругах.
• Turbo Prolog 2.0 (1988 г.) — Более мощная версия, которая содержала усовершенствованную интегрированную среду разработки программ, быстрый компилятор и средства низкоуровневого программирования. Кроме того, она предоставляла возможность работы с собственными внешними БД, dBase III и Reflex, интегрированным пакетом Lotus 1-2-3, графическим пакетом Paint Brush и другими приложениями. Фирма Borland распространяла эту версию до 1990 г., а затем компания PDC приобрела монопольное право на использование исходных текстов компилятора и дальнейшее продвижение системы программирования на рынок.
• PDC Prolog 3.31 (1992 г.) — Это был эффективный универсальный инструмент профессиональных программистов, который вскоре стал одним из наиболее широко используемых и мог работать в среде MS DOS, OS/2, UNIX, XENIX, PharLap DOS Extender и MS Windows. Эта версия была хорошо совместима с традиционными языками программирования, в первую очередь с языком C. В ней были расширены возможности создания приложений с интерфейсом GUI, принятым в MS Windows и OS/2
• Visual Prolog 4.0 (1996 г.) — В этой работе участвовали российские программисты под руководством Виктора Юхтенко, который позже стал техническим директором компании «Пролог-Софт», представляющей интересы PDC в России. В эту версию входят различные элементы: прежде всего, интерактивная среда визуальной разработки (VDE — Visual Develop Environment), которая включает текстовый и различные графические редакторы, инструментальные средства генерации кода, конструирующие управляющую логику (Experts), а также являющийся расширением языка интерфейс визуального программирования (VPI — Visual Programming Interface), Пролог-компилятор, набор различных подключаемых файлов и библиотек, редактор связей, файлы, содержащие примеры и помощь. Visual Prolog 4.0 поддерживается различными ОС, в том числе MS-DOS PharLap-Extended DOS, всеми версиями Windows, 16 и 32-битовыми целевыми платформами OS/2, а также некоторыми другими системами, требующими графического пользовательского интерфейса.
• Visual Prolog 7.4 (2013 г.) — Последняя версия, представленная на сайте PDC на момент написания данной книги.
