Математика | ||||
Клоксин У., Меллиш К. !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. М. Лазутин. Цена: 150руб. |
||||