4761

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

Реферат

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

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

Русский

2012-11-25

55.5 KB

83 чел.

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

  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).


 

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

54437. Мотивація - один і з структурних елементів інтерактивного навчання 68.5 KB
  Використовую різноманітні прийоми мотивації: Мотивація навчальної діяльності шляхом бесіди Шляхом створення проблемної ситуації Шляхом використання технології мозкова атака Шляхом опрацювання тексту періодичних видань За технологією незакінчене речення Шляхом виготовлення саморобних наочних посібників Шляхом використання творчих завдань Шляхом використання художньої та науковопопулярної літератури Шляхом створення ситуацій успіху На основі діяльнісного підходу до навчання За допомогою екстраполяції прогнозування...
54438. Die Ukraine − unsere Heimat 49.5 KB
  Die Ukrine − unsere Heimt Мета. Мовна зарядка Welche Tg ist heute Der wievielte ist heute Sind lle Schen in Ordnung Ist die Tfel suber 3. Де ви живете Ви живете в Києві Ми живемо на вулиці Шевченка 12 Konjugiert die folgenden Verben im Präsens sprechen wohnen leben. Die Hupstdt der Ukrine heißt Kyjiw.
54439. Лексикологія. Багатозначність слів, вживання їх у прямому та переносному значеннях, синоніми і антоніми 44.5 KB
  Сухомлинський Мова жива сходинка людського духу Панас Мирний Мова коштовній скарб народу І. Франко Мова життя духовного основа М. Рильский Мова генофонд культури О.Завжди йдуть у парі мова й думка.
54440. Голос рідної природи серцем слухати навчись 84.5 KB
  Полтави Голос рідної природи серцем слухати навчись Мова найбільший скарб який є у кожного народу. Навчальний процес в початковій школі ми намагаємося організувати так щоб перші кроки до науки маленькі школярі робили на уроках мислення серед природи гортаючи сторінку за сторінкою Книгу рідної землі. Дитина від своєї природи писав Сухомлинський допитливий дослідник відкривач світу. Один із перших кроків наближення дітей до природи розуміння її це спостереження що проводиться безпосередньо в довкіллі.
54441. ЦІКАВИНКИ РІДНОЇ МОВИ 53 KB
  Закріплювати знання учнів формувати вміння думатислухати. Ви підросли порозумнішали навчилися застосовувати практично наявні знання. Вітаю тих хто не отримав перемогу але показав міцні знання стійкий бійцівський характер.
54442. ЦВІТИ І СМІЙСЯ, РІДНЕ СЛОВО! У СЕРЦІ ЩИРОМУ ЗВУЧИ! 66 KB
  Нам стежку в світ дано топтати Поки в нас рідна мова є Учениця І як гуртом не поодинці Почнемо в світ її нести То й доти будем українці Поміж народів сміло йти Учень А знехтуємо рідне слово Земля цього нам не простить То ж сяй над світом рідна мово Тобі в віках судилось жить Учениця Цвіти і смійся рідне слово У серці щирому звучи Моя чарівна рідна мово Лети над світом не мовчи Звучить музика Ведучий. Ведучий. Ведучий. Ведучий.
54443. Соловїна, барвінкова, українська рідна мова 205 KB
  Мета: навчальна поглибити знання учнів про рідну мову її символи традиції впроваджувати елементи естетичного виховання культури спілкування; розвивальна розвивати українське мовлення культуру поведінки; виховна виховувати любов і повагу до своєї Батьківщини України її символів традицій обрядів почуття глибокої поваги до предків своїх рідних і близьких творчу самостійність і відповідальність уміння самоорганізовуватись вміння...
54444. Мово моя рідна, не мовчи! 522.5 KB
  А вчителька мовила що якби ваші словасуржики перетворились і справді на страшні дерева та ще на страшніших звірів я б побачила які ви герої Іванко. Багато віків люди засмічували рідну мову то модним словечком яке нічого спільного з рідною мовою не мало то вживали надмірно російські слова на український лад бо свого ліньки було підшукати а рідним словом нехтували цуралися його. Це не просто деревця це ті слова які ви щоденно говорите. А ви щодня сієте словазернятка і не задумуєтеся на тим що з того виросте.
54445. О рідна мовонько, о мово! В тобі від Бога кожне слово 115.5 KB
  Вчити учнів застосовувати набуті знання на практиці; Розвивати командний дух швидкість реакції прагнення перемоги вміння працювати в команді толерантне ставлення до думок інших Виховувати любов до рідної мови гордість за свою Батьківщину прагнення до самовдосконалення ХІД ЗАХОДУ Слово учителя Моя прекрасна українська мово Найкраща пісня в...