SlideShare a Scribd company logo
1 of 29
Алгоритм.
Инструкция 1
Вход
Инструкция 2
Инструкция 3
Инструкция
n-1
Инструкция n
Инструкция к
Нет
Да
Выход
1. Только основные преимущества…
2. Машина Тьюринга..
3. Инструкции как все что угодно..
4. Команды перехода..
5. Алгоритмическая вычислимость..
Все архитектуры компьютеров и ПО спроектированы на
выполнение алгоритмов. Современное формальное
определение алгоритма было дано в 30—50-е годы XX века в
работах Тьюринга, Поста, Чёрча (тезис Чёрча — Тьюринга), Н.
Винера, А. А. Маркова.
К сожалению, физическая модель мира принципиально не
реализуется алгоритмами. В частности, в теории алгоритмов
не учитывается фактор времени. Реальные процессы
происходят параллельно. Кроме того, в реальной жизни
инициализация действий (процедур обработки событий)
происходит извне алгоритма. По этой причине в практической
реализации алгоритма необходимо предусматривать все
возможные события, что значительно усложняет реализацию
задачи по нескольким причинам. Во-первых, трудно
предусмотреть именно «все» возможные события, во-вторых,
включение новых или удаление уже предусмотренных
реакций на событие представляет собой задачу сравнимую по
сложности с написанием нового алгоритма. И это с этим
неприятным фактом часто сталкиваются как разработчики так
и заказчики, когда добавление простой кнопочки приводит к
переписыванию программа практически заново.
Пример обычной задачи не реализуемой алгоритмом.
Бухгалтер.
Вход
Конструктор.
Анализ
проекта.
Обед.
План на завтра
Проблемы есть?
Да
Нет
Выход
Допустим, приблизительно так мы
составляем план работы на следующий день.
Секретарь.
Звонки.
Документы
на подпись.
Посетители.
А в жизни так последовательно не
получается. Конструктор может прийти
раньше Бухгалтера, звонки и посетители
тем более, вносят изменения в работу. И
все очень трудно предусмотреть.
Реальная работа. Никак не похожа на алгоритм.
Бухгалтер. Конструктор.
Анализ
разработки.
Обед.
План на завтра
Выход
Пришелбухгалтер
Пришел
конструктор
Смогвырваться
Ответы на
звонки.
Звонки.
Документы
на подпись.
Принесли.
Посетители.
Пришли.
Секретарь.
Что бы произошло событие, должно:
1. Произойти одно или несколько событий на
которые подписано данное событие.
2. Выполниться некое условие (логическое
выражение), если оно определено.
Если событие произошло, то запускается
на выполнение процедура обработки
события.
Событие состоит из:
1. Подписки. Одного или группы событий на
которое оно подписывается.
2. Условия. Логическое выражение при истинности
которого происходит событие.
3. Подписка на метод или событие которые
запускаются при срабатывании этого события.
События. Инструкция секретарше.
Дать мне трубку.
Соединить с Васей
Позвонит Коля Позвонит Вася
Соединить с выгодным предложением
Если будет звонить Коля или Вася ( Подписка на событие) меня не трогай. Дашь мне
трубку (Метод), только тогда, когда либо кто-то предложит больше 100$, либо Вася
предложит больше Коли (условия срабатывания событий) .
Подписка на события.
В>К Кто предложит > 100$
В нашей формулировке задание секретарше (создание нового события)
выглядит так. Мы объявляем подписку на планируемые события (звонки,
встречи и т.п.). Затем для каждого события определяем условия и
подписываемся на методы или другие события после чего как то называем
вновь созданное событие (в нашем случае это «Соединить с Васей» и
Соединить с выгодным предложением»).
События. Event.
Механизм событий является отличительной чертой системы Lada. Именно
благодаря этому, язык называется аспектным. События определяются концептами
класса Event.
Концепт Event имеет атрибуты Condition, Kit, Fire, Priority и Sub. Атрибут
Condition это логическое выражение, при истинности которого событие
считается происшедшим и запускается процедура обработки события
(формируется из операторов, вложенных в реализацию) если она задана.
Отсутствие значения в атрибуте Condition означает безусловное событие.
Проверка атрибута Condition происходит при выполнении событий
определенных атрибутом Kit, которое связывает данное событие со списком
внешних событий (подписаться на событие). Таким образом, свойство Kit
представляет собой группу ссылок на события, к которым подписывается
создаваемое событие (комплект). Свойство Sub содержит группу операторов для
выполнения, если процедура обработки события определена в самом событии
или ссылку на процедуру или блок обработки события. По этой причине
процедура обработки события самостоятельное понятие и в общем случае не
является строго процедурой.
События. Обозначения. Терминология. Работа.
Логическое выражение (Condition), если оно есть, вычисляется после срабатывания комплекта. Если
результат вычисления True, то считаем что «событие готово». Если выражение отсутствует, считаем что
оно равно True. На рисунке выражение помещается в прямоугольник со скругленными углами.
Изменение времени T Изменение температуры F
Полдень
T=12.00
Температура комфорта
F>18C
Выключить отопление
Выключить отопление
Комплект (Kit) определяется событиями на которые он «подписывается» и типом комплекта. Будем
говорить что комплект типа «И» «сработал», если произошли все события на которые он подписан.
Комплект типа «Или» срабатывает если хотя бы одно событие на которые подписан комплект
сработало. На рисунке комплект обозначается жирной чертой. Тип комплекта «Или» обозначается
перпендикулярной чертой. Входящими дугами определяются события на которые подписан комплект.
Процедура обработки события (Sub) или Метод, запускается на выполнение если событие готово. По
завершению работы процедуры, считается что событие произошло. Произошедшее событие запускает
комплекты которые на него подписаны. Процедура обработки события обозначается прямоугольником.
Имя события (Name) помещается в прямоугольнике с пунктирной границей.
Значение события (Value). Графически не отображается.
Факт «Событие произошло» в общем случае может
зависеть от выполнения процедуры обработки
события. Эта зависимость может быть обусловлена
общим пространством для соответствующего
метода.
Автоматическая коробка передач
Номер передачи (NP)
Переключение на
высшую передачу (Up)
Переключение на низшую
передачу (Down)
Коробка передач
Атрибуты
Методы
Вал двигателя
Скорость вала двигателя (Sp)
Атрибуты
Ускорение скорости вала двигателя (U)
Изменение скорости вала двигателя (ChangeS)
События
Изменение ускорения скорости вала двигателя (ChangeU)
Переключить высшую передачу
Выражение для переключения вверх передач
События
Переключение
передачи (ChangeN)
Дисплей
Вывод на дисплей
Методы
Переключить низшую передачу
Выражение для переключения вниз передач
Автоматическая коробка передач.
Добавим переключатель режимов движения.
Номер передачи (NP)
Переключение на высшую
передачу (Up)
Переключение на низшую
передачу (Down)
Коробка передач
Атрибуты
Методы
Вал двигателя
Скорость вала двигателя (Sp)
Атрибуты
Ускорение скорости вала двигателя (U)
Изменение скорости вала двигателя (ChangeS)
События
Изменение ускорения скорости вала двигателя (ChangeU)
Переключить высшую передачу
Выражение для переключения вверх передач
События
Переключение передачи
(ChangeN)
Дисплей
Вывод на дисплей
Методы
Переключить низшую передачу
Выражение для переключения вниз передач
Режим движения. Вперед,
назад, паркинг.
Переключатель
Атрибуты
События
Переключение режима
(ChangeN)
Паркинг
Если состояние «Паркинг»
Ручной тормоз
Автомат. Примеры.
Изменение температуры Изменение фотодатчика
Выкл. свет.
Присутвия датчик
Сигнализация.
Вкл. сигнализацию
1. Добавление новых датчиков и
исполнительных устройств.
2. Удаление…
3. Объединение сетей заключается
в обмене событиями.
Распараллеливание.
4. Построение иерархии устройств.
5. Индикация в сети. Дисплей.
Изменение времени
День
>=0
Ночь
<0
Кто-то есть дома
>0
Дома никого нет
<=0
Вкл. свет.
Вкл. Свет.
Упрощение логики.
Задача. Проанализировать текст А и посчитать количество комбинаций букв «аб», «ав»,
«абс» в с1, с2, с3. Длина текста n. Индекс текущей буквы i. Текущая буква А[i]
C1=0, C2=0, C3=0, i=0
Вход
а?
Следующая буква; i=i+1
Конец текcта?
Нет
Да
Да
Нет
Выход
Следующая буква; i=i+1
Конец текcта?
Да
Выход
Нет
б?
Нет
в?
Нет
Да
с2=с2+1
Да
с1=с1+1 Следующая буква; i=i+1
Конец текcта?
Да
Нет
с?
Нет
Выход
Да
с1=с1-1, с3=с3+1
C1=0, C2=0, C3=0, i=0
Вход с событием «конец текста»
Следующая буква; i=i+1
а?
Да
Нет
Следующая буква; i=i+1
в?
Нет
Да
с1=с1+1
Следующая буква; i=i+1
с2=с2+1
б?
Нет
Да
с?
Нет
Да
с1=с1-1, с3=с3+1
Конец текста
Изменение индекса i
i=n
Выход
Первая буква а Вторая буква б
Изменение индекса i
A[i]=а A[i+1]=б
Вторая буква в
A[i+1]=в
третья буква с
A[i+2]=с
До конца больше 2-х букв До конца 3 и больше букв
n-i>1 n-i>2
Изменение длины текста n
Опознан ав
Сразу третью букву проверяем;
i=i+2; С1+=1
Опознан аб 3-я не с
Сразу третью букву проверяем;
i=i+2; С2+=1
Опознан абс
Сразу четвертую букву
проверяем; i=i+3; С3+=1
Пряники:
1. Вычисление логических выражений в событиях не
изменяет состояния, потому может вычисляться
одновременно на многопроцессорных системах.
2. Данный автомат запускается при изменением длины
текста.
Задача. Проанализировать текст А и посчитать количество комбинаций букв «аб», «ав», «абс» в с1, с2,
с3. Длина текста n. Индекс текущей буквы i. Текущая буква А[i]
Sub Sort (A[]: Integer)
{
Dim ' Определение группы переменных
Integer ' типа Integer
( I, ' Индекс внешнего цикла
J, ' Индекс внутреннего цикла
Count=A.Length-2, ' Конец внешнего цикла.
"In Count" ' Конец внутреннего цикла
)
' Выражения
Exp Integer ' Определение выражений типа Integer
{ Current = A[J] ' Значения текущего элемента
Next = A[J+1] ' Значения следующего элемента
}
' Блоки
Block Chang If Current < Next A[J]A[J+1] ' Знак  Операция обмена
' Сортировка
If Count <0 Exit Sub Sort ' Если нечего сортировать то выход
For I=0 To Count ' В противном случае сортируем
{
"In Count" = Count –I
For J=0 To "In Count" Chang
}
} ' Конец процедуры
Сортировка. Пузырек.
Задача. Отсортировать массив А длиной n (A.Length). Индекс текущего значения i. Текущее значение А[i]
Примечание:
Язык LADA не имеет оператора If.
Здесь он применяется
исключительно в целях
демонстрации.
Сортировка. Автомат.
Следующий элемент больше
A[i]<A[i+1]
Задача. Отсортировать массив А длиной n. Индекс текущего значения i. Текущее значение А[i]
Меняем элементы местами
A[i]A[i+1]
Предыдущий элемент меньше
A[i-1]<A[i]
Меняем элементы местами
A[i-1]A[i]
Изменение значения A[i]
Не конец массива
i<n
Не начало массива
i>0
' Определение понятий Positive и Четное
Define { Positive (X: Integer) {X>0} Четное (X: Integer) ‹X  1 =0› }
' Операции.
Infix Integer "^" (X: Integer, I: Integer) ' "^" – имя инфиксной операции
{ "^"=1
For Dim Integer J =0 To I {"^"*=X} }
Определим множество, на котором будет выполняться интерпретация. В нашем случае это множества целых чисел и значения I
и Y.
Dim Integer (I=-50000, Y=108)
Высказывание со знаком вопроса называется целевым высказыванием. Знак вопроса говорит о том, что эту задачу
предпочтительней решить без вычислений, логическим разбором, который называется интерпретацией.
Для нашей задачи оно выглядит так. Positive (I ^ Y)?
Определим высказывания которыми будем пользоваться для решения этой задачи.
' Выказывания относительно операции "^"
"For All" { "^" Positive  { ‹Positive (X) › ‹ Четное (I) ›} }
Эти высказывания можно читать так: Для любых параметров X и I типа Integer операция "^" является Positive тогда, когда либо
положительное X, либо четная степень (I).
Шаг логического разбора называется резолюцией. На первом шаге резолюции ищем высказывания Positive относительно
функции "^". Оказывается, у нас есть такое высказывание и не одно. Выбираем первое Positive (X). Проверяем область действия
параметра X в определении Positive. Integer и нас это устраивает. И, стало быть, мы можем смело полагаться на исследование этого
определения. Данное определение упростить не возможно. Делаем вычисление/ Вместо параметра X подставляем значение -5000 и
получаем негативный результат. Значит делать выводы на основе этого высказывания нельзя. При положительном результате вопрос
был бы закрыт, но не все потеряно, у нас есть еще не проанализированное определение Четное (I) и область действия нас устраивает.
Вычисляем его на истинность, подставляя в качестве параметра значение 108, и получаем положительный результат. Делаем вывод, что
целевое высказывание Positive (-50000 ^ 108)? =True.
В общем случае, если мы не получим результат с помощью интерпретации, то у нас остается вариант просчитать
непосредственно значение с помощью функции возведения в степень. (Императивное решение). Но разумно высказывания
сформулировать следующим образом:
"For All“ { "^" Positive  ‹Positive (X)  Четное (I) › }
Что читается так. Для любых параметров X и I типа Integer операция "^" является Positive тогда и только тогда, когда либо
положительное X, либо четная степень (I).
Мы получим гарантированный ответ на целевое высказывание с помощью логического вывода. В некоторых источниках
процесс преобразования предикатов называется редукция.
Логический разбор. Интерпретация. Постановка задачи.
Задача. Определить без вычисления положительное ли значение -50 000 в 108-й степени.
Вернемся к принципу работы программы. Набор инструкций, коды, концепты.
Инструкция 1
Вход
Инструкция 2
Инструкция 3
Инструкция
n-1
Инструкция n
Инструкция к
Нет
Да
Выход
Инструкция 1
Инструкция L
Набор L инструкций
Инструкция представляет собой код,
идентифицирующий ее и тело инструкции (Body)
необходимое для выполнения.
Набор инструкций фактически это набор классов
инструкций.
В общем случае, инструкция может содержать
входные параметры и атрибуты,
характеризующие особенности именно этой
конкретной инструкции. Такую конструкцию и
назовем концептом.
Создав инструментарий для создания концептов,
и мы получим концептную парадигму, а машину
выполняющая концепты назовем концептной
машиной.
Структура концепта.
Атрибуты
концепта.
Содержание.
(Body)
Индекс
атрибута.
Название Бит
наличия
Тип Назначение
0. Concept - Byte Класс концепта. Отличен от 0.
1. Parent - Pointer Родительский концепт (в который вложен текущий).
2. Body 0 Concept. Вложенные концепты.
3. Name 1 Name Имя тега.
4. ? 2 Text Help. Справочная информация.
5. Graphics 3 Concept () Графическое представление.
6. Logic 4 Concept() Логическое представление концепта.
7. Private 5 Tape Свойства концепта не содержащиеся в классе.
8. Empty 6 Свободно
9. Empty 7 Свободно
-- Result -- Concept Результат работы. Имеет события Error и Good.
Таблица 2.1. Общие атрибуты концептов.
Все концепты порождены, одним концептом Concept,
применяя концепты Byte, Attribute и Tape. Которые
назовем базовыми. Т.е. все созданное имеет единую
структуру. Или, как принято называть единый формат.
Concept Concept ? "Класс-концепт создающий новые концепты."
{ Attribute ":" : Creator ?"Имя наследуемого класса." {}
Attribute "." : Data ?"Параметры концепта." {}
Attribute Before : Concept ?"Группа концептов выполняющихся до выполнения концепта." {}
Attribute After : Concept ?"Группа концептов выполняющихся после выполнения концепта." {}
}
Виртуальная машина (VML).
Поиск
описания
концепта в
системе.
Вход
Выполнение
концепта.
System.
Список
описания
концептов.
В исходном состоянии эта машина ничего не умеет делать, кроме как
создавать новые концепты. Этим достигается во-первых простота
реализации, во-вторых универсальность. Если VML не может выполнить
какой-то концепт (по причине отсутствия описания его класса в системе),
она может его загрузить. Кроме того, эта машина является минимальной
для применения в данной предметной области загрузив в нее только
необходимые классы концептов. И, само собой, можно работать с такой
машиной в терминах любой конкретной предметной области.
Обеспечив одинаковый результат выполнения классов концептов
(терминов) в физически разных машинах можем гарантировать
одинаковый результат выполнения программы сформулированной в
одной терминологии.
Прелести единого формата.
1. Загрузка, хранение, распределение памяти, передача и прием
данных осуществляется единым алгоритмом.
2. Отпадает необходимость в расширении файлов. Структура файлов
определяется классами концептов. Все файлы загружаются
одинаково. Описание системных и библиотечных классов
концептов, соответственно в системе и библиотеках, а собственные
классы содержаться в самом файле (документ).
3. Как следствие отпадает необходимость в различных приложениях.
4. Вместо различных приложений используем универсальный
редактор (он же транслятор) для выполнения всей работы на
компьютере. Единственное отличие что просмотр и
редактирование для удобства можно представить в разных видах
(режимах). А именно: стандартный, табличный, дизайн, теговый,
UML и режим «калькулятор» или облегченный (он же применяется
в мобильниках).
5. Достигается глобализация данных. Т.е. документ созданный в
одной предметной области, может быть использован в другой без
редактирования и изменений.
6. Получаем возможность создания реальных систем
документооборота, потому как на старых принципах его просто
невозможно построить.
Состав ПО контроллера.
Объекты
Objects
Система
System
Виртуальная
машина
Диспетчер
событий
Диспетчер
памяти
ПО контроллера состоит:
1. Виртуальная машина выполняющая концепты.
2. Системы содержащей описание концептов.
3. Объекты конкретного контроллера, создаваемые так же
виртуальной машиной. Каждый объект содержит события и
методы (не только) взаимодействующие через механизм
событий.
4. Диспетчер событий запускающий процедуры выполнения
событий (методы) согласно приоритета.
5. Диспетчер памяти, управляющий динамическим
распределением памяти.
Полный состав ПО. Десктоп. Мобильный.
Объекты
Objects
Система
System
Виртуальная
машина
Диспетчер
событий
Диспетчер
памяти
1. Пунктирная рамка - не обязательное ПО.
2. Синим цветом прошивается.
3. Зеленый цвет –загружается и апгретчивается.
Синтаксис
Syntax
Лексика
Lexicon
Алфавит
Alphabet
Сервер
Редактор
Виртуальная машина. Более подробно.
Выполнение
концепта
Вход
Нет
Есть
следующий
концепт?
Да
Выход
Есть описание
класса
концепта?
Нет
Загрузка класса
концепта
Да
Есть
метареализация
?
Выполнение
метареализации
Да
Выполнение концепта.
Выполнение содержания
концепта-класса
Вход
Выход
Выполнение
атрибутов концепта
Выполнение
атрибута Before класса концепта.
Выполнение
атрибута After класса концепта.
Обработка
события
есть?
Выполнение
обработки
события
Нет
Да
События
Запуск всех
связанных
событий, если
они есть.
Нет
Да
Выход
Название Назначение Датчики Исполнительные устройства
Климатический Управление климатом в
доме
Температуры-2 шт, влажности, давления. Удлинитель 2м с 4 розетками. Реле 2.
Сторожевой. Сторожевое. Емкостной датчик. Контактные
выключатели 2 шт. Дверная кнопка.
Реле 2 шт. Источник звука.
Огородник. Для управления
небольшим огородом
или цветами в квартире.
Датчик температуры 2 шт. Влажности. Кран для воды, реле.
Охранный . Для охраны дома и
территории.
Емкостной, звуковой, инфракрасный
контактных выключателя 4 шт.
Источник звука. Реле 2 шт.
Световой. Управление световыми
приборами.
Фотодатчик. Выключатель. Контактный
выключатель, Выключатель с
регулировкой.
2 комплекта по 4 реле. 2 розетки.
Умный дом. Автоматизация
домашнего
оборудования.
Два выключателя, 4 контактных
выключателей.
Удлинитель 2м с 4 розетками. Реле 2.
Электродвигатель.
Управление
компьютером.
Панель управления
компьютером.
Температуры -3шт. LCD. Кнопки-2шт. Шим.
Улица. Управление световыми
приборами на улице.
Фотодатчик. Радиоинтерфейс. Емкостной
датчик.
Реле.
Комплекты.
328
328
328
328
328

