Спонсор: Microsoft
Опубликован: 24.09.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Московский физико-технический институт
Лекция 6:

Прикладные и теоретические методы программирования

5.2. Теоретическое программирование

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

Так, направление, связанное с использованием математического аппарата для описания действий над объектами как алгебраические операции базовых основ алгебры, получило название алгебраического программирования, алгоритмики и др. Украинские ученые разработали теоретические направления программирования, в частности:

  • алгебраическое, инсерционное программирование (Летичевский А.А. и др.) [5.24, 5.25];
  • экспликативное программирование (Редько В.Н.) и наука о программах (программология), объединяющая логический и математический аппарат для конструирования программ [5.26-5.28];
  • алгебро-алгоритмическое программирование (Цейтлин Г.Е.), объединяющее алгебраический аппарат, теорию алгоритмов и операции над множествами [5.29-5.30]. Остановимся на их краткой характеристике.

5.2.1. Алгебраическое, инсерционное программирование

Алгебраическое программирование (АП) - это конструирование программ с алгебраическими преобразованиями и функциями интеллектуальных агентов. В основе математического аппарата АП лежит алгебра языка действий АL (Action Language) и понятие транзитивной системы [5.24, 5.25], в качестве механизма определения поведения систем и механизмов ее эквивалентности. В качестве понятий в общем случае могут быть компоненты, программы и их спецификации, объекты, взаимодействующие друг с другом и со средой их существования.

Основу АП составляет математическая модель, которая включает в себя следующие понятия:

  • агент как транзитивная система с поведением и его завершением;
  • поведение агентов, задаваемое в языке АL с помощью операций a, u, u + v, констант \Delta, \perp, 0, граничных условий и рекурсий;
  • среда, состоящая из агентов и функций погружения, которая обозначается env и имеет в качестве параметров состояние среды и агентное выражение;
  • функция развертывания функциональных выражений в простые агентные выражения;
  • транзитивная система, представленная в виде композиции среды и системы взаимодействующих агентов, погруженных в эту среду.

Всякая транзитивная система имеет историю функционирования, которая включает последовательность действий и состояний -конечных или бесконечных. История функционирования хранит одно из соответствующих состояний: успешное завершение вычислений в среде транзитивной системы; тупиковое состояние, когда каждая из параллельно выполняющихся частей системы находятся в состоянии ожидания; неопределенное состояние, возникающее при выполнении алгоритма с бесконечными циклами.

Расширение понятия транзитивных систем - это множество заключительных состояний с успешным завершением функционирования системы и без неопределенных состояний. Главный инвариант состояния транзитивной системы - поведение системы, задаваемое выражениями алгебры поведения F(A) на множестве операций алгебры действий - префиксинг a \cdot u, недетерминированный выбор u + v одного из двух поведений u и v со свойством ассоциативности и коммутативности. Конечное поведение системы задается константами \Delta, \perp, 0, которые обозначают соответственно состояние успешного завершения, неопределенного и тупикового. Алгебра поведения включает отношение \le, элемент \perp как наименьший и операции поведения, являющиеся монотонными. Средствами алгебры поведения F(A) доказана теорема про наименьшую неподвижную точку.

Транзитивные системы называют бисимуляцийно эквивалентными, если каждое состояние эквивалентно состоянию другой системы. На множестве поведений определяются новые операции, которые используются для построения программ агентов. К ним относятся следующие операции: последовательная композиция ( u; v ) и параллельная композиция u \| v.

Среда Е, где находится объект, определяется как агент в алгебре действий АL и функции погружения от двух аргументов Ins(e, u) = e[u]. Первый аргумент - это поведение среды, второй - поведение агента, который погружается в эту среду с заданным состоянием. Значения функций погружения - это новое состояние одной и той же среды. Базовым понятием является "действие", которое трансформирует состояние агентов, поведение которых, в конце концов, изменяется.

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

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

Язык действий АL имеет синтаксис и семантику. Синтаксис языка задает правила описания действий, семантика - функции, которые определяются средствами и выражениями языка и ставят в соответствие заданным выражениям значения в некоторой семантической области. Разные семантические функции могут давать равные абстракции и свойства программ. Семантика может быть вычислительной и интерактивной. Каждая алгебра действий - это гомоморфный образ алгебры примитивных действий, когда все слагаемые разные, а их представление однозначно с точностью до ассоциативности и коммутативности при детерминированном выборе.

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

Создание новых методов программирования с введением агентов и сред позволяет интерпретировать элементы сложных программ как самостоятельно взаимодействующие объекты.

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

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

Алгебраическое программирование концентрирует внимание на проблемах интеллектуализации и аспектах поведения агентов в распределенной среде, куда они погружаются. Оно постепенно перешло в инсерционное программирование путем вставки, погружения агентов в разнообразные среды для преобразования поведения агентов на основе модели поведения, соответствующей размеченной транзитивной системы и бисимуляционной эквивалентности [5.25]. Данное программирование обобщает алгебраическое преобразование множества состояний информационной среды на объекты, обладающие поведением. Схема создания агентных программ представлена на рис. 5.12.

Главное действующее лицо инсерционного программирования - агент, обладающий поведением при его погружении в среду, которую он также меняет. Характерной особенностью является недетерминированное поведение агентов и сред, как это происходит в реальных системах. При этом программа агента требует не интерпретации, а моделирования, поскольку она представляется транзитивной системой в виде композиции среды и системы взаимодействующих агентов, погруженных в эту среду. Язык действий - порождающий, в нем задается синтаксис действий, агентных функциональных выражений и внутренних состояний среды. Кроме того, в этом языке описывается семантика функций развертывания агентных функциональных выражений и погружений агентов в среду.

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

 Технологическая схема в АП

Рис. 5.12. Технологическая схема в АП

На следующем уровне описания программы находятся функции, которые преобразуют любое агентное выражение в AL-программу действий. Например, функция U развертывания функциональных выражений может быть представлена в виде простых агентных выражений:

U(u + v) = U(u) + U(v), U (u) = u,

где u, v - параметры агентных выражений.

Функция развертывания агентных функциональных выражений задает семантику AL-программы в виде программы функционирования агента в любой среде. Если функция развертывания обрабатывается за конечное число шагов, то она содержит конечное выражение. Множество всех переходов, заключительных и тупиковых состояний - перечислимое, даже если функция развертывания имеет бесконечное множество нетривиальных итераций. Состоянием транзитивной системы являются ограниченные выражения, определяемые операцией выбора +, соотношением x + 0 = a и отношением перехода с правилом u \to U(u).

Третий уровень программы - это функция развертывания погружений, задаваемых в алгебре действий. Эти функции определяются на объектах среды и агентов, т.е. агентных выражениях. Для корректности функций погружения необходимо, чтобы она зависела только от поведения агента и среды и была непрерывной функцией. Следующим шагом разработки программ является ее реализация в ЯП, например в С++, когда уточняются типы данных и параметры. Затем проводится верификация полученной программы для проверки правильности выполнения ее поведения в заданной модели. Более подробно об инсерционном программировании и средствах его автоматизации в [5.25].

Alex Diil
Alex Diil

Здравствуйте, прошел курс МБА Управление ИТ-проектами и направил документы на получение диплома почтой. Подскажите, сроки получения оного в бумажной форме?

:

Наталья Ра
Наталья Ра

Здравствуйте!

Большинство курсов из этой программы я изучила в бесплатном режиме и сдала экзамены. Теперь нужно будет все пересдавать?

Артур Каразанов
Артур Каразанов
Россия, Йошкар-Ола