Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Непейвода Н.Н. -> "Основания программирования " -> 261

Основания программирования - Непейвода Н.Н.

Непейвода Н.Н., Скопин И.Н. Основания программирования — Институт компьютерных исследований , 2002. — 919 c.
Скачать (прямая ссылка): osnovanprogramm2002.pdf
Предыдущая << 1 .. 255 256 257 258 259 260 < 261 > 262 263 264 265 266 267 .. 316 >> Следующая

ы теперь запреаем предыдуу успену модификаци и пытаемся испробовать другие возможности. Такие возвраты могут происходить один за другим, при этом, как правило, значения переменнх, измененные ввиду подстановок, восстанавлива тся. Этот метод управления принципиально отличается от управления в языке Рефал. В PROLOG неудача глобальна, но исправима, а в Рефале локальна, но фатальна.
10 И, более того, можно было бы унифицировать произвольно выбранные внутренние соответственные подвыражения в произвольном порядке, лишь бы объемлющие унифицировались после подчиненных. Авторам неизвестно ни одно использование этого естественного и многообещающего обобщения алгоритма унификации.
В конкретной первой реализации языка PROLOG, основные особенности которой стали в дальнейшем фактическим стандартом, создатели допустили ошибку в понимании и, соответственно, в реализации алгоритма унификации, которая, в частности, разрушает это свойство, и порою может привести к излишней конкретизации, когда можно было бы найти более общую конкретизирующую подстановку. Эта ошибка несущественна, она не влияет на подавляющее большинство программ, но иногда она приводит к появлению бесконечных термов, и некоторые реализаторы языка PROLOG с гордостью пишут, что они умеют печатать и показывать на экране даже такие термы.
Желающие в качестве упражнения выловить ошибку самостоятельно, сравните алгоритмы унификации, описанные в книге [79] и в [41].
13.2.
751
, наконец, последняя находка метода резолций, перенесенная в программирование, это стандартизация цели. Целью доказательства в методе резолюций всегда является получение пустого дизъюнкта, то есть стирание доказываемого выра ения (с логической точки зрения, приведение его к абсурду). Точно так е и в язке PROLOG: успеное исполнение программы означает стирание поля зрения.
Собственно хорновские формулы обладают еще одним важным свойством, которое также послужило основой некоторых идей PROLOG-машины. Для нахо дения ввода в системе хорновских формул достаточно производить так назваему линейну резолци , когда на кадом аге делается вывод из исходной формулы и наследника цели. икаких сочетаний исходных формул между собой либо различных вариантов раскрытия цели между собой (чего в общем случае не избежать) делать в принципе не нужно, хотя это мо ет в некоторх случаях суественно сократить ввод (поро экспоненциально).
13.2.2. Поле зрения, поле памяти и PROLOG-программа
Рассмотрим структуру данных, обрабатваемых языком PROLOG. Все данне языка PROLOG явля тся термами. Терм построены из атомов (ко-торми могут бть переменне и константы, в сво очередь деляиеся на имена и числа) при помои функциональнх символов, которые так е являются атомами (а именно, именами), и называются функторами. Среди функторов вделя тся детерминатив . етерминативы в реализации делятся на предикат и встроенне функции (функции). ункции обчно использу т-ся внутри вра ений, а предикаты явля тся основными единицами управления и обчно использу тся вне скобок, как основной функциональный символ выражения. Детерминативы должны быть описаны в программе, а остальные функтор рассматрива тся просто как структурне единицы и могут оставаться неописанными.
В конкретном синтаксисе переменные языка — имена, состоящие из букв и начинающиеся с большой буквы либо с символа подчеркивания _. Пере-менная _ называется анонимной переменной и считается различной во всех своих вхождениях.
Константы языка PROLOG11 в конкретном синтаксисе — имена (идентификаторы, начинаиеся с маленькой букв либо совокупность нескольких
Внутри языка они называются атомами
11
752
13.
специальнх символов типа <, =. $), символы и числа (символы ото дествля-ются с целыми числами, являющимися их кодами). Произвольная последовательность символов может быть сделана единой константой, например:
'C:\"SICS Prolog"\program.pl'
В конкретном синтаксисе имена функторов явля тся константами, не явля-имися строкой символов в кавчках. ни различа тся арность , таким образом, мо ет бть сразу несколько функторов с одним и тем е именем. Некоторые функции могут быть описаны как операции (инфиксные, префиксные либо постфиксные), но это рассматривается лишь как синтаксический сахар, и в принципе переводится в стандартну форму
function(arg_1,..., arg_n).
ля некоторых предопределеннх в системе функций и предикатов име тся дополнительные ограничения на аргументы12. В частности, мо но указать, что аргументом мо ет слу ить имя файла, атом, переменная и т. п.
Поле зрения, содержащее непосредственно обрабатываемые программой данные, называется также целью, и состоит из последовательности термов, разделенных либо запятыми (в этом случае они понимаются как "последовательно достигаемые цели"), либо символами |, в этом случае цели "альтернативны". H аиболее важным и классическим случаем является случай последовательно достигаемых целей, через который, в частности, определяется семантика и альтернативнх целей13.
алее, поле данных имеет скрту (при использовании стандартнх воз-мо ностей язка) часть, в которой прослеивается история выполнения программы с тем, чтобы в случае необходимости произвести обработку неудачи.
Предыдущая << 1 .. 255 256 257 258 259 260 < 261 > 262 263 264 265 266 267 .. 316 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100