В этом файле перечислены все изменения, которые были внесены
в текст определения языка от 31 мая 1996 года:
Морозов А.А., Обухов Ю.В.
Акторный Пролог. Определение языка программирования. -
Москва, 1996. - Препринт ИРЭ РАН 2(613). - 57с.
Механизм предикатов с переменным числом аргументов действительно позволяет во время исполнения программы формировать список (в смысле "составной терм") аргументов, переданных в собственное предложение.
Например, программа
project is ('MAIN') class 'MAIN' using 'ALPHA' is con = ('WINDOW',name=console) [ goal:- p(1,2,3,4,5,6,7,8,9). -- p(_,_,R*):- con ? writeln("Rest= ",R). ]напечатает:
Rest= [3,4,5,6,7,8,9]
Механизм предикатов с переменным числом аргументов необходим для того, чтобы можно было создавать предопределённые классы, реализующие привычные для других языков программирования операторы ввода-вывода, такие как
write(Terms*), writeln(Terms*), writef(FormatString,Terms*).
Внесены изменения в разделы "Недоопределённые множества" и "Атомарные формулы". Введены понятия "ключ" недоопределённого множества и "хвост" списка/множества. Исключены понятия "главный элемент" множества и "хвост списка".
Теперь являются допустимыми недоопределённые множества вида
K{a:1,b:2,c:3}, f{|Rest}, H{x:5|_}, 179{name:N,date:X}и предложения вида
{x:72,y:14,p:no|Rest}:- output_1 ? event{|Rest}. {x:N|_}:- {p:N,mode:stop|_}.
Причина изменений. Данное изменение внесено после экспериментов по трансляции SADT диаграмм в Акторный Пролог.
В составе недоопределённых множеств разрешено не указывать значения некоторых элементов. Например, теперь являются допустимыми недоопределённые множества вида
{1, 3, 5, 7 |_}, {35, 12}, {red, yellow, blue |Rest}.
Введены новые понятия - "вызов функции" и "объявление функции".
"Объявления функций" и "вызовы функций" позволяют имитировать объявление и вызов функций, возвращающих значения - термы. В процессе трансляции, вызовы функций преобразуются в вызовы предикатов, а объявления функций - в заголовки предложений.
Вот, например, как можно определить функцию append, добавляющую новые элементы в конец списка:
append([],L) = L. append([H|L1],L2) = [H | ? append(L1,L2)].В процессе трансляции такое определение будет преобразовано к виду
append(L,[],L). append(R0,[H|L1],L2):- append(R1,L1,L2), R0 == [H | R1].
Это изменение внесено по мотивам языка Флэнг А.В.Манциводы. Однако, в отличие от функционально-логических языков, в Акторном Прологе поддерживается "строго логический" стиль программирования, поэтому, например, перед любым вызовом функции в Акторном Прологе всегда ставится префикс (обычно "?"). Возможно, что такое обозначение в некоторых случаях окажется несколько громоздким, однако в контексте логического языка оно является более наглядным, чем просто смешивание термов и вызовов функций.
Внесены изменения в список терминов и определений, в разделы "Введение", "Определение данных", "Списки", "Собственные предложения", "Атомарные формулы", "Сводка синтаксиса языка", "Список понятий языка".
Добавлены новые разделы "Подцели предложений", "Вызовы функций", "Простые атомы", "Бинарные отношения".
Добавлены новые нетерминальные символы "вызов_функции", "конструктор_или_атрибут", "объявление_функции", "простой_атом", "бинарное_отношение".
Термины "подавление акторов" и "подавленный актор" признаны не совсем удачными и заменены на термины "нейтрализация акторов" и "нейтральный актор".
Термин "неактивный актор" заменен на "доказанный актор".
'=='(A,B,C) и ':='(NewValue).
Внесены изменения в раздел "Введение".
В качестве приложения к тексту определения опубликован доклад А.А.Морозова на II международной конференции "Дискретные модели в теории управляющих систем", проходившей 23-28 июня 1997 года в пансионате МГУ "Красновидово", в котором рассказывается об основных принципах и подходах, положенных в основу проекта.
Внесены изменения в разделы "Введение" и "Структура программы", а также в приложение "Термины и определения".
Изменен дизайн HTML-страниц.
Исправлена ошибка в синтаксическом правиле "элемент множества". Добавлено новое синтаксическое правило "имя элемента".
Термин "активное значение общей переменной" признан неудачным и заменен на новый термин - "актуальное значение общей переменной". Кроме того, вместо термина "распространение активных значений общих переменных" теперь используется понятие "актуализация значений общих переменных".
Введены новые понятия "перекрытие инициализаторов", "обработка исключительных ситуаций", "производные значения программы".
Добавлены новые синтаксические правила "собственное_предложение", "заголовок_внешнего_предложения", "объявление_внешних_вызовов". Изменено синтаксическое правило "предложение".
Изменено синтаксическое правило "подцель". Добавлено новое синтаксическое правило "простая подцель".
Введено понятие "метапредложение". Принято соглашение о том, что арность предикатов с переменным числом аргументов в ходе трансляции неопределена, и метапредложения разрешается использовать в соответствующих процедурах вместе с обычными предложениями в любом порядке.
Например, допустимым является следующий порядок предложений:
p(1,2,3). p(X|R*):- u(X,R). p(1,2,3,4,5). p(1,2,3,4,5,6,7). p(Z|T*):- write(Z,T).
В качестве приложения к тексту определения добавлена ссылка на доклад А.А.Морозова и Ю.В.Обухова на IV международной конференции "Развитие и применение открытых систем", проходившей 27-31 октября 1997 года в Нижнем Новгороде.
Извините, в кодировщике Alt->1251 оказалась ошибка, вследствие которой он неправильно перекодировал буквы "ё" и "Ё". Ошибка устранена.
Исправлены опечатки в разделах "Объявления функций" и "Пример определения сети акторов".
В разделы "Откат программы" и "Согласование акторов" внесены изменения и дополнения.
Добавлены новые понятия "реагирующие системы", "средства управления" и "задержанный актор". Внесены изменения в разделы "Введение" и "Структура программы".
Внесены изменения в разделы "Переменные", "Атрибуты классов", "Построение экземпляров классов", "Проект", "Трансляция программных модулей", "Предложения классов", "Вызовы функций", "Объявления функций", "Акторы", "Актуализация значений общих переменных", "Встроенные предикаты и операторы".
Текст определения отредактирован. Внесены стилистические исправления.
Полный текст определения Акторного Пролога от 22 марта 1998 года
опубликован в приложении к диссертации
Морозов А.А. Логический анализ функциональных диаграмм
в процессе интерактивного проектирования информационных систем:
Диссертация на соискание учёной степени кандидата
физико-математических наук. - М., 1998. - 199с.
(http: // www.cplire.ru / Lab144 / auto.html)
Текст определения отредактирован. Внесены стилистические исправления.
Добавлена ссылка на текст доклада А.А.Морозова, Ю.В.Обухова и А.Я.Олейникова "Логическое программирование открытых систем", прочитанного на XI международной конференции "Логика, методология, философия науки", проходившей в Обнинске в 1995 году.
В список терминов внесено понятие "использование переменной актором" (а также его синонимы "принадлежать актору" и "соответствие переменной актору").
В список терминов добавлено понятие "сцепление переменных".
Отредактированы разделы "Атрибуты классов", "Инициализаторы", "Предложения классов", "Акторы", "Общие переменные", "Построение общих переменных", "Согласование акторов".
В качестве приложения к тексту определения опубликованы статьи:
В качестве приложения к тексту определения опубликована статья:
Morozov A.A., Obukhov Yu.V. On the Problem of Logical Recognition in the Dynamic Internet Environment // Pattern Recognition and Image Analysis. - 2001. - Vol.11. - N2. - pp.454-457.Внесены стилистические изменения в перевод некоторых терминов.
На сайте опубликован полный текст диссертации
Морозов А.А. Логический анализ функциональных диаграмм
в процессе интерактивного проектирования информационных систем:
Диссертация на соискание учёной степени кандидата
физико-математических наук. - М., 1998. - 199с.
(http: // www.cplire.ru / Lab144 / thesis.pdf)
Диссертация опубликована в формате PDF. Приложение A диссертации
(определение Акторного Пролога) приведено в соответствие с
версией языка от 14.09.2001, поэтому размер документа увеличился на
одну страницу.
В качестве приложения к тексту определения опубликована статья:
Morozov A.A., Obukhov Yu.V. An Approach to Logic Programming of Intelligent Agents for Searching and Recognizing Information on the Internet // Pattern Recognition and Image Analysis. - 2001. - Vol.11. - No.3. - pp.570-582.Опубликовано определение параллельного Акторного Пролога. Язык очень сильно изменился. Появилось много новых терминов, и кроме того, изменено значение многих ранее существовавших терминов - некоторые из них обобщены, некоторые, наоборот, конкретизированы. Коренным образом изменилась стратегия управления. За счёт явного использования процессов, удалось упростить акторный механизм. Теперь в языке используется статическое построение акторов и миров в отдельных процессах, то есть количество миров и акторов, соответствующих процессу, не изменяется в ходе его исполнения. Динамическое изменение топологии пространства поиска и акторной сети теперь осуществляется с помощью механизма подключения/отключения процессов. Новая стратегия управления позволяет математически корректным образом передавать миры в качестве аргументов предикатов.
В случае возникновения проблем терминологического характера
при чтении старых статей, мы рекомендуем Вам использовать
старое определение последовательного Акторного Пролога,
опубликованное в приложении к тексту диссертации
Морозов А.А. Логический анализ функциональных диаграмм
в процессе интерактивного проектирования информационных систем:
Диссертация на соискание учёной степени кандидата
физико-математических наук. - М., 1998. - 199с.
(http: // www.cplire.ru / Lab144 / thesis.pdf)
Начиная с этого момента сообщения об изменении текста определения будут публиковаться в другом файле.
Back to Research Divisions
IRE RAS Homepage