Введение

Язык программирования Пролог относится к числу важнейших языков,  используемых в символьной обработке и в исследованиях по искусственному интеллекту. Он составляет основу для обучения методам искусственного интеллекта, исследованиям и практическому применению в этой области. Задачи ИИ существенно рекурсивны по природе.
К системам искусственного интеллекта относятся экспертные системы, программы доказательства теорем, интеллектуальные роботы, системы машинного перевода и др. Все эти задачи, делающие использование Пролога естественным, имеют свои особенности реализации:
1. Все они используют символьное представление информации и символьные вычисления в широком смысле, включая не только операции обработки цепочки символов, но и достаточно сложные структуры вроде графов. Такого рода работа обеспечивается следующими средствами Пролога:

2. Это задачи, в которых требуется некоторый вид поиска. Типичная ситуация, подходящая для применения Пролога, – это наличие некоторого набора условий, которым должен удовлетворять объект. Поиск этого объекта производится с помощью механизма бэктрекинга, встроенного в Пролог. Бэктрекинг реализует недетерминированный поиск. Одно из важных применений недетерминированного поиска – логический вывод.
Пролог идеально подходит для создания баз данных и баз знаний, а также экспертных систем, основанных на базах знаний.
Название “Пролог” есть сокращение для "ПРОграммирование в терминах ЛОГики". Пролог может быть использован в различных приложениях, относящихся к искусственному интеллекту:
         – общение с ЭВМ на естественном языке;
         – символьные вычисления;
         – написание компиляторов;
         – базы данных;
         – экспертные системы и т.д.
Диалект Пролога язык PDC Prolog разработан фирмой Prolog Development Center (Копенгаген, Дания) и предназначен для программирования задач из области искусственного интеллекта. Достоинства реализации:

Пролог относится к так называемым декларативным языкам, требующим от автора умения составить формальное описание ситуации. Поэтому программа на Прологе не является таковой в традиционном понимании, так как не содержит управляющих конструкций типа if … then, while … do; нет даже оператора присваивания. В Прологе задействованы другие механизмы. Задача описывается в терминах фактов и правил, а поиск решения Пролог берет на себя посредством встроенного механизма логического вывода.
Перечень возможных синтаксических конструкций Пролога невелик, и в этом смысле язык прост для изучения. С другой, декларативный стиль программирования оказывается столь непривычным и новым для матерых программистов, что вызывает шок и ряде случаев оказывается тормозом для привыкших выписывать подробно указания компьютеру, как делать.
Начать изучение языка Пролог можно с разных позиций. Мы будем исходить из того, что Пролог является одним из основных языков искусственного интеллекта, а поскольку ограниченный объем издания не позволяет всецело охватить различные аспекты этого языка, будем отдавать предпочтение тем примерам, которые так или иначе затрагивают основные проблемы, возникающие при решении задач искусственного интеллекта: представлению символьных структур данных и задаче поиска.
Основная задача программирования искусственного интеллекта – сформировать представление и управляющие структуры, необходимые для решения интеллектуальной задачи. Требования к этим структурам во многом определяют необходимые свойства языка реализации. Язык представления Пролог обеспечивает реализацию требований символьного уровня.
Существенное внимание уделено возможности начать практическую работу на Прологе. Подробно раскрывается механизм программирования работы со списками с использованием рекурсий, наиболее непривычный для привыкших к алгоритмическому стилю.  
Существуют различные диалекты языка Пролог и множество версий. Здесь у нас используется версия PDC Prolog, близкая к исходной версии, разработанной Уорреном.
Замечания относительно нотации. Дело в том, что в Прологе идентификаторы (имена предикатов, переменных) несут на себе значительную смысловую нагрузку, гораздо большую, чем в традиционных языках программирования. Зачастую в литературе встречаются перевод имен предикатов на русский язык, что не соответствует синтаксису  языка PDC Prolog. Поэтому, чтобы не нарушать синтаксис англоязычной версии языка, в ряде случаев мы перешли на латиницу, особенно в тех случаях, когда английский эквивалент названия представляет собой малознакомое слово.
Но что все-таки самое главное – программировать на Прологе ново, непривычно и интересно!