Cтраница 4
К сожалению, работать такая формула не будет, и программа зациклится. Похоже, что наивные стратегии поиска маршрутов с помощью Пролог-программы всегда приводят к зацикливанию. Посмотрим, как это произойдет в нашем случае. [46]
Это обусловлено тем, что в правилах допускается использование переменных. Конечно, существует множество систем программирования, которые приближаются к Пролог-программам по указанным возможностям; но здесь имеются свои отличительные особенности. [47]
Пролог - быстро развивающийся язык, только за последние годы появилось более десятка его новых диалектов. Создано несколько систем программирования, включающих трансляторы, отладчики и редакторы Пролог-программ. Пролог оказался очень восприимчив к иным парадигмам программирования, далеким от математической логики, в частности к функциональному и объектно-ориентированному программированию. В результате появился язык, в котором сочетаются достоинства Пролога и Лиспа, и разработаны объектные расширения Пролога, в которых имеются средства для работы с абстрактными типами данных. [48]
Отметим, что действия по связыванию ( 1) происходят во время загрузки, когда файл, содержащий Пролог-программу, считывается механизмом Пролога. После того как релевантные базовые факты загружены в память Пролога, выполнение Пролог-программы происходит независимо от базы данных. [49]
Архитектура ТСРЯ-системы. Цифра 2 над стрелкой обозначает связывание во время выполнения. [50] |
Слабо связанными часто называют либо системы, не обеспечивающие прозрачности, либо системы, которые работают во время представления цели, либо, наконец, системы, которые, вместо того чтобы организовывать доступ из Пролог-программы к кортежам, полученным в результате выполнения запроса через разделяемую память, хранят их в виде фактов в основной памяти. Наличие всех этих интерпретаций свидетельствует о том, что термины слабое и сильное связывание использовались не совсем корректно. [51]
Если Пролог-программа содержит перечень фактов, то к этой программе уже можно обратиться с запросом. Это значит, что Пролог-программа либо подтверждает истинность некоторого факта, интересующего пользователя, либо отрицает этот факт. [52]
Декларативная точка зрения на Пролог-программу предполагает рассмотрение ее в виде набора объектов данных. Вся программа целиком называется базой данных. Это название отражает то обстоятельство, что каждый объект Пролог-программы представляет собой объект данных. Факты, правила, заголовки правил, цели-все они, на уровне синтаксиса, являются просто структурами. Мы имеем некоторую словарную зону, позволяющую нам распознавать контекст, в котором используются эти структуры: факт есть структура для утверждения; цель есть структура для вопроса. [53]
Интерфейс ESTEAM включает алгоритм последовательного построения базовых конъюнкций, начиная с целей Пролога. При слабом связывании все взаимодействия с базой данных происходят перед активацией механизма Пролога. При сильном связывании построение базовых конъюнкций запросов происходит одновременно с вычислением Пролог-программы. Интерфейс ESTEAM допускает дизъюнкцию, отрицание, рекурсию и специальный предикат отсечения ( рассмотренный в разд. Допускаются также агрегатные запросы. [54]