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

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

5.2.2. Экспликативное, номинативное программирование

Экспликативное программирование (ЭП) ориентировано на разработку теории дескриптивных и декларативных программных формализмов, адекватных моделям структур данных, программ и средств конструирования из них программ [5.26-5.28]. Для этих структур решены проблемы существования, единства и эффективности. Теоретическую основу ЭП составляют логика, конструктивная математика, информатика, композиционное программирование и классическая теории алгоритмов. Для изображения алгоритмов программ используются алгоритмические языки и методы программирования: функциональное, логическое, структурное, денотационное и др.

Принципами ЭП являются:

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

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

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

данные - функция - имя функции - композиция - дескрипция.

Из них триада - "данные - функция - композиция" задает семантический аспект программы, а триада "данные - имя функции - дескрипция" - синтаксический аспект. Главным в ЭП является семантический аспект, система композиций и номинативности (КНС), ориентированная на систематическое описание номинативных отношений при построении данных, функций, композиций и дескрипций [5.27].

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

Для построения математически простых и адекватных моделей программ параметрического типа используется КНС и методы универсальной алгебры, математической логики и теория алгоритмов. Данные в КНС рассматриваются на трех уровнях: абстрактном, булевском и номинативном. Класс номинативных данных обеспечивает построение именных данных, многозначных номинативных данных или мультиименных данных, задаваемых рекурсивно.

В рамках ЭП разработаны новые средства для определения систем данных, функций и композиций номинативного типа, имена аргументов которых принадлежат некоторому множеству имен Z, т.е. композиция определяется на Z-номинативных наборах именных функций [5.29].

Номинативные данные позволяют задавать структуры данных, которым присущи неоднозначность именования компонентов типа множества, мультимножества, реляции и т.п.

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

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

Практическая проверка теоретического аппарата формализации дедуктивных и ОО БД прошла в ряде экспериментальных проектов в классе манипуляционных данных БД заданных в SQL-подобных языках.

5.2.3. Алгоритмика программ

Алгоритмика программ - структурная схемотология построения последовательных и параллельных программ с аппаратом формальных алгебраических преобразований и канонических форм описания логических и операторных выражений. Ее основу составляют системы алгебраических алгебр (САА), расширенные формализмами для представления логических условий параллельных программ и методами символьной мультиобработки [5.30].

Построение и исследование алгебры алгоритмов началось с проектирования логических структур ЭВМ под руководством академика В.М.Глушкова. В результате была построена теория САА, которая затем Г.Е.Цейтлиным была положена в основу создания обобщенной теории структурированных схем алгоритмов и программ, называемой алгоритмикой [5.30].

Основными понятиями алгебры алгоритмики являются:

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

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

В рамках алгоритмики разработаны специальные инструментальные средства реализации алгоритмов программ, которые используют современные объектно-ориентированные средства и метод моделирования UML. Тем самым обеспечивается полный цикл работ по практическому применению разработанной теории алгоритмики для реализации прикладных задач, начиная с постановки задачи, формирования требований и разработки алгоритмов до получения программ решения этих задач (рис. 5.13).

Алгебра алгоритмов. Под алгеброй алгоритмов АА=\{A, \Omega\} понимается основа А и сигнатура \Omega операций над элементами основы алгебры. С помощью операции сигнатуры может быть получен произвольный элемент q \in AА, который называется системой образующих алгебры.

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

Операции алгебры удовлетворяют следующим аксиоматическим законам: ассоциативности, коммутативности, идемпотентности, закону исключения третьего и противоречия. Алгебра, которой удовлетворяют перечисленные операции, называется булевой.

В алгебре алгоритмов используется алгебра множеств, элементами которой являются сами множества и операции над ними (объединение, пересечение, дополнение, универсум и др.).

 Схема проектирования программ в алгебре алгоритмики

увеличить изображение
Рис. 5.13. Схема проектирования программ в алгебре алгоритмики

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

Последовательное выполнение операторов А и В записывается в виде композиции А * В ; альтернативное выполнение операторов А и В ( u (А, В) ) означает, если u истинно, то выполняется А,иначе В ; цикл (u (А, В)) выполняется, пока не станет истинным условие u ( u -логическая переменная).

С помощью этих элементарных конструкций строится более сложная схема П алгоритма:

\begin{array}{l}
    П ::= \{ [u_{1}] А_{1}\},\\
    А_{1} ::= \{ [u_{2}] А_{2} * D\} \\
    А_{2} ::= А_{3} * C, \\
    А_{3} ::= \{ [u] А, B\}, \\
    u :: = u_{2} \wedge u _{1}. \\
    \end{array}

Проведя суперпозицию путем свертки данной схемы алгоритма П, получаем формулу:

П ::= \{ [ u_{1}]\{[u_{2}]([u_{2} \wedge u _{1}] А, В) * С \} * D\}.

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

Алгебра Дейкстры АД = \{АСС, L (2), СИГН\} - двухосновная алгебра, элементами которой являются множество АСС операторов, представленных структурными блок-схемами, множество L (2) булевых функций в сигнатуре СИГН, в которую входят операции дизъюнкции, конъюнкции и отрицания, принимающие значения из L (2). С помощью специально разработанных механизмов преобразования АД в алгебру алгоритмики установлена связь между альтернативой и циклом, т.е. \{[u] А\} = ([u] Е, А * \{[u] А\}), произвольные операторы представлены суперпозицией основных операций и констант.

Операция фильтрации Ф(u) = \{[u] Е, N\} в АД представлена суперпозицией тождественного Е и неопределенного N операторов и альтернативы алгебры алгоритмики, где N - фильтр разрешения выполнения операций вычислений.

