Язык программирования Concurrent Prolog



Язык Concurrent Prolog развивает логический подход к абстрактным спецификациям и включает несколько идей Дейкстры (в том числе, идею охраняемого предложения). При этом подходе предметная об­ласть описывается как формальная теория в некотором логико-математи­ческом языке. Когда мы используем абстрактную модель вычисления логи­ческих программ, то предполагаем, что они легко поддаются параллельному выполнению. Вычисление логической программы - это доказательство це­левого утверждения с использованием аксиом из программы. Пространство поиска вывода может быть описано И/ИЛИ деревом, где И-узлы соответст­вуют конъюнкции целей, ИЛИ-узлы соответствуют различным путям выбо­ра единичных целей из программы.

В языке Concurrent Prolog применяется особое прочтение логических про­грамм - поведенческое. В поведенческом прочтении единичная цель есть аналог процесса, конъюнкция целей - аналог системы процессов, а общие переменные целевых функций - просто каналы связи. Предложение чита­ется поведенчески: процесс А может заменить себя системой процессов В1 и B2 И ... И Вn. Процесс оканчивается заменой себя пустой системой.

Язык Concurrent Prolog поддерживает различные средства объектно-ориентированного программирования. Однако они сильно зависят от свойств унификации. В объектно-ориентированных языках сообщение посылается с указанием имени целевого объекта. В Concurrent Prolog объекты связаны общими переменными и сообщения посылаются установкой общих пере­менных, поэтому имя целевого объекта не обязательно должно появляться в фазе посылки сообщения. Более того, передача становится тривиальной, т. к. сообщение одновременно посылается всем объектам, которые разделя­ют переменную.

Вообще, общие переменные возникают, когда процесс создает новую систе­му процессов. Общие переменные могут созда­ваться динамически при посылке переменной как части сообщения. Это означает, что канал связи может быть создан динамически и отправлен другому объекту. Сообщение, содержащее переменную, называется неза­вершенным (частично определенным) сообщением. Оно делает новую пере­менную общей между отправителем и получателем сообщения, что означает создание нового канала связи.

Введем понятие системы процессов.

1. И-система процессов- это совокупность процессов, которая:

     завершается успешно, если все ее процессы завершаются успешно;

 завершается неудачно, если хоть один из ее процессов завершается неудачно. При этом все другие свои процессы И-система насильст­венно завершает неудачно;

 приостанавливается, если все ее процессы либо приостановились, ли­бо уже завершились (успешно).

2. ИЛИ-система процессов- это совокупность процессов, которая:

· завершается неудачно, если все ее процессы завершаются неудачно;

· завершается успешно, если хоть один из ее процессов завершается успешно. При этом все другие свои процессы ИЛИ -система насильст­венно завершает неудачно;

· приостанавливается, если все ее процессы либо при остановились, ли­бо уже завершились (неудачно).

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

 

3. Унификация защищенной переменной с непеременным термом приоста­навливается и приостанавливает тем самым некоторый процесс.

4. Если переменную, которую ждет какой-либо процесс, установить равной непеременному терму, то это должно привести к возобновлению этого процесса.

5. Семантика Concurrent Prolog такова, что одна и та же переменная может быть с   точки зрения одного процесса защищенной (только для чтения), а с точки зрения другого - просто переменной (обшей с первым про­цессом).

 

2.6. Другие методологии

Ряд других, менее исследованных и менее популярных методологий:

· методология программирования, управляемого потоками данных,- подход, заключающийся в том, что операции срабатывают не последовательно, а в зависимости от готовности данных;

· методология доступ - ориентированногопрограммирования – подход, в котором функции с переменными связываются таким образом, что при доступе к переменной процедура будет вызываться автоматически;

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

III. Заключение.

Почти любой язык можно рассматривать как улучшенную версию какого-нибудь другого языка. Иногда очень трудно провести разграничительную линию, где кончается один язык и начинается другой. Возьмем, к примеру, LISP, который начинался как отдельный язык и привел в итоге к целому семейству языков. Его диалекты (такие как Scheme или Common Lisp) имеют большие отличия и могут рассматриваться пользователями как “другие” языки. Его варианты (такие как Kyoto Common Lisp или Allegro CL) по большому счету одинаковы, но могут иметь некоторые черты, которые делают их несовместимыми.

Обычно трудно бывает различить, что принадлежит к характеристике языка, а что к его окружению. Например, SML описывается в несколько этапов, сначала “синтаксис ядра” а потом его расширения. Что технически определяет два различных языка. Описания некоторых языков могут опускать такие важные черты, как файловый ввод/вывод, т.к. их не предполагается использовать без стандартной библиотеки (в случае Си, например) или без среды разработки в целом (SmallTalk-80), или потому что это составляет командный язык какой-нибудь операционной системы или коммерческого продукта.

 

 

IV. Библиография

1.Одинцов И.О. Профессиональное программирование. Системный подход.- СПб.: БХВ - Петербург, 2002. – 512с.: ил.

2. Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика: Учеб. пособие для студ. пед. вузов/ А.В.Могилев, Н.И.пак, Е.К.Хеннер; Под ред. Е.К.Хеннера. – М.: Изд. центр «Академия», 2000. – 816с.

3.Себеста Роберт У. Основные концепции языков программирования. – М.: Издательский дом «Вильямс», 2001.


Дата добавления: 2018-05-12; просмотров: 453; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!