Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие Функциональное и логическое программирование.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
309.57 Кб
Скачать

Глава 3. Программирование на языке пролог

    1. Общие сведения о языке Пролог. Язык Пролог как система, реализующая логический вывод в исчислении предикатов первого порядка.

Программирование при помощи конструкций некоторого языка требует мышления в терминах семантики этих конструкций. В соответствии с природой семантики языки программирования можно разбить на три категории:

процедурные языки (конструкции процедурного языка определяют поведение компьютера при выполнении этой конструкции; поведение может быть либо внешним (например, вывод сообщения на терминал), либо внутренним (например, изменение значения переменной);

функциональные языки (смысл конструкции в функциональном языке, например, вызова функции, определяется в терминах значения, которое она вырабатывает; вызов функции можно рассматривать, как объявление вырабатываемого ею значения.);

реляционные языки (смысл конструкции в реляционном языке определяется как отношение между отдельными сущностями или классами сущностей, т.е. реляционная конструкция декларирует, что существует отношение между аргументами, представленное именем этого отношения).

Если имеется логическая спецификация, описывающая структуру системы, которую необходимо смоделировать программным образом, тогда для решения задачи лучше всего подходят реляционные языки, так как семантика их конструкций очень близка к логической спецификации задачи, и поэтому преобразование спецификации в программу на реляционном языке потребует минимума усилий.

Язык Пролог достаточно близок к идеальному реляционному языку, что позволяет программисту воспользоваться упомянутыми выше преимуществами подобных языков, т.е. при использовании языка Пролог взгляд программиста на мир может подняться до уровня логической спецификации.

Само название Пролог есть сокращение, означающее программирование в терминах логики. Идея использовать логику в качестве языка программирования возникла впервые в 70-х годах. Первоначальный вариант Пролога был разработан Алэном Колмероэ в Марсельском университете. Написанный им на Фртране интерпретатор языка Пролог работал крайне медленно. Сегодняшней своей популярности язык Пролог обязан эффективной реализации этого языка, полученной в Эдинбурге Дэвидом Уорреном. Использованный им алгоритм при написании компилятора языка Пролог для ЭВМ DEC-10 получил название «машина Уоррена» и послужил прототипом при создании многих последующих реализаций Пролога. Пролог быстро завоевал популярность в Европе. В США этот язык получил признание несколько позднее в силу нескольких исторических факторов. В США имелся отрицательный опыт использования языка Микропленнер, близкого к логическому, но реализованному неэффективно, в силу чего язык Лисп долгое время не имел серьезных конкурентов в области искусственного интеллекта в исследовательских центрах США. Однако, после того, как в 1981 г. Министерство внешней торговли и промышленности Японии объявило о том, что японский проект создания ЭВМ 5-го поколения будет основываться на методах логического программирования, Пролог стал привлекать внимание специалистов из США. Хотя до сих пор американские специалисты по искусственному интеллекту отдают предпочтение языку Лисп, их выбор обусловлен скорее привычностью Лиспа, чем недостатками языка Пролог. В настоящее время язык Пролог применяется в Европе, США и Японии не только для решения задач искусственного интеллекта (экспертные системы, системы обработки естественного языка), но и многих традиционных прикладных задач (программная инженерия, интерфейсы баз данных, системы помощи в принятии решений). Существуют различные версии языка Пролог: микроПролог, СиПролог для UNIX и т.д.

Кроме Пролога, существуют и другие языки логического программирования, хотя Пролог наиболее известный из них.

В общем смысле, логическое программирование - это один из подходов к информатике, в котором в качестве языка высокого уровня используется логика предикатов первого порядка в форме фраз Хорна.

Логика предикатов первого порядка - это ветвь формальной логики, получившая развитие в основном в нынешнем веке. Это - универсальный абстрактный язык, предназначенный для представления знаний и для решения задач. Его можно рассматривать как общую теорию отношений.

Логическое программирование дает возможность программисту:

  • описывать ситуацию при помощи формул логики предикатов,

  • для выполнения выводов из этих формул, применить автоматический решатель задач, основанный обычно на правиле вывода путем резолюции, предложенном Робинсоном.

При использовании языка логического программирования основное внимание уделяется описанию структуры прикладной задачи, а не выработке предписаний компьютеру о том, что ему следует делать.

Сущность Пролога состоит в программировании в терминах целей: вместо того, чтобы во всех деталях описывать способ решения задачи, дается определение ситуации и формулируются цели. Таким образом, Пролог основан на описательной (декларативной) точке зрения на программирование.