
- •Дж. Малпас
- •Предисловие редактора перевода
- •Предисловие Круг читателей, для которого предназначена данная книга
- •Темы, освещаемые в книге
- •Примеры текстов программ
- •Показательный пример
- •Как ориентироваться в материале данной книги
- •Введение Зачем нужно изучать Пролог?
- •Взгляд на мир, навязываемый языком программирования
- •Выражения признательности
Предисловие Круг читателей, для которого предназначена данная книга
Настоящая кита рассчитана на программистов, владеющих по меньшей мере одним языком программирования и интересующихся следующими вопросами:
1) языком Пролог;
2) логическим программированием;
3) сферами применения искусственного интеллекта.
Знания, которые получат читатели после изучения данной книги
После изучения этой книги (и выполнения упражнений!) читатели должны приобрести навыки в формулировании задач на языке Пролог и в программировании на Прологе для технических областей применения. Эти знания в определенной мере могут пригодиться и при работе с иными вычислительными формализмами, используемыми в настоящее время в науке об искусственном интеллекте. На протяжении всей книги автор пытается проиллюстрировать с помощью практических примеров программ некоторые интересные аспекты теории логического программирования и тем самым продемонстрировать пользу теории для практики. Читателям, более углубленно интересующимся теорией, рекомендуем обратиться к спискам литературы в конце каждой главы.
Изучайте эту книгу, имея свободный доступ к компьютеру
Для получения максимальной отдачи от изучения данной книги желательно, чтобы у читателей был свободный доступ к ЭВМ с одной из версий языка Пролог. Это даст возможность поэкспериментировать с каждым новым понятием, излагаемым в книге. Настоящая книга призвана прежде всего создать у читателя представление о том, как работает Пролог, и о назначении этого языка. Возможно (но сложно) изучить Пролог по данной книге и без компьютера.
В нескольких местах книги отмечаются аналогии с языком программирования Си. Эти аналогии просты и должны быть понятны даже тем читателям, которые не знают языка Си.
Темы, освещаемые в книге
3 гл. О вводятся основные теоретические понятия формальной логики, логического программирования и языка Пролог. В разд. 0. 2-0. 6 рассказывается об истории развития формальной логики и в заключение обсуждается доказательство теорем методом резолюции в том виде, как это применимо в Прологе. В этих разделах несведущий в данных вопросах читатель ознакомится с богатым наследием логики, от которой и происходит язык Пролог. Здесь в контексте формальной логики вводятся многие понятия (такие как аксиома или теория), которые затем используются в контексте языка Пролог. Понимание этих концепций читателем должно стать более глубоким при рассмотрении их более чем в одном контексте. Изучение гл. О не является строго необходимым для понимания остальной части книги, а для программирования на языке Пролог не требуется наличия каких-либо знаний о формальной логике. Поэтому читатель,* желающий изучить практические аспекты языка Пролог, может при первом чтении пропустить гл. 0.
Изучение языка
Читатель, не знающий Пролога, сможет изучить этот язык по материалу гл. 1, 2 и 3. В гл. 1 рассказывается о фактах, правилах и запросах. В ней вводится классификация типов отношений, существующих в окружающем мире, и показывается, как эти отношения могут быть представлены с помощью языка Пролог. В гл. 2 рассматриваются арифметика, структуры данных и обработка списков. Она заканчивается обзором способов представления базы данных. Глава 3 начинается с широкого обсуждения модели выполнения Пролог-программы. Показывается, как с помощью предиката "сократить" можно управлять пространством поиска программы. Там представлено также множество предикатов, имеющихся в большинстве версий языка Пролог. В гл. 4 дан сравнительный анализ различных подходов к процессу программирования на Прологе. Читатель, изучающий данную книгу подряд, к концу четвертой главы получит достаточно полное представление о возможностях этого языка.
Сферы применения языка
В гл. 5—7 рассматриваются конкретные сферы применения языка Пролог. В гл. 5 описаны средства для работы с текстами и представлены программа-конвертер (с версии языка Пролог для ЭВМ DEC-10 на микро-Пролог и обратно) и интерпретатор языка запросов. В гл. 6 рассказывается 6 том, что означает представление знаний в программе для ЭВМ. Там дается обзор некоторых видов вычислительных формализмов, используемых для представления знаний. Затем рассматривается реализация механизма наследования в Прологе. Изучаются некоторые практические случаи применения механизма наследования, среди них - таблично-управляемая программа выполнения запросов к базе данных, позволяющая производить нарастающее уточнение запросов. В гл. 7 обсуждаются. вопросы реализации интерфейса пользователя с системами экспертных консультаций и описывается интерпретатор, который может пояснить, каким образом он пришел к тем или иным ответам. В качестве последнего примера в гл. 7 рассказывается об интерпретаторе, который может успешно обрабатывать такие запросы, которые вызывают бесконечное зацикливание обычного интерпретатора языка Пролог.