Математика

Физика

Химия

Биология

Техника и    технологии

Искусство программирования на языке Пролог-Стерлинг Л М.: Мир, 1990.-235 с., ил.
Стерлинг Л., Шапиро Э.
Искусство программирования на языке Пролог: Пер. с англ. -М.: Мир, 1990.-235 с., ил.
ISBN 5-03-000406-8
В книге излагаются основы логического программирования. Дается описание языка Пролог. Обсуждаются ввод-вывод, приемы и средства организации интерактивных программ, вопросы недетерминированного программирования, применения структур данных, допускающих накопление данных, техника грамматического разбора, программирование метаинтерпретаторов. Изложение удачно иллюстрируется примерами программ. Рассматриваются некоторые приложения Пролога: программирование игр, создание экспертных систем и компилятора для языка высокого уровня.
Для системных программистов и инженеров-математиков, разрабатывающих информационно-программное обеспечение ЭВМ.
Предисловие редактора перевода
Программированию на языке Пролог, различным вариантам расширения Пролога и методам его реализации посвящено множество статей, докладов и отчетов. Издано несколько книг по этому широко известному языку, в том числе переводы на русский язык: У. Клоксин, К. Меллиш. Программирование на языке Пролог.-М.: Мир, 1987 и К. Кларк, Ф. Маккейб. Введение в логическое программирование на микро-Прологе.-М.: Радио и связь, 1987. Однако следует подчеркнуть, что предлагаемая вниманию читателей книга сильно отличается от указанных выше не только по содержанию, но и по методу описания языка Пролог.
Авторы книги - известные специалисты, много сделавшие для развития и популяризации логического программирования. В частности, с именем Е. Шапиро связано создание языка Concurrent Prolog. Он является редактором серии по логическому программированию, которую открывает данная книга. Две новые книги этой серии (сборники статей по Concurrent Prolog под ред. Е. Шапиро) изданы MIT Press в 1988 г.
Язык Пролог прошел длинный путь развития (почти 20 лет). Он продолжает весьма быстро распространяться. Появилось значительное число его реализаций, причем наиболее популярный вариант Turbo-Prolog доступен пользователям персональных компьютеров. Существует мнение, что Пролог пропагандируется и используется преимущественно специалистами, решающими задачи из области искусственного интеллекта. Однако, как показывает опыт использования различных Пролог-систем, язык Пролог может успешно применяться для разработки сложных программных систем традиционного назначения. Он нашел применение в системах автоматизированного проектирования, системах символьных вычислений и т. д. Говоря о генезисе Пролога, нельзя не отметить его тесную связь с задачей определения грамматик формальных языков и задачей синтаксического анализа текстов, написанных на этих языках. Обработка текста на естественном языке также является интересным и перспективным применением Пролога.
В данной книге излагаются основы логического программирования, описываются «чистый» и «нечистый» Пролог, разнообразные, порой изящные и «фантастичные» методы и приемы составления логических программ. Большой интерес предстваляют третья и четвертая части книги, где рассматриваются более сложные средства и приемы программирования и приводятся развернутые примеры применения языка для решения практических задач (решатель нелинейных уравнений, экспертная система, компилятор и др.).
Книга, несомненно, окажется полезной для программистов и специалистов по разработке Пролог-систем. Для многих из них особый интерес представляют главы о недетерминированном программировании, метапрограммировании, программировании второго порядка и глава о неполных структурах данных, в которой подробно описана техника использования разностных списков и даны убедительные обоснования эффективности их применения.
Следует отметить, что в области логического программирования у нас терминология не установилась. В настоящее время в отечественной литературе перевод некоторых терминов (например, cut, negation as failure и др.) неоднозначен. Данная книга не является исключением, и внимательный читатель заметит, что коллектив переводчиков предлагает свой вариант перевода некоторых терминов. Что касается перевода имен предикатов переменных и других термов Пролога в Пролог-программах, то было принято компромиссное решение. Везде, где на наш взгляд требовалось облегчить понимание программы, термы давались в переводе на русский язык, в противном случае переводились только комментарии. Имена стандартных предикатов Пролога оставлены без перевода.
Перевод книги выполнили С.Ф. Сопрунов (гл. 1-13), Л.В.Шабанов (гл. 14-23, приложения).
Ю. Г. Дадаев
Оглавление
Предисловие редактора перевода.................... 5
Предисловие .........'.................. 6
Введение ............................. 9
Часть I. ЛОГИЧЕСКИЕ ПРОГРАММЫ
Глава 1. Основные конструкции..................... 13
.1. Факты.......................... 13
.2. Вопросы......................... 14
.3. Логические переменные, подстановки и примеры........... 15
.4. Экзистенциальные вопросы.................. 16
.5. Универсальные факты.................... 16
.6. Конъюнктивные вопросы и общие переменные........... 17
.7. Правила......................... 18
.8. Простой абстрактный интерпретатор............... 21
.9. Значение логической программы................ 23
.10. Резюме......................... 24
Глава 2. Программирование баз данных................. 27
2.1. Простые базы данных.................... 27
Упражнения к разд. 2.1..................... 30
2.2. Структурированные и абстрактные данные............ 30
Упражнения к разд. 2.2..................... 32
2.3. Рекурсивные правила.................... 32
Упражнения к разд. 2.3..................... 34
2.4. Логические программы и модель реляционной базы данных...... 34
2.5. Дополнительные сведения.................. 35
Глава 3. Рекурсивное программирование................. 36
3.1. Арифметика........................ 36
Упражнения к разд. 3.1..................... 43
3.2. Списки.......................... 43
Упражнения к разд. 3.2..................... 49
3.3. Построение рекурсивных программ............... 50
Упражнения к разд. 3.3..................... 54
3.4. Бинарные деревья...................... 54
Упражнения к разд. 3.4..................... 57
3.5. Работа с символьными выражениями.............. 57
Упражнения к разд. 3.5...................... 61
3.6. Дополнительные сведения................... 62
Глава 4. Вычислительная модель логических программ............ 62
4.1. Унификация........................ 62
Упражнения к разд. 4.1..................... 65
4.2. Абстрактный интерпретатор логических программ.......... 65
Упражнения к разд. 4.2..................... 70
4.3. Дополнительные сведения................... 70
330 Оглавление
Глава 5. Теория логических программ.................. 71
5.1. Семантика........................ 71
5.2. Корректность программы................... 73
Упражнения к разд. 5.2..................... 74
5.3. Сложность........................ 74
Упражнения к разд. 5.3..................... 75
5.4. Деревья поиска....................... 75
Упражнения к разд. 5.4..................... 77
5.5. Отрицание в логическом программировании............ 78
5.6. Дополнительные сведения................... 78
Часть II. ЯЗЫК ПРОЛОГ
Глава 6..Чистый Пролог....................... 80
6.1. Вычислительная модель Пролога................ 80
Упражнения к разд. 6.1..................... 84
6.2. Сравнение с традиционными языками программирования....... 84
6.3. Дополнительные сведения................... 86
Глава 7. Программирование на чистом Прологе............... 86
7.1. Порядок правил...................... 87
Упражнения к разд. 7.1..................... 88
7.2. Проблема завершения программ................ 88
Упражнения к разд. 7.2..................... 90
7.3. Порядок целей....................... 90
Упражнения к разд. 7.3..................... 92
7.4. Избыточные решения.................... 92
7.5. Рекурсивное программирование в чистом Прологе.......... 94
Упражнения к разд. 7.5..................... 99
7.6. Дополнительные сведения................... 100
Глава 8. Арифметика........................ 100
8.1. Системные арифметические предикаты.............. 100
8.2. Повторное рассмотрение арифметических логических программ..... 102
Упражнения к разд. 8.2..................... 103
8.3. Замена рекурсии итерацией.................. 104
Упражнения к разд. 8.3..................... 109
8.4. Дополнительные сведения................... 109
Глава 9. Анализ структуры термов................... НО
9.1. Типовые предикаты..................... 110
Упражнения к разд. 9.1..................... 112
9.2. Составные термы...................... 112
Упражнения к разд. 9.2..................... 118
9.3. Дополнительные сведения................... 118
Глава 10. Металогические предикаты................... 118
10.1 Типовые металогические предикаты............... 119
Упражнения к разд. 10.1..................... 122
10.2. Сравнение неосновных термов................. 122
10.3. Использование переменных в качестве объектов........... 124
10.4. Доступность метапеременных................. 126
10.5. Дополнительные сведения.................. 127
Глава 11. Отсечения и отрицание .................... 127
11.1. Зеленые отсечения: выражение детерминизма ............ 127
Упражнения к разд. 11.1 ..................... 132
1 1 .2. Оптимизация остатка рекурсии ................. 132
11.3. Отрицание ........................ 133
Упражнения к разд. 11.3 ......... . ........... 136
11.4. Красные отсечения: устранение явных условий ........... 136
Упражнения к разд. 11.4 ..................... 139
11.5. Правила по умолчанию ................... 139
11.6. Дополнительные сведения .................. 140
Глава 12. Внелогические предикаты ................... 141
12.1. Ввод-вывод ................... ' ..... 141
Упражнения к разд. 12.1 ..................... 144
12.2. Доступ к программам и обработка программ ........... 144
12.3. Запоминающие функции ................... 146
Упражнения к разд. 12.3 ..................... 147
12.4. Интерактивные программы .................. 147
Упражнения к разд. 12.4 ..................... 152
12.5. Циклы, управляемые отказом ................. 152
Упражнения к разд. 12.5 ..................... 153
12.6. Дополнительные сведения .................. 153
Глава 13. Практические рекомендации .................. 154
13.1. Эффективность программ на Прологе ............. 155
13.2. Программистские трюки ................... 156
13.3. Стиль программирования и запись программ ........... 160
13.4. Разработка программ .................... 161
13.5. Дополнительные сведения .................. 163
Часть III. СОВРЕМЕННЫЕ МЕТОДЫ ПРОГРАММИРОВАНИЯ НА ПРОЛОГЕ
Глава 14. Недетерминированное программирование ............. 164
14.1. Метод «образовать и проверить» ................ 165
Упражнения к разд. 14.1 ..................... 173
14.2. Недетерминизм с произвольным выбором альтернативы и недерминизм с неизвестным выбором альтернативы .............. 174
14.3. Моделирование недетерминированных вычислений ......... 179
Упражнение к разд. 14.3 ..................... 182
14.4. Классические интеллектуальные программы: ANALOGY, ELIZA и McSAM .......................... 182
Упражнения к разд. 14.4 ..................... 188
14.5. Дополнительные сведения .................. 188
Глава 15. Неполные структуры данных .................. 1°«
15.1. Разностные списки ..................... 190
Упражнения к разд. 15.1 ............ ......... 196
15.2. Разностные структуры .................... 196
Упражнения к разд. 15.2 ..................... 197
15.3. Справочники ..................... . . 198
15.4. Очереди ......................... 200
15.5. Дополнительные сведения .................. 202
Глава 16. Синтаксический анализ для грамматик, задаваемых определительными
предложениями...................... 203
Упражнения к гл. 16..................... 210
16.1. Дополнительные сведения.................. 210
Глава 17. Программирование второго порядка............... 210
17.1. Множественные выражения.................. 211
Упражнения к разд. 17.1..................... 215
17.2. Применения множественных выражений............. 215
Упражнения к разд. 17.2..................... 221
17.3. Другие предикаты второго порядка............... 221
17.4. Дополнительные сведения.................. 223
Глава 18. Методы поиска....................... 224
18.1. Поиск на графах пространства состояний............. 224
Упражнения к разд. 18.1..................... 233
18.2. Игровые деревья поиска................... 233
18.3. Дополнительные сведения.................. 238
Глава 19. Метаинтерпретаторы..................... 238
19.1. Простые метаинтерпретаторы................. 239
Упражнения к разд. 19.1..................... 245
19.2. Усовершенствованные метаинтерпретаторы для экспертных систем .... 245 Упражнения к разд. 19.2..................... 251
19.3. Усовершенствованные метаинтерпретаторы для отладки программ . . . . 252
19.4. Дополнительные сведения.................. 259
Часть IV. ПРИЛОЖЕНИЯ Глава 20. Игровые программы.....................
20.1. «Выдающийся ум»..................... 261
20.2. Игра Ним........................ 264
20.3. Игра в калах....................... 268
20.4. Дополнительные сведения.................. 274
Глава 21. Экспертная система для кредитных операций............ 274
21.1. Дополнительные сведения.................. 279
Глава 22. Решатель уравнений..................... 281
22.1. Обзор методов решения уравнений............... 282
22.2. Факторизация...................... 284
22.3. Метод изоляции...................... 284
22.4. Полиномиальные уравнения................. 292
22.5. Гомогенизация...................... 294
Упражнения к гл. 22...................... 295
22.6. Дополнительные сведения.................. 295
Глава 23. Компилятор........................ 296
23.1. Обзор компилятора......^.............. 296
23.2. Синтаксический анализатор.................. 301
23.3. Генератор кода...................... 305
23.4. Ассемблер........................ 309
Упражнения к гл. 23...................... 310
23.5. Дополнительные сведения.................. 311
Приложение
A. Использование Пролог-системы................. 312
B. Системные предикаты.................... 312
C. Предварительно определяемые операторы............. 316
Литература............................ 318
Предметный указатель........................ 324

Цена: 150руб.

Назад

Заказ

На главную страницу

Hosted by uCoz