More Related Content

Viewers also liked

Viewers also liked (10)

336
336336
336
 
335
335335
335
 
329
329329
329
 
Home Marketing Plan
Home Marketing PlanHome Marketing Plan
Home Marketing Plan
 
Reproducción en cordados introduccion
Reproducción en cordados introduccionReproducción en cordados introduccion
Reproducción en cordados introduccion
 
Ovogenesis
OvogenesisOvogenesis
Ovogenesis
 
Duolingo: Gamifying Irish-language learning
Duolingo: Gamifying Irish-language learningDuolingo: Gamifying Irish-language learning
Duolingo: Gamifying Irish-language learning
 
Gamification for Second Language Acquisition
Gamification for Second Language AcquisitionGamification for Second Language Acquisition
Gamification for Second Language Acquisition
 
Gamification lecture for #BR4041UL
Gamification lecture for #BR4041ULGamification lecture for #BR4041UL
Gamification lecture for #BR4041UL
 
EuroCALL2015
EuroCALL2015EuroCALL2015
EuroCALL2015
 

328

  • 1. Алгоритм. Инструкция 1 Вход Инструкция 2 Инструкция 3 Инструкция n-1 Инструкция n Инструкция к Нет Да Выход 1. Только основные преимущества… 2. Машина Тьюринга.. 3. Инструкции как все что угодно.. 4. Команды перехода.. 5. Алгоритмическая вычислимость.. Все архитектуры компьютеров и ПО спроектированы на выполнение алгоритмов. Современное формальное определение алгоритма было дано в 30—50-е годы XX века в работах Тьюринга, Поста, Чёрча (тезис Чёрча — Тьюринга), Н. Винера, А. А. Маркова. К сожалению, физическая модель мира принципиально не реализуется алгоритмами. В частности, в теории алгоритмов не учитывается фактор времени. Реальные процессы происходят параллельно. Кроме того, в реальной жизни инициализация действий (процедур обработки событий) происходит извне алгоритма. По этой причине в практической реализации алгоритма необходимо предусматривать все возможные события, что значительно усложняет реализацию задачи по нескольким причинам. Во-первых, трудно предусмотреть именно «все» возможные события, во-вторых, включение новых или удаление уже предусмотренных реакций на событие представляет собой задачу сравнимую по сложности с написанием нового алгоритма. И это с этим неприятным фактом часто сталкиваются как разработчики так и заказчики, когда добавление простой кнопочки приводит к переписыванию программа практически заново.
  • 2. Пример обычной задачи не реализуемой алгоритмом. Бухгалтер. Вход Конструктор. Анализ проекта. Обед. План на завтра Проблемы есть? Да Нет Выход Допустим, приблизительно так мы составляем план работы на следующий день. Секретарь. Звонки. Документы на подпись. Посетители. А в жизни так последовательно не получается. Конструктор может прийти раньше Бухгалтера, звонки и посетители тем более, вносят изменения в работу. И все очень трудно предусмотреть.
  • 3. Реальная работа. Никак не похожа на алгоритм. Бухгалтер. Конструктор. Анализ разработки. Обед. План на завтра Выход Пришелбухгалтер Пришел конструктор Смогвырваться Ответы на звонки. Звонки. Документы на подпись. Принесли. Посетители. Пришли. Секретарь. Что бы произошло событие, должно: 1. Произойти одно или несколько событий на которые подписано данное событие. 2. Выполниться некое условие (логическое выражение), если оно определено. Если событие произошло, то запускается на выполнение процедура обработки события. Событие состоит из: 1. Подписки. Одного или группы событий на которое оно подписывается. 2. Условия. Логическое выражение при истинности которого происходит событие. 3. Подписка на метод или событие которые запускаются при срабатывании этого события.
  • 4. События. Инструкция секретарше. Дать мне трубку. Соединить с Васей Позвонит Коля Позвонит Вася Соединить с выгодным предложением Если будет звонить Коля или Вася ( Подписка на событие) меня не трогай. Дашь мне трубку (Метод), только тогда, когда либо кто-то предложит больше 100$, либо Вася предложит больше Коли (условия срабатывания событий) . Подписка на события. В>К Кто предложит > 100$ В нашей формулировке задание секретарше (создание нового события) выглядит так. Мы объявляем подписку на планируемые события (звонки, встречи и т.п.). Затем для каждого события определяем условия и подписываемся на методы или другие события после чего как то называем вновь созданное событие (в нашем случае это «Соединить с Васей» и Соединить с выгодным предложением»).
  • 5. События. Event. Механизм событий является отличительной чертой системы Lada. Именно благодаря этому, язык называется аспектным. События определяются концептами класса Event. Концепт Event имеет атрибуты Condition, Kit, Fire, Priority и Sub. Атрибут Condition это логическое выражение, при истинности которого событие считается происшедшим и запускается процедура обработки события (формируется из операторов, вложенных в реализацию) если она задана. Отсутствие значения в атрибуте Condition означает безусловное событие. Проверка атрибута Condition происходит при выполнении событий определенных атрибутом Kit, которое связывает данное событие со списком внешних событий (подписаться на событие). Таким образом, свойство Kit представляет собой группу ссылок на события, к которым подписывается создаваемое событие (комплект). Свойство Sub содержит группу операторов для выполнения, если процедура обработки события определена в самом событии или ссылку на процедуру или блок обработки события. По этой причине процедура обработки события самостоятельное понятие и в общем случае не является строго процедурой.
  • 6. События. Обозначения. Терминология. Работа. Логическое выражение (Condition), если оно есть, вычисляется после срабатывания комплекта. Если результат вычисления True, то считаем что «событие готово». Если выражение отсутствует, считаем что оно равно True. На рисунке выражение помещается в прямоугольник со скругленными углами. Изменение времени T Изменение температуры F Полдень T=12.00 Температура комфорта F>18C Выключить отопление Выключить отопление Комплект (Kit) определяется событиями на которые он «подписывается» и типом комплекта. Будем говорить что комплект типа «И» «сработал», если произошли все события на которые он подписан. Комплект типа «Или» срабатывает если хотя бы одно событие на которые подписан комплект сработало. На рисунке комплект обозначается жирной чертой. Тип комплекта «Или» обозначается перпендикулярной чертой. Входящими дугами определяются события на которые подписан комплект. Процедура обработки события (Sub) или Метод, запускается на выполнение если событие готово. По завершению работы процедуры, считается что событие произошло. Произошедшее событие запускает комплекты которые на него подписаны. Процедура обработки события обозначается прямоугольником. Имя события (Name) помещается в прямоугольнике с пунктирной границей. Значение события (Value). Графически не отображается. Факт «Событие произошло» в общем случае может зависеть от выполнения процедуры обработки события. Эта зависимость может быть обусловлена общим пространством для соответствующего метода.
  • 7. Автоматическая коробка передач Номер передачи (NP) Переключение на высшую передачу (Up) Переключение на низшую передачу (Down) Коробка передач Атрибуты Методы Вал двигателя Скорость вала двигателя (Sp) Атрибуты Ускорение скорости вала двигателя (U) Изменение скорости вала двигателя (ChangeS) События Изменение ускорения скорости вала двигателя (ChangeU) Переключить высшую передачу Выражение для переключения вверх передач События Переключение передачи (ChangeN) Дисплей Вывод на дисплей Методы Переключить низшую передачу Выражение для переключения вниз передач
  • 8. Автоматическая коробка передач. Добавим переключатель режимов движения. Номер передачи (NP) Переключение на высшую передачу (Up) Переключение на низшую передачу (Down) Коробка передач Атрибуты Методы Вал двигателя Скорость вала двигателя (Sp) Атрибуты Ускорение скорости вала двигателя (U) Изменение скорости вала двигателя (ChangeS) События Изменение ускорения скорости вала двигателя (ChangeU) Переключить высшую передачу Выражение для переключения вверх передач События Переключение передачи (ChangeN) Дисплей Вывод на дисплей Методы Переключить низшую передачу Выражение для переключения вниз передач Режим движения. Вперед, назад, паркинг. Переключатель Атрибуты События Переключение режима (ChangeN) Паркинг Если состояние «Паркинг» Ручной тормоз
  • 9. Автомат. Примеры. Изменение температуры Изменение фотодатчика Выкл. свет. Присутвия датчик Сигнализация. Вкл. сигнализацию 1. Добавление новых датчиков и исполнительных устройств. 2. Удаление… 3. Объединение сетей заключается в обмене событиями. Распараллеливание. 4. Построение иерархии устройств. 5. Индикация в сети. Дисплей. Изменение времени День >=0 Ночь <0 Кто-то есть дома >0 Дома никого нет <=0 Вкл. свет. Вкл. Свет.
  • 10. Упрощение логики. Задача. Проанализировать текст А и посчитать количество комбинаций букв «аб», «ав», «абс» в с1, с2, с3. Длина текста n. Индекс текущей буквы i. Текущая буква А[i] C1=0, C2=0, C3=0, i=0 Вход а? Следующая буква; i=i+1 Конец текcта? Нет Да Да Нет Выход Следующая буква; i=i+1 Конец текcта? Да Выход Нет б? Нет в? Нет Да с2=с2+1 Да с1=с1+1 Следующая буква; i=i+1 Конец текcта? Да Нет с? Нет Выход Да с1=с1-1, с3=с3+1 C1=0, C2=0, C3=0, i=0 Вход с событием «конец текста» Следующая буква; i=i+1 а? Да Нет Следующая буква; i=i+1 в? Нет Да с1=с1+1 Следующая буква; i=i+1 с2=с2+1 б? Нет Да с? Нет Да с1=с1-1, с3=с3+1 Конец текста Изменение индекса i i=n Выход
  • 11. Первая буква а Вторая буква б Изменение индекса i A[i]=а A[i+1]=б Вторая буква в A[i+1]=в третья буква с A[i+2]=с До конца больше 2-х букв До конца 3 и больше букв n-i>1 n-i>2 Изменение длины текста n Опознан ав Сразу третью букву проверяем; i=i+2; С1+=1 Опознан аб 3-я не с Сразу третью букву проверяем; i=i+2; С2+=1 Опознан абс Сразу четвертую букву проверяем; i=i+3; С3+=1 Пряники: 1. Вычисление логических выражений в событиях не изменяет состояния, потому может вычисляться одновременно на многопроцессорных системах. 2. Данный автомат запускается при изменением длины текста. Задача. Проанализировать текст А и посчитать количество комбинаций букв «аб», «ав», «абс» в с1, с2, с3. Длина текста n. Индекс текущей буквы i. Текущая буква А[i]
  • 12. Sub Sort (A[]: Integer) { Dim ' Определение группы переменных Integer ' типа Integer ( I, ' Индекс внешнего цикла J, ' Индекс внутреннего цикла Count=A.Length-2, ' Конец внешнего цикла. "In Count" ' Конец внутреннего цикла ) ' Выражения Exp Integer ' Определение выражений типа Integer { Current = A[J] ' Значения текущего элемента Next = A[J+1] ' Значения следующего элемента } ' Блоки Block Chang If Current < Next A[J]A[J+1] ' Знак  Операция обмена ' Сортировка If Count <0 Exit Sub Sort ' Если нечего сортировать то выход For I=0 To Count ' В противном случае сортируем { "In Count" = Count –I For J=0 To "In Count" Chang } } ' Конец процедуры Сортировка. Пузырек. Задача. Отсортировать массив А длиной n (A.Length). Индекс текущего значения i. Текущее значение А[i] Примечание: Язык LADA не имеет оператора If. Здесь он применяется исключительно в целях демонстрации.
  • 13. Сортировка. Автомат. Следующий элемент больше A[i]<A[i+1] Задача. Отсортировать массив А длиной n. Индекс текущего значения i. Текущее значение А[i] Меняем элементы местами A[i]A[i+1] Предыдущий элемент меньше A[i-1]<A[i] Меняем элементы местами A[i-1]A[i] Изменение значения A[i] Не конец массива i<n Не начало массива i>0
  • 14. ' Определение понятий Positive и Четное Define { Positive (X: Integer) {X>0} Четное (X: Integer) ‹X  1 =0› } ' Операции. Infix Integer "^" (X: Integer, I: Integer) ' "^" – имя инфиксной операции { "^"=1 For Dim Integer J =0 To I {"^"*=X} } Определим множество, на котором будет выполняться интерпретация. В нашем случае это множества целых чисел и значения I и Y. Dim Integer (I=-50000, Y=108) Высказывание со знаком вопроса называется целевым высказыванием. Знак вопроса говорит о том, что эту задачу предпочтительней решить без вычислений, логическим разбором, который называется интерпретацией. Для нашей задачи оно выглядит так. Positive (I ^ Y)? Определим высказывания которыми будем пользоваться для решения этой задачи. ' Выказывания относительно операции "^" "For All" { "^" Positive  { ‹Positive (X) › ‹ Четное (I) ›} } Эти высказывания можно читать так: Для любых параметров X и I типа Integer операция "^" является Positive тогда, когда либо положительное X, либо четная степень (I). Шаг логического разбора называется резолюцией. На первом шаге резолюции ищем высказывания Positive относительно функции "^". Оказывается, у нас есть такое высказывание и не одно. Выбираем первое Positive (X). Проверяем область действия параметра X в определении Positive. Integer и нас это устраивает. И, стало быть, мы можем смело полагаться на исследование этого определения. Данное определение упростить не возможно. Делаем вычисление/ Вместо параметра X подставляем значение -5000 и получаем негативный результат. Значит делать выводы на основе этого высказывания нельзя. При положительном результате вопрос был бы закрыт, но не все потеряно, у нас есть еще не проанализированное определение Четное (I) и область действия нас устраивает. Вычисляем его на истинность, подставляя в качестве параметра значение 108, и получаем положительный результат. Делаем вывод, что целевое высказывание Positive (-50000 ^ 108)? =True. В общем случае, если мы не получим результат с помощью интерпретации, то у нас остается вариант просчитать непосредственно значение с помощью функции возведения в степень. (Императивное решение). Но разумно высказывания сформулировать следующим образом: "For All“ { "^" Positive  ‹Positive (X)  Четное (I) › } Что читается так. Для любых параметров X и I типа Integer операция "^" является Positive тогда и только тогда, когда либо положительное X, либо четная степень (I). Мы получим гарантированный ответ на целевое высказывание с помощью логического вывода. В некоторых источниках процесс преобразования предикатов называется редукция. Логический разбор. Интерпретация. Постановка задачи. Задача. Определить без вычисления положительное ли значение -50 000 в 108-й степени.
  • 15. Вернемся к принципу работы программы. Набор инструкций, коды, концепты. Инструкция 1 Вход Инструкция 2 Инструкция 3 Инструкция n-1 Инструкция n Инструкция к Нет Да Выход Инструкция 1 Инструкция L Набор L инструкций Инструкция представляет собой код, идентифицирующий ее и тело инструкции (Body) необходимое для выполнения. Набор инструкций фактически это набор классов инструкций. В общем случае, инструкция может содержать входные параметры и атрибуты, характеризующие особенности именно этой конкретной инструкции. Такую конструкцию и назовем концептом. Создав инструментарий для создания концептов, и мы получим концептную парадигму, а машину выполняющая концепты назовем концептной машиной.
  • 16. Структура концепта. Атрибуты концепта. Содержание. (Body) Индекс атрибута. Название Бит наличия Тип Назначение 0. Concept - Byte Класс концепта. Отличен от 0. 1. Parent - Pointer Родительский концепт (в который вложен текущий). 2. Body 0 Concept. Вложенные концепты. 3. Name 1 Name Имя тега. 4. ? 2 Text Help. Справочная информация. 5. Graphics 3 Concept () Графическое представление. 6. Logic 4 Concept() Логическое представление концепта. 7. Private 5 Tape Свойства концепта не содержащиеся в классе. 8. Empty 6 Свободно 9. Empty 7 Свободно -- Result -- Concept Результат работы. Имеет события Error и Good. Таблица 2.1. Общие атрибуты концептов. Все концепты порождены, одним концептом Concept, применяя концепты Byte, Attribute и Tape. Которые назовем базовыми. Т.е. все созданное имеет единую структуру. Или, как принято называть единый формат. Concept Concept ? "Класс-концепт создающий новые концепты." { Attribute ":" : Creator ?"Имя наследуемого класса." {} Attribute "." : Data ?"Параметры концепта." {} Attribute Before : Concept ?"Группа концептов выполняющихся до выполнения концепта." {} Attribute After : Concept ?"Группа концептов выполняющихся после выполнения концепта." {} }
  • 17. Виртуальная машина (VML). Поиск описания концепта в системе. Вход Выполнение концепта. System. Список описания концептов. В исходном состоянии эта машина ничего не умеет делать, кроме как создавать новые концепты. Этим достигается во-первых простота реализации, во-вторых универсальность. Если VML не может выполнить какой-то концепт (по причине отсутствия описания его класса в системе), она может его загрузить. Кроме того, эта машина является минимальной для применения в данной предметной области загрузив в нее только необходимые классы концептов. И, само собой, можно работать с такой машиной в терминах любой конкретной предметной области. Обеспечив одинаковый результат выполнения классов концептов (терминов) в физически разных машинах можем гарантировать одинаковый результат выполнения программы сформулированной в одной терминологии.
  • 18. Прелести единого формата. 1. Загрузка, хранение, распределение памяти, передача и прием данных осуществляется единым алгоритмом. 2. Отпадает необходимость в расширении файлов. Структура файлов определяется классами концептов. Все файлы загружаются одинаково. Описание системных и библиотечных классов концептов, соответственно в системе и библиотеках, а собственные классы содержаться в самом файле (документ). 3. Как следствие отпадает необходимость в различных приложениях. 4. Вместо различных приложений используем универсальный редактор (он же транслятор) для выполнения всей работы на компьютере. Единственное отличие что просмотр и редактирование для удобства можно представить в разных видах (режимах). А именно: стандартный, табличный, дизайн, теговый, UML и режим «калькулятор» или облегченный (он же применяется в мобильниках). 5. Достигается глобализация данных. Т.е. документ созданный в одной предметной области, может быть использован в другой без редактирования и изменений. 6. Получаем возможность создания реальных систем документооборота, потому как на старых принципах его просто невозможно построить.
  • 19. Состав ПО контроллера. Объекты Objects Система System Виртуальная машина Диспетчер событий Диспетчер памяти ПО контроллера состоит: 1. Виртуальная машина выполняющая концепты. 2. Системы содержащей описание концептов. 3. Объекты конкретного контроллера, создаваемые так же виртуальной машиной. Каждый объект содержит события и методы (не только) взаимодействующие через механизм событий. 4. Диспетчер событий запускающий процедуры выполнения событий (методы) согласно приоритета. 5. Диспетчер памяти, управляющий динамическим распределением памяти.
  • 20. Полный состав ПО. Десктоп. Мобильный. Объекты Objects Система System Виртуальная машина Диспетчер событий Диспетчер памяти 1. Пунктирная рамка - не обязательное ПО. 2. Синим цветом прошивается. 3. Зеленый цвет –загружается и апгретчивается. Синтаксис Syntax Лексика Lexicon Алфавит Alphabet Сервер Редактор
  • 21. Виртуальная машина. Более подробно. Выполнение концепта Вход Нет Есть следующий концепт? Да Выход Есть описание класса концепта? Нет Загрузка класса концепта Да Есть метареализация ? Выполнение метареализации Да
  • 22. Выполнение концепта. Выполнение содержания концепта-класса Вход Выход Выполнение атрибутов концепта Выполнение атрибута Before класса концепта. Выполнение атрибута After класса концепта.
  • 24. Название Назначение Датчики Исполнительные устройства Климатический Управление климатом в доме Температуры-2 шт, влажности, давления. Удлинитель 2м с 4 розетками. Реле 2. Сторожевой. Сторожевое. Емкостной датчик. Контактные выключатели 2 шт. Дверная кнопка. Реле 2 шт. Источник звука. Огородник. Для управления небольшим огородом или цветами в квартире. Датчик температуры 2 шт. Влажности. Кран для воды, реле. Охранный . Для охраны дома и территории. Емкостной, звуковой, инфракрасный контактных выключателя 4 шт. Источник звука. Реле 2 шт. Световой. Управление световыми приборами. Фотодатчик. Выключатель. Контактный выключатель, Выключатель с регулировкой. 2 комплекта по 4 реле. 2 розетки. Умный дом. Автоматизация домашнего оборудования. Два выключателя, 4 контактных выключателей. Удлинитель 2м с 4 розетками. Реле 2. Электродвигатель. Управление компьютером. Панель управления компьютером. Температуры -3шт. LCD. Кнопки-2шт. Шим. Улица. Управление световыми приборами на улице. Фотодатчик. Радиоинтерфейс. Емкостной датчик. Реле. Комплекты.