- •1.1. Основные понятия приложений
- •1.2. Html-элементы div и span и каскадные таблицы стилей (css) – основа построения Web-страниц
- •1.3. Разработка компонента «Аккордеон»
- •1.4. «Аккордеон» начинает играть в браузере
- •1.5. «Аккордеон» заиграл на сервере
- •1.6. Размещение компонента «Аккордеон»
- •1.2. Основные понятия Пролога
- •1.3. Факты и правила
- •1.4. Пролог-программа. Цель
- •1.5. Начало работы на swi-Пролог
- •1.5.1 Написание, запуск и отладка пролог-программы
- •1.5.2 Предикаты ввода и вывода
- •1.5.3 Первая программа на Прологе
- •1.6. Механизм логического вывода: унификация
- •1.6.1 Как Пролог отвечает на вопросы
- •1.7. Списки в Прологе
- •Логическое программирование. Основы языка Пролог
- •Поиск решений Пролог-системой
1.6. Размещение компонента «Аккордеон»
на web-сервере Apache
Описание: взять материалы про UniServer, например,из моей книги.
Неформальное введение в Пролог
Название Пролог происходит из словосочетания «программирование при помощи логики» (PROgramming in LOGic). Пролог был разработан и впервые реализован в 1973 г. Алэном Колмероэ и другими членами «группы искусственного интеллекта» Марсельского университета (Франция). Задачей группы было создание программы для перевода с естественного языка. С тех пор было сделано несколько расширений и усовершенствований языка. Здесь нужно отметить работу группы из Эдинбургского университета (Шотландия). Эдинбургский вариант сейчас считается неофициальным стандартом Пролога (официального стандарта Пролога не существует).
Сила Пролога в том, что он имеет встроенную быстродействующую систему логического вывода, опирающуюся на мощные унификационные процедуры, которые сами ищут решение задачи методом сопоставления, просматривая все возможные варианты. Работу этих процедур мы разберем далее в этой главе.
Сейчас существует несколько сред и систем программирования на Прологе. В данной работе мы будем придерживаться Эдинбургского варианта Пролога и популярной среды разработки SWI-Prolog, предназначеной специально для университетов и исследовательских целей. Перейдем к знакомству с Прологом, как инструментом логического программирования, [].
1.2. Основные понятия Пролога
Структура языка Пролог основана на понятиях (1) атома, (2) переменной, (3) функтора, (4) предиката, (5) терма, (6) литерала и (7) дизъюнкта, [13].
(1) Атом – строка буквенно-цифровых символов конечной длины, начинающаяся со строчной английской буквы: book, woman, x12. К атомам относят также строки, заключенные в кавычки или апострофы: “Иванов Иван Иванович”, ‘Петров Петр Петрович’. Как видим, здесь не накладывается никаких ограничений на символы строк. К атомам относятся и числа: 125, 32.5. Т. е. атом – это прологовская константа.
(2) Переменная – строка буквенно-цифровых символов конечной длины, начинающаяся с прописной английской буквы: Book, Woman, X12. Анонимная переменная ( _ ).
(3) Функтор характеризуется своим именем и числом аргументов (арностью), а по функциональному назначению функтор – это оператор (например, +) или предикат: +(X1, 8, Y3), member(X, Ls).
(4) Предикат как частный случай функтора отображает домен D, на котором он задан, в множество значений {true, false}: likes(Georg, Mary).
(5) Атомы и переменные называются термами. Из одних термов можно рекурсивно строить другие, поэтому предикат – тоже терм. Итак, терм это или атом, или переменная, или предикат, или – выше.
(6) Литерал – это сложный терм (не ниже предиката), или его отрицание: likes(Georg, Mary), not( likes(Georg, Mary) ).
(7) Дизъюнкт – совокупность литералов, связанных операторами И, ИЛИ и т. п. Таким образом дизъюнкты представляют собой предложения, заканчивающиеся точкой. Область действия переменной ограничена одним таким предложением: т. е. переменная с тем же самым именем, но в соседнем предложении – это уже другая переменная, со своими другими значениями! Отсюда следует, что в Прологе передавать значения из одного предложения в другое по имени переменной нельзя! В этом часто «камень преткновения» начинающих программистов на Прологе.
Существуют три типа дизъюнктов: (а) факты, (б) правила и (в) цели (вопросы). Пролог-программа представляет собой их совокупность.