Оператор цикла while\ do также представлен суперпозицией операций композиции и цикла в алгебре алгоритмики.

Алгебра схем Янова АЯ = <\{AHC, L2)\}; CИГН>, где АНС -совокупность неструктурных схем, L(2) - совокупность различных булевских функций, СИГН - сигнатура из композиции А*В и операция неструктурного перехода П(u, F), а также операции дизъюнкции, конъюнкции и отрицания. АЯ включает операции построения неструктурных логических схем программ. Схема Янова состоит из предикатных символов множества P(p_{1}, p_{2},\dots,), операторных символов множества A\{а_{1} a_{2},\dots\} и графа переходов. Оператор в данной алгебре - это пара A\{p\}, состоящая из символов множества А и множества предикатных символов. Граф перехода представляет собой ориентированный граф, в вершинах которого располагаются преобразователи, распознаватели и один оператор останова. Дуги графа задаются стрелками и помечаются они знаками + и -. Преобразователь имеет один преемник, а распознаватель - два. Каждый распознаватель включает в себя условие выполнения схемы. Преобразователь обрабатывает операторы, включающие логические переменные, принадлежащие множеству (p _{1}, p_{2}, \dots ).

Каждая созданная схема АЯ отличается большой сложностью, требует серьезного преобразования при переходе к представлению программы в виде соответствующей последовательности действий, условий перехода и безусловного перехода. В работе [5.30] разработана теория интерпретации схем Янова и доказательство эквивалентности двух операторных схем исходя из особенностей алгебры алгоритмики.

Для представления схемы Янова аппаратом алгебры алгоритмики сигнатура операций АЯ вводятся композиции А * В и операции условного перехода, который в зависимости от условия u выполняет переход к следующим операторам или к оператору, помеченному меткой (типа goto ). Условный переход трактуется как бинарная операция П (u, F), которая зависит от условия u и разметок схемы F. Кроме того, производится замена альтернативы и цикла типа while\;do. В результате выполнения бинарных операций получается новая схема F, в которой установлена П(u) вместо метки и булевы операции конъюнкции и отрицания. Эквивалентность выполненных операций преобразования обеспечивает правильность неструктурного представления.

Система алгебр Глушкова АГ = \{ОП, УС, СИГН\}, где ОП и УС - множества операторов суперпозиции, входящих в сигнатуру СИГН, и логических условий, определенных на информационном множестве ИМ, СИГН = \{СИГНад \cup Прогн.\}, где СИГНад - сигнатура операций Дейкстры, Прогн. - операция прогнозирования. Сигнатура САА включает в себя операции алгебры АД, обобщенной трехзначной булевой операции и прогнозирования (левое умножение условия на оператор u = (А * u^\prime) с порождением предиката u = УС такого, что u(m) = u^\prime( m^\prime),\; m^\prime = А(m), А \in ОП). ИМ - множество обрабатываемых данных и определение операций из множеств ОП и УС. Сущность операция прогнозирования состоит в проверке условия u в состоянии m оператора А и определения условия u', вычисленного в состоянии m^\prime после выполнения оператора А. Данная алгебра ориентирована на аналитическую форму представления алгоритмов и оптимизацию алгоритмов по выбранным критериям.

Алгебра булевых функций и связанные с ней теоремы о функциональной полноте и проблемы минимизации булевых функций также сведены до алгебры алгоритмики. Этот специальный процесс отличается громоздкостью и рассматриваться не будет, при необходимости можно обратиться к [5.30].

Алгебра алгоритмики и прикладные подалгебры. Алгебра алгоритимки пополнена двухуровневой алгебраической системой и механизмами абстрактного описания данных (классами алгоритмов). Под многоосновной алгоритмической системой (МАС) понимается система S =\{\{D_{i} | i \in I \}; СИГН_{0} , СИГН_{n}\}, где D_{i} - основы или сорта, СИГН_{0} , СИГН_{n} - совокупности операций и предикатов, определенных на D_{i}. Если они пусты, то определяются многоосновные модели - алгебры. Если сорта интерпретируются как множество обрабатываемых данных, то МАС представляет собой концепцию АТД, в виде подалгебры, широко используемую в объектном программировании. Тем самым устанавливается связь с современными тенденциями развития современного программирования.

Практическим результатом исследований алгебры алгоритмики является построение оригинальных инструментальных систем проектирования алгоритмов и программ на основе современных средств поддержки ООП (Rational Rose). Детальное знакомство с данной темой можно продолжить, изучая приведенные ниже источники.

Контрольные вопросы и задания

  1. Дайте характеристику структурного метода программирования.
  2. Приведите основные особенности и возможности объектно-ориентированного программирования.
  3. Какие диаграммы имеются в языке UML для визуального проектирования программ?
  4. Приведите основные типы компонентов и пути их развития в компонентном программировании.
  5. Назовите базовые понятия в компонентном программировании.
  6. Приведите базовые структуры в компонентном программировании.
  7. Определите основные понятия и этапы жизненного цикла компонентного программирования.
  8. Определите основные элементы аспектно-ориентированного программирования.
  9. Определите основные элементы агентного программирования.
  10. Определите понятие агента и его место в программировании.
  11. Дайте характеристику инженерии ПрО.
  12. Определите объекты генерирующего программирования и дайте краткую характеристику.
  13. Что такое пространство проблем и пространство решений?
  14. Представьте теоретические методы программирования.
  15. Что такое алгоритмика и ее алгебра?
  16. Покажите сущность перехода от других алгебр к алгебре алгоритмики.
Alex Diil
Alex Diil

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

:

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

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

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

Наталья Семичевская
Наталья Семичевская
Россия, Благовещенск, Амурский государственный университет