загрузка...

4761

Введение в язык Пролог (Prolog)

Реферат

Информатика, кибернетика и программирование

Введениев язык Пролог История происхождения языка Prolog. Prolog в России Версии языка Пролог Диалект SWI-Prolog Prolog — это язык программирования для символических, нечисловых вычислений. Он особенно хорошо...

Русский

2012-11-25

55.5 KB

64 чел.

Введение в язык Пролог

  1.  История происхождения языка Prolog.
  2.  Prolog в России
  3.  Версии языка Пролог
  4.  Диалект SWI-Prolog 

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

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

У многих людей, знакомых с логическим программированием, обычно возникают ассоциации с японским проектом компьютеров пятого поколения, все программное обеспечение которых создавалось на базе Пролога  (подробно: в октябре 1981 года Японское министерство международной торговли и промышленности объявило о создании исследовательской организации — Института по разработке методов создания компьютеров нового поколения (Institute for New Generation Computer Technology Research Center)). Целью данного проекта было создание систем обработки информации, базирующихся на знаниях. Предполагалось, что эти системы будут обеспечивать простоту управления за счет возможности общения с пользователями при помощи естественного языка. Эти системы должны были самообучаться, использовать накапливаемые в памяти знания для решения различного рода задач, предоставлять пользователям экспертные консультации, причем от пользователя не требовалось быть специалистом в информатике. Предполагалось, что человек сможет использовать ЭВМ пятого поколения так же легко, как любые бытовые электроприборы типа телевизора, магнитофона и пылесоса. Вскоре вслед за японским стартовали американский и европейский проекты. Появление таких систем могло бы изменить технологии за счет использования баз знаний и экспертных систем. Основная суть качественного перехода к пятому поколению ЭВМ заключалась в переходе от обработки данных к обработке знаний. Японцы надеялись, что им удастся не подстраивать мышление человека под принципы функционирования компьютеров, а приблизить работу компьютера к тому, как мыслит человек, отойдя при этом от фон неймановской архитектуры компьютеров. В 1991 году предполагалось создать первый прототип компьютеров пятого поколения. Некоторые эксперты считают, что этот проект фактически провалился, и причиной этому послужили некоторые присущие Прологу функциональные ограничения. Строго говоря, Пролог не является языком программирования в чистом виде. С одной стороны, это оболочка экспертной системы, с другой - интеллектуальная база данных, что самое важное, не реляционная.

Математическая модель, лежащая в основе Пролога, довольно сложна, и по мощности системы формирования запросов к базе с этим языком не сравнится ни одна из коммерческих СУБД.

История происхождения языка Prolog

Алан Колмероэ, автор языка Пролог, начал работы над полноценной компьютерной реализацией трудов Ковальского с 1972 года во французском университете Марсель-Экс. Он составил алгоритм формального способа интерпретации процесса логического вывода и разработал систему автоматического доказательства теорем, которая была написана на Фортране. Она-то и послужила прообразом Пролога. Название его произошло от Programmation en Loqicue - ЛОГическое ПРОграммирование. Говорят, что придумала это название жена Алана.

Первое время, в начале 70-х, Пролог был не очень популярен, так же как и Лисп, он пребывал в некоем забвении, вызванном отсутствием хороших реализаций, но вскоре появились первые компиляторы с этого языка, в частности, прекрасная реализация Дэвида Уоррена для компьютера DEC-10 в Эдинбурге, ставшая своего рода стандартом вплоть до сегодняшнего дня.

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

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

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

Пролог в России

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

В частности, московский программист Анатолий Дедков с 1992 г. работает в американской компании Paralogic, Inc., занимаясь разработкой и совершенствованием Пролог-компилятора PTC (Prolog-To-C). Эту версию отличает такая оригинальная возможность, как компиляция в Си-текст (ANSI стандарт), что позволяет в итоге получать переносимый и высокопроизводительный код, а также осуществлять тесную интеграцию с программами, написанными на Си. Модульная структура PTC снимает ряд ограничений, нередко возникающих при переводе Пролог-программ на другие языки. Поддерживается стандартный интерфейс с любыми СУБД через ODBC-протокол, а также работа с внешними базами данных в индексном формате и формате двоичных деревьев. Для поддержки графического интерфейса с пользователем обеспечивается связь с языком Tcl/Tk. Вместе со всеми инструментальными наборами эта система реализована для UNIX и Windows NT.

