Как всегда о событиях

Всем добрый день и мирного неба. Был в оккупации, но успел поработать пока был свет. Хвастаюсь. Закончил транслятор. Результатом доволен. Получилось круче чем ожидал. Много думал о программировании вообще. Поделюсь мыслями. В первую очередь за события. Ибо этим, интуитивно понятным словом называют не всегда то, где лопата, а это важно. Начнем с википедии

ru.wikipedia.org/wiki/Событие

Думаю, это, мягко говоря не полное определение. Итак, предмет нашего исследования объект. По умолчанию считаем, что это некая часть программы (или программа). Императивная парадигма вынуждает нас считать, что вот сейчас начнем выполнять команды и первым делом надо начать думать за последовательность команд. А мы сначала подумаем. А надо чем мы будем думать? Ловим себя на мысли что перед тем, как приняться за написание команд мы обдумываем будущие состояния нашего объекта, и уже к этим состояниям применять команды. Будут это переходы, или какой анализ, по результатам которого мы планируем поступать так или иначе. Что нам надо проанализировать? А если по другому спроектировать?

И только когда мы все приблизительно продумаем начинаем, собственно, процесс, который мы называем программированием. Т.е. «прокрутив» в голове различные состояния объекта, с которые достойны нашего внимания, мы принимаем решение. Так вот, берусь утверждать, что подмножество множеств состояния -это и есть события. Конечно, не все события (множества состояний) нам интересны с точки зрения поставленной задачи, но те, что интересны-однозначно события. Для того, что б перейти к парадигме, которую я предлагаю, достаточно иметь мою машину с подписками, на вот те события, которые и являются предметом размышления над программой. А частенько и прямо формулируются в постановке задачи. И еще отказаться от привычки последовательного выполнения команд. Это не так легко, как кажется! Но, в результате мы получаем новый (а на самом деле возвращаемся к доброму и старому) образу мышления.

В качестве примера могу привести классический пример программы Сортировка. Столько мыслей и обсуждений которых в моей парадигме (это не моя. Это парадигма естественного мышления) просто нет. Просто формулируем в событиях (сравнения на больше-меньше) постановку задачи. И в подписке на необходимое событие меняем местами элементы. Все! Нет такой задачи! И нет такой проблемы! Проблема производительности решается многопроцессорностью и распараллеливанем заложенных в архитектуре машины.

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

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

Отдельного разговора заслуживают перечислимые типы.

Определим группу Boolean из 2-х концептов типа Token с именами «!» и"¬" и значениями 0 и 1 соответственно.

{Boolean Token {«!» 0 #True." «¬» 1 #False.«}}

Значениями данных типа Boolean являются 0 или 1, определяемые в тексте именами (»!" и"¬" ) одного из двух концептов, и представляемые в программе как индексы элементов группы. По счастливому совпадению это тоже 0 или 1. Но, любопытно другое, что переменные перечислимого типа имеют и значения, и состояния а, значит и события с такими же именам!

Тип Compare

{Compare Token{ «=» 0 #Равно"">" 1 #Больше." «<» 2 #Меньше." }}

Сори.. Больше не могу сегодня.. Надеюсь, продолжение следует..

Хотя что б закруглить тему.. Событие это как раз определение (выражение) того что произошло. А результат не сообщение, а просто сам факт того что оно произошло, да еще при условии что оно нас интересует. Частью формулирования этого интереса является наличие подписок. Но, это дальше.. Спасибо!

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Закончил транслятор. Результатом доволен.

Сортировка на эвентах заработала ?

Підписатись на коментарі