Клоксин У., Меллиш К. !50 Программирование на языке Пролог: Пер. с англ.-М.: Мир, 1987.—336 с. Книга английских специалистов, содержащая описание основ логическо программирования и особенностей языка Пролог —базового языка ЭВМ пятя поколения. Области применения этого языка связаны с разработкой экспе) ных систем, интеллектуальных баз данных, обработкой естественного язьп разработкой компиляторов ЭВМ. Книга полезна для первого ознакомлен с языком Пролог. ! Для программистов и пользователей ЭВМ.
ОГЛАВЛЕНИЕ
Предисловие редакторов перевода.................. 9
Предисловие ко второму изданию................. 10
Предисловие к первому изданию.................. 11
Глава 1. Введение......................... 16
1.1. Факты.......................... 18
1.2. Вопросы . ........................ 20
1.3. Переменные . ...................... 22
1.4. Конъюнкции....................... 25
1.5. Правила......................... 31
1.6. Заключение и упражнения................ 38
Глава 2. Более детальное описание................ 39
2.1. Синтаксические правила................. 39
2.2. Литеры......................... 46
2.3. Операторы........................ 47
2.4. Равенство и установление соответствия.......... 49
2.5. Арифметика....................... 51
2.6. Общая схема согласования целевых утверждений..... 56
лава 3. Использование структур данных............. 63
3.1. Структуры и деревья.................., 63
3.2. Списки.......................... 65
3.3. Принадлежность элементов списку............ 69
•Э-4. Пример: преобразование предложений........... 74
3.5. Пример: упорядочение по алфавиту............ 78
3.6. Использование предиката «присоединить» и спецификация деталей...................... 80
Глава 4. Возврат и отсечение ................... 84
4.1. Порождение множественных решений........... 85
4.2. Отсечение........................ 91
4.3. Общие случаи использования отсечения.......... 96
4.4. Проблемы, связанные с использованием отсечения .... 109
Глава 5. Ввод и вывод..................... 112
5.1. Ввод и вывод термов.................. 114
5.2. Ввод и вывод литер.................•. . 119
5.3. Ввод предложений.................... 121
5.4. Чтение файлов и запись в файлы............ 123
5.5. Объявление операторов.................. 127
Глава 6. Встроенные предикаты.................. 130
6.1. Ввод новых утверждений................. 131
6.2. Выполнение и невыполнение целевого утверждения . . . 133
6.3. Классификация термов.................. 134
6.4. Работа с утверждениями как с термами.......... 136
6.5. Создание структур и работа с компонентами структур . . . 140
6.6. Воздействие на процесс возврата............. 145
6.7. Формирование составных целевых утверждений...... 147
6.8. Равенство........................ 151
6.9. Ввод и вывод данных.................. 152
6.10. Обработка файлов.................... 154
6.11. Вычисление арифметических выражений.......... 155
6.12. Сравнение чисел..................... 157.;
6.13. Наблюдение за выполнением программы на Прологе . . . 158N
'$
Глава 7. Еще несколько примеров программ............ 160ч
7.1. Словарь в виде упорядоченного дерева.......... 161^
7.2. Поиск в лабиринте................... l&fa
7.3. Ханойские башни..................... 168^
7.4. Справочник комплектующих деталей........... 169J
т у у
7.5. Обработка списков.................... 171
7.6. Представление и обработка множеств........... 174
7.7. Сортировка........................ 177
7.8. Использование базы данных: random, генатом, найтивсе . 181
7.9. Поиск по графу..................... 187
7.10. Просеивай Двойки. Просеивай Тройки......... 193
7.11. Символьное дифференцирование.............. 194
7.12. Отображение структур и преобразование деревьев .... 196
7.13. Применение предикатов clause и retract......... 200
Глава 8. Отладка пролог-программ................. 205
8.1. Расположение текстов программ............. 206
8.2. Типичные ошибки.................... 209
8.3. Модель трассировки................... 212
8.4. Трассировка и контрольные точки..........«... 219
8.5. Фиксация ошибок.................... 230
Глава 9. Использование грамматических правил в Прологе .... 234
9.1. Проблема синтаксического анализа............ 234
9.2. Описание синтаксического анализа на языке Пролог . . . 238
9.3. Запись грамматических правил в Прологе........ 244
9.4. Присоединение дополнительных аргументов....... 247
9.5. Введение дополнительных условий............ 252
9.6. Заключение....................... 255
Глава 10. Пролог и математическая логика............. 260
10.1. Краткое введение в исчисление предикатов........ 260
10.2. Приведение формул к стандартной форме......... 264
10.3. Форма записи дизъюнктов................ 271
10.4. Принцип резолюций и доказательство теорем....... 273
10.5. Хорновские дизъюнкты.................. 277
10.6. Пролог.......................... 279
10.7. Пролог и логическое программирование......... 282
Глава 11. Программные проекты на Прологе............ 286
11.1. Простые проекты..................... 286
11.2. Более сложные проекты................. 289
Приложение А. Ответы к некоторым упражнениям ........ 294
Приложение В. Программа приведения формул исчисления предикатов
к стандартной форме ............... 299
Приложение С. Различные версии языка Пролог.......... 305
Приложение D. Пролог для ЭВМ DEC system-10......... 309
Приложение Е. Микро-Пролог.................... 319
Приложение F. Система МПролога................. 324
Предметный указатель....................... 335
ПРЕДИСЛОВИЕ РЕДАКТОРОВ ПЕРЕВОДА
Язык программирования Пролог появился в 1970 г. одновременно с такими сейчас широко распространенными языками, как Паскаль и Си. Его ориентация — «нетрадиционные» применения вычислительной техники: понимание естественного языка, базы знаний, экспертные системы и другие задачи, которые принято относить к проблематике искусственного интеллекта. Сила этого языка — в принципиально отличном от традиционных языков программирования подходе к описанию способа решения задачи: программа на Прологе описывает не процедуру решения задачи, а логическую модель предметной области — некоторые факты относительно свойств предметной области и отношений между этими свойствами, а также правила вывода новых свойств и отношений из уже заданных. Таким образом, Пролог — описательный язык. Как отмечено в авторском предисловии, такой логический подход к программированию создает и некоторые проблемы в распространении языка: основные понятия языка опытными программистами понимаются без труда, однако практическое претворение этого понимания в полезные программы вызывает затруднения.
Несмотря на очевидные и яркие достоинства, Пролог, в отличие от своих «сверстников» (Паскаля и Си), продолжительное время развивался, применялся и обсуждался в сравнительно узком кругу исследователей, работающих в области искусственного интеллекта. И лишь в последние годы Пролог попал в поле зрения широких кругов специалистов по информатике. Резкий рост его популярности объясняется, по-видимому, выходом теории искусственного интеллекта в область практического, «коммерческого» программирования.
В настоящее время растет круг практических систем, использующих достижения искусственного интеллекта на современных ЭВМ, появились престижные национальные проекты создания ЭВМ новых поколений, в которых интеллектуальный интерфейс с конечным пользователем (непрофессионалом в информатике) является центральным элементом. В японском проекте создания ЭВМ пятого поколения Пролог прямо называется базовым языком программирования. По-видимому, Пролог реально претендует на роль одного из основных инструментальных языков для «нетрадиционных» применений вычислительной техники, поэтому своевременное знакомство с ним отечественных специалистов, работающих в данной области, будет несомненно полезным.
В социалистических странах активное участие в разработках, связанных с Прологом, принимают ученые ВНР. В Институте по координации вычислительной техники (г. Будапешт) создана версия Пролога — МПролог, получившая международное признание. Не исключено, что МПролог будет широко доступен и пользователям нашей страны. Этим объясняется включение в русское издание специального приложения (F) посвященного МПрологу.
При переводе книги встретились значительные терминологические проблемы, поскольку установившаяся русская терминология в данной области практически отсутствует, а станет ли таковой англоязычный жаргон специалистов — покажет время. Для удобства читателей в предметном указателе приведены английские эквиваленты терминов, употребляемых в переводе.
Предисловие, главы 1,3—6, 9,10 и Приложение В перевел М. М. Ко-^Р°лв> главы 7, 8, 11, Приложения А,С, D, Е, F-A. В. Горбунов, главу 2 -KJ. М. Лазутин.


Hosted by uCoz