В последнее время в связи с бурным развитием Internet г-н Дедков занимается добавлением в PTC новых возможностей, связанных в первую очередь с использованием Пролога в Web-серверах для реализации различных поисковых механизмов и поддержки запросов к базам данных (БД). Семантика Пролога позволяет очень компактно описывать самые сложные и эффективно реализуемые запросы, как к реляционным БД, так и к БД с иерархической и другой нелинейной структурой, для чего обычно требуется трудоемкое cgi-программирование. При этом возможность компиляции Пролог-программ в Java-код представляется достаточно перспективным направлением.

К сожалению, в США фактически нет рынка для Пролог-компиляторов. Это объясняется, по мнению Дедкова, в первую очередь сильной "раскрученностью" других языков. Интересно, что причиной невысокой популярности ряда языков программирования, явно обладающих более мощными и выразительными средствами, таких, как тот же Prolog или Lisp, Дедков считает их происхождение. В самом деле, прекрасные языки, разработанные в Европе, известны относительно узкому кругу специалистов, а наиболее популярны у разработчиков созданные в США. Примеров действительно более чем достаточно. С американской стороны пришли C, C++, Fortran, Basic, Cobol, PL/I, а в Европе родились Simula 67, Algol 68, Prolog, Lisp.

Основные области применения Пролога:

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

Области, для которых Пролог не предназначен: большой объем арифметических вычислений (обработка аудио, видео и т.д.); написание драйверов.

Версии Prolog

Изучать Пролог без привязки к конкретной его версии не совсем целесообразно. Версий Пролога очень много. Мы остановимся на наиболее известной у нас в стране и довольно эффективной версии Пролога — Турбо Прологе. Его начинала разрабатывать фирма Borland International в содружестве с датской компанией Prolog Development Center (PDC). Первая версия вышла в 1986 году. Последняя совместная версия имела номер 2.0 и была выпущена в 1988 году.

В 1990 году PDC получила монопольное право на Турбо Пролог и дальше продвигала его под названием PDC Prolog.

В 1992 году вышла версия PDC Prolog 3.31.

В 1996 году, при участии группы питерских программистов, Prolog Development Center выпустила систему Visual Prolog 4.0. В состав среды Visual Prolog были включены инструментальные средства генерации кода, конструирующие управляющую логику, интерфейс визуального программирования и многие другие средства, позволяющие ускорить разработку приложений. Помимо прочих достоинств среды Visual Prolog стоит обратить внимание на возможность использования в идентификаторах символов национального алфавита, в частности, можно употреблять в программах русские имена доменов, предикатов и переменных, что делает программу более понятной и самодокументированной. В декабре 1997 г. фирма PDC выпустила Visual Prolog 5.0, а с января 1999 г. приступила к распространению версии 5.1. В настоящее время все желающие могут бесплатно скопировать через Internet последнюю версию системы Visual Prolog 5.1 Personal Edition, функционирующую в средах Windows 3.1/95/98, NT, OS/2, SCO UNIX и Linux. Сейчас вышла шестая версия системы Visual Prolog, которая, однако, довольно далеко шагнула в сторону не только от эдинбургской версии Пролога, но даже и от своей пятой версии, которая практически без проблем принимала программы на Турбо Прологе.

Для учебных целей вполне пригоден Turbo Prolog. На использование этой реализации языка рассчитаны все приводимые примеры и задачи.

SWI-Prolog

SWI-Prolog это свободная (открытая) реализация языка программирования Prolog, часто используемая для преподавания и приложений Semantic Web. Эта реализация представляет богатый набор возможностей, библиотеки для constraint logic programming, многопоточности, юнит-тестирования, GUI, интерфейс к языку программирования Java, ODBC и т. д., поддерживает литературное программирование, содержит реализацию веб-сервера, библиотеки для SGML, RDF, RDFS, средства разработчика (включая IDE с графическими отладчиком и профилировщиком), и обширную документацию.

SWI-Prolog работает на платформах Unix, Windows, и Macintosh.

SWI-Prolog постоянно развивается, начиная с момента создания в 1987 году. Его создателем и основным разработчиком является Jan Wielemaker

 Название SWI происходит от Sociaal-Wetenschappelijke Informatica («Social Science Informatics»), первоначального названия группы в Амстердамском университете, где работает Wielemaker. Позже название этой группы сменилось на HCS (Human-Computer Studies).


Данной работой Вы можете всегда поделиться с другими людьми, они вам буду только благодарны!!!
Кнопки "поделиться работой":

 

А также другие работы, которые могут Вас заинтересовать

16217. Изучение способов перекрытия методов родительских классов 166 KB
  Лабораторная работа №5 Цель работы: Изучить способы перекрытия методов родительских классов Постановка задачи: Создать родительский класс решения нелинейного уравнения методом деления отрезка пополам методом итераций и методом Ньютона. В дочерних классах предус...
16218. СОЗДАНИЕ DLL 87.5 KB
  Лабораторная работа №6 Создание DLL Цель лабораторной работы: изучить принципы создания и использования DLL в Delphi. Постановка задачи: Разработать библиотеку DLL содержащую класс вычисления определенного интеграла экспортируемую функцию и форму выбора цвета которы
16219. РЕШЕНИЕ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ ПЕРВОГО ПОРЯДКА 80 KB
  Лабораторная работа №7 Решение дифференциальных уравнений первого порядка Цель лабораторной работы: Изучить принципы создания класса для решения дифференциальных уравнений первого порядка. Постановка задачи: Разработать класс решения дифференциальных уравнен...
16220. Создание Help-файла 132 KB
  Лабораторная работа №8 Создание Helpфайла Цель работы: Изучить способы создания Helpов Постановка задачи: Разработать Helpфайл поддерживающий контекстнозависимую помощь для задачи вычисления определенного интеграла. Создать содержание и текст составленный не мене
16221. Разработка многопоточных приложений 402.5 KB
  Лабораторная работа №9 Разработка многопоточных приложений Цель работы: Изучить принципы организации параллельных вычислений в отдельных потоках Постановка задачи: Разработать приложение содержащее два потока. В первом потоке случайным образом формировать парам...
16222. Динамическое создание объектов на базе стандартных классов DELPHI 103 KB
  Лабораторная работа №11 Динамическое создание объектов на базе стандартных классов DELPHI Цель работы: Изучить принципы создания приложения без использования услуг инспектора объектов Постановка задачи: Разработать приложение реализующее вычисление определенного и...
16223. Динамическое создание объектов на базе стандартных классов DELPHI 128.5 KB
  Лабораторная работа №12 Динамическое создание объектов на базе стандартных классов DELPHI Цель работы: Изучить принципы создания COMсервера и COMприложения Постановка задачи: Разработать COMсервер реализующий три метода решения нелинейных уравнений. Разработать COMкл...
16224. Создание контроллеров автоматизации приложений Microsoft Office 129.5 KB
  Лабораторная работа №14 Создание контроллеров автоматизации приложений Microsoft Office Цель работы: Изучить принципы обмена данными между клиентом пользовательским приложением и сервером на примере приложения компании Microsoft Office Постановка задачи: Разработать кон...
16225. Имитационное моделирование и система GPSS 90.5 KB
  Методические указания к лабораторной работе по дисциплине Теоретические основы автоматизированного управления Лабораторная работа № 1 Имитационное моделирование и система GPSS Цель работы: Изучить метод имитационного моделирования систем массового обслужив...