Решил написать по быстрому. Для обсуждения и т.д. Ибо забанят. Могу добавить что есть куча материала. Система, новый язык программирования (хотя это слово не подходит). Ибо получившееся даже не алгоритмы. Ну, и транслятор с нового языка. Кому интересно можете писать на почту, Скайп Batu1955 или на мессенджер..
Машина Кузьмина. (Управляемая недетерминированная машина Тьюринга.)
Раcсчитывая что читатель знаком с МТ оформим описание останавливаясь на отличиях предлагаемой машины от МТ.
Машина Кузьмина представляет собой перечислимое множество ячеек (концептов) и перечислимое множество управляющих устройств (можно считать их головками, кому это удобно) назначение которых – адресация (активация) концептов. Номер концепта будем называть адресом.
Ячейка (а не головка как у МТ) имеет множество состояний S (возможно бесконечное). Пока событием будем называть состояние концепта. Это не противоречит интуитивному представлению о событии как о процессе изменения состояния потому что факт изменения состояния определяется анализом на принадлежность новому состоянию (истинность события), и зачастую событие имеет имя этого нового состояния.
Каждое событие может иметь конечное множество подписок. Подписка — номер концепта к которому осуществляется переход управляющего устройства и при условии истинности события, которому принадлежит подписка.
Работа машина заключается в адресации (активации) концепта. При активации концепта, запускается анализ на истинность всех событий концепта (анализ не изменяет состояние концепта и потому может выполняться одновременно для всех событий) имеющих подписки, и при истинности этих событий машина активирует концепты с номерами, указанными в подписках (одновременно, если истинных событий с подписками больше одного). При отсутствии подписок адресация выполняет предназначенную функцию в зависимости от вида адресации (чтение-запись-выполнение-инициализация). На чем работа и заканчивается.
Виды адресации.
Адресация имеет 4 вида:
1. Адресация для чтения. Читает значение концепта.
2. Адресация для записи. Записывает новое значение.
3. Адресация для выполнения. Генерирует событие «Выполнение»
4. Адресация для инициализации. Генерирует события «Инициализация» и «Выполнение».
Архитектура машины.
Реализация машины представляет собой почти классическую архитектуру с несколькими шинами адресации, и несколькими процессорами. Шины адресации реализуют кроме классических адресаций для чтения/записи/выполнение еще и инициализацию. Т.е. создание новых концептов. Шины адресации перед активацией, формируют собственный стек для параметров и динамических переменных. Каждый процессор при запуске формирует собственный стек, и имеет собственные регистры. Память приставлена не массивом ячеек стандартного размера, а множеством концептов единой структуры. Графически содержимое такой машины можно представить графом с концептами-вершинами и ребрами-подписками.
События.
Из предложенного выше определения события почти очевидно, что не каждое состояние имеет смысл объявлять событием. Опять же интуитивно, состояния, объявляемые событиями должны представлять семантический интерес. Т.е. в общем случае событие e — это некое подмножество состояний S представляющий семантический смысл. Событие e {s|s ∈ S}. Конечное множество событий E характеризирующих концепт назовем множеством событий концепта. Анализ на истинность события e заключается в проверке текущего состояния концепта на принадлежность множеству e.
Объявление события.
Проще всего объявлять события для концептов, имеющих ограниченное количество состояний. Т.е. для перечислимых типов. Перечислимые типы определяются группой концептов, имя каждого из группы представляет концепт в группе и хранится как индекс этого концепта в группе. Если концепты в группе –значения, то имя концепта имеет еще два смысла. В операторах как значение концепта с индексом, а при формировании подписки обозначают событие, заключающееся в равенстве переменной этому значению. Рассмотрим на примере определения типа Boolean.
Boolean
Определим тип Boolean как именованную группу (имя группы непосредственно после открывающей скобки без пробела) из двух концептов типа токен (4 разряда) с именами "!" и "¬" и значениями 0 и 1:
{Boolean Token {"!" 0 #True.» "¬" 1 #False. »}}
Теперь для переменной F определенной ниже с начальным значением -!
Boolean F ! #Определение переменной типа Boolean и присвоение значения Истина. »
Формирование подписки на событие True.
F ! ((a +b) (F= ¬)) #По значению истина складываем a +b. И присваиваем значение False.»
Аналог оператора If:
F {! A+B ¬ A-B) #По значению истина складываем A+B. Иначе A-B.»
Знаки ! и ¬ являются значениями в операторе и событием
Compare
{"|" Token { "←" 0 #Запись» "→" 1 #Чтение» "|" 2 # Выполнение» ":" 3 #Инициализация» }}
Здесь мы наблюдаем перегрузку имени |. Это связано с тем, что мы определили класс событий адресации по имении |. Однако по определению машины каждый концепт имеет события этого класса со значениями, определенными в группе. Что б не плодить лишние знаки будем считать, что имена событий этого класса совпадают с именем класса |.
Пример метода Nod. Метод запускается адресацией для выполнения с параметрами значениями для поиска Nod
@Int32( a, b) Int32 Nod | #Событие выполнения» | a~b { =Nod =a > a=a-b
<b=b-a}
По событию «Выполнение» (событие | со значением |) выполняется подписка –событие a~b порождающее значение-событие перечислимого типа Compare, что в свою очередь запускает подписку соответствующую результату сравнения. Чем запускает первый шаг алгоритма Евклида.
Работа предложенной машины можно представить алгоритмом только по выполнению какой-то ветки где порядок определен последовательностью подписок событий оказавшимися истинными по факту выполнения. https://ru.wikipedia.org/wiki/Алгоритм
В общем случае одновременно могут происходить переходы по нескольким подпискам по нескольким событиям, что порождает недетерминизм и двусмысленность в определении алгоритма как порядка или последовательности выполнения. О каком порядке и последовательности может идти речь при ОДНОВРЕМЕННОМ процессе. В общем случае МК гарантирует только порядок выполнения пары событие-подписка и назовем такую модель А-ритмом.
Здравствуйте, Холодный, Вы писали:
Х>Решил написать по быстрому. Для обсуждения и т.д. Ибо забанят. Могу добавить что есть куча материала. Система, новый язык программирования (хотя это слово не подходит). Ибо получившееся даже не алгоритмы. Ну, и транслятор с нового языка. Кому интересно можете писать на почту, Скайп Batu1955 или на мессенджер..
А ты не пиши в политику и про политику, тогда и не забанят.
Х>Машина Кузьмина. (Управляемая недетерминированная машина Тьюринга.)
Кузьмин, это, я полагаю, ты?
Ты суть-то опиши. В чем кайф от этой машины? А то твои математические определения скучно читать, пока не поймешь, зачем?
Pzz>Кузьмин, это, я полагаю, ты?
Я
Pzz>Ты суть-то опиши. В чем кайф от этой машины? А то твои математические определения скучно читать, пока не поймешь, зачем?
Суть в названии указана. Большинство процессов в реальном мире недетерминированные. На моей машине легче и естественней моделировать, например, всю автоматику. Нейронные сети, ПЛИСы В конце концов, вот реально работающая многопроцессорная система. В автоматике это вообще бомба. Не задумывался почему до сих пор нет удобных стандартов ни системы ни протокола для умных домов? Хайпануть пробовали все от микрософта и самсунга до сименса. Не слышал за успехи. Вот теперь есть. Лет за 5 вполне можно стать мировым лидером в этой области. Программирование контроллеров самое то. Система то всего 14 кб. Поместится везде.
Здравствуйте, Холодный, Вы писали:
Х>Суть в названии указана. Большинство процессов в реальном мире недетерминированные. На моей машине легче и естественней моделировать, например, всю автоматику. Нейронные сети
Ну так есть спайковые нейронные сети и процессоры для них, которые как раз не работают по тактам, а выполняют ли те части, которые связаны с конкретным входом. Если на вход ничего не поступит, то и их ветка не отработает. Процессоры такие делает уже куча контор, из больших, например, Intel Loihi.
Здравствуйте, Холодный, Вы писали:
Pzz>>Ты суть-то опиши. В чем кайф от этой машины? А то твои математические определения скучно читать, пока не поймешь, зачем? Х>Суть в названии указана. Большинство процессов в реальном мире недетерминированные. На моей машине легче и естественней моделировать, например, всю автоматику. Нейронные сети, ПЛИСы В конце концов, вот реально работающая многопроцессорная система. В автоматике это вообще бомба. Не задумывался почему до сих пор нет удобных стандартов ни системы ни протокола для умных домов? Хайпануть пробовали все от микрософта и самсунга до сименса. Не слышал за успехи. Вот теперь есть. Лет за 5 вполне можно стать мировым лидером в этой области. Программирование контроллеров самое то. Система то всего 14 кб. Поместится везде.
В первую очередь, параллельные. Происходящие независимо и одновременно. Как следствие, недетерминированные.
Человеку, однако, трудно помыслить весь этот параллелизм. Человеческий разум мыслит последовательными категориями. И чтобы осмысленно рассуждать об этом параллельном мире, мы строим последовательные, детерминированные модели.
Про умные дома ты, по-моему, напрасно сюда приплел. Мне кажется, по очень большому счету они никому не нужны. Это выдуманная проблема, придуманная маркетологами, а не инженерами. Поэтому и решений нет. Технически-то, ну чего там может быть сложного?
N>Ну так есть спайковые нейронные сети и процессоры для них, которые как раз не работают по тактам, а выполняют ли те части, которые связаны с конкретным входом. Если на вход ничего не поступит, то и их ветка не отработает. Процессоры такие делает уже куча контор, из больших, например, Intel Loihi.
В этом мире все уже есть. Только иногда через задницу. Я предлагаю общее решение для широкого класса задач, а не эксклюзивные процессоры.
Pzz>Человеку, однако, трудно помыслить весь этот параллелизм. Человеческий разум мыслит последовательными категориями. И чтобы осмысленно рассуждать об этом параллельном мире, мы строим последовательные, детерминированные модели.
Ты очень даже прав. Это главная проблема была привести к виду что б человеку можно было достаточно просто программировать. И, я думаю, мне это удалось.
Pzz>Про умные дома ты, по-моему, напрасно сюда приплел. Мне кажется, по очень большому счету они никому не нужны. Это выдуманная проблема, придуманная маркетологами, а не инженерами. Поэтому и решений нет. Технически-то, ну чего там может быть сложного?
И тут тоже прав. Только перепутал причину и следствие. Они нафиг никому не нужны потому что сложно в применении. Если у человека выбор нажать выключатель рядом или лезть за мобилой он выберет выключатель. Мне удалость сделать простое и доступное управление без программирования вообще. Т.е. пользователь может сам, не заморачиваясь перенастроить существующую систему за пару минут. Скажу даже больше. У устройств нет жесткого функционала. Пользователь сам формирует функционал который хочет иметь в месте где находится устройство. Т.е. нет такого что вот стоит выключатель света в прихожей. Это может быть выключатель чего угодно и даже (или плюс к этому) термометром или чем угодно что имеет смысл иметь в этом месте пользователю (в рамках реализуемого, конечно) и взаимодействовать со всем чем угодно в сети. Причем поменять свои хотелки за 5 минут. Хоть на месте, хоть удаленно. Повторюсь что сделать это не напрягаясь и не привлекая программистов.
Здравствуйте, Холодный, Вы писали:
N>>Ну так есть спайковые нейронные сети и процессоры для них, которые как раз не работают по тактам, а выполняют ли те части, которые связаны с конкретным входом. Если на вход ничего не поступит, то и их ветка не отработает. Процессоры такие делает уже куча контор, из больших, например, Intel Loihi. Х>В этом мире все уже есть. Только иногда через задницу. Я предлагаю общее решение для широкого класса задач, а не эксклюзивные процессоры.
Эээ, так эти процессоры и есть решение для широкого класса задач, причём с очень низким энергопотреблением. Очевидным видится их совмещение с event-based camera, но не только. Учитывая, что они поддерживают и временное, и частотное кодирование, по своей природе асинхронны и параллельны, то для потоков событий и входных данных предназначены лучше машины Кузьмина. Даже если подумать об умном доме, они естественным образом обучатся необходимому также безо всякого программирования.
Ссылки на статьи про вычислимость и полноту по Тьюрингу: раз, два.
N>Эээ, так эти процессоры и есть решение для широкого класса задач, причём с очень низким энергопотреблением. Очевидным видится их совмещение с event-based camera, но не только.
Ты б еще за видеокарты вспомнил. Я что говорил что жизнь становится невозможной? N>Ссылки на статьи про вычислимость и полноту по Тьюрингу:
Причем тут полнота по Тьюрингу ? Кто-то спорил?
Здравствуйте, Холодный, Вы писали:
Х>Ты б еще за видеокарты вспомнил. Я что говорил что жизнь становится невозможной?
Ты вообще толком про практику ничего не сказал. Но надо же с чем-то сравниваться, не только с абстрактной МТ, а чем-то более реальным и похожим.
Х>Причем тут полнота по Тьюрингу ? Кто-то спорил?
Ты говорил: Х>Я предлагаю общее решение для широкого класса задач, а не эксклюзивные процессоры
И это подтверждает, что решение для широкого класса задач, во-первых, теоретически, а во-вторых, уже и практически.
N>И это подтверждает, что решение для широкого класса задач, во-первых, теоретически, а во-вторых, уже и практически.
Надо отделять теоретическую машину, и реальное железо. Я заявил только теоретическую модель. За реальную машину только обозначил. Это отдельная тема. Есть еще тема — системы и основные понятия и тема языка программирования. Лексика, синтаксис, примеры. Сори. Но все мешать в одну кучу это крыша поедет. Это уже для того кто реальный интерес проявит. Но, а за широкий класс так и обычный компьютер решает широкий класс. Другое дело что у меня прерываний нет. Многопроцессорная и многошинная система заложена и в железо и в систему и в язык.
Здравствуйте, Холодный, Вы писали:
Х>Машина Кузьмина. (Управляемая недетерминированная машина Тьюринга.)
допустим при записи в яйчейку а активируются подписки на яйчейки б и в. При этом и б, и в при активации пишут в яйчейку г. Действительно, недетерминированное поведение.
Возможно, у этой машины есть какое-то теоретическое применение, но строить по этому принципу распределенные системы, скорее всего, не получится.
Здравствуйте, Холодный, Вы писали:
Х>Машина Кузьмина. (Управляемая недетерминированная машина Тьюринга.)
А можно вас спросить об областях применения такой машины?
Я вот прочитал её определение, и сразу же вспомнил химические процессы взаимодействия молекул веществ, которые идут недетерменировано и параллельно, так как приводятся в заимодействие с помощью тепловой энтропии пространства, получаемой из температуры окружающей среды (см. Броуновское движение).
Тем не менее, недетерминированность таких систем позволяет им делать полезную работу в результате последовательного протекания химических реакций. Вот один из наглядных примеров неорганической химии, в котором показано как материя строится из атомов при воздействии энтропии и наличии предопределенных электромагнитных связей между атомами. Или, например, биологические организмы. Много процессов жизнедеятельности имеет вполне определенные алгоритмы, и некоторые из них достигают Тьюринговой полноты и соответственно высоких уровней абстракции. Например, наше нервная система, сознание.
Поэтому ваша машина увиделась мне как способ создания подобных систем из некого "исходного кода". Достаточно почитать о химической реакции Белоусова-Жаботинского, в результате которой достигается цикличность — одна из основ Тьюринговой полноты, чтобы почувствовать в вашем изобретении близость чего-то интересного.
Очень интересно ваше мнение, может ли ваша находка помочь компилировать алгоритмы для химических недетерменированных систем из некого исходного кода?
Здравствуйте, scf, Вы писали:
scf>допустим при записи в яйчейку а активируются подписки на яйчейки б и в. При этом и б, и в при активации пишут в яйчейку г. Действительно, недетерминированное поведение.
Сори. Но подписки делаются не на ячейки, а на события. Ячейки в машине Тьюринга. У меня концепты. Хотя концепт может быть типа, допустим
Int32 a : _ #Событие инициализации» [ b=a v=a ]
Int32 b : < #Событие больше нуля.» a=b
Int32 v : > #Событие больше нуля.» a=v
Я здесь написал приблизительно то, что ты просил. Но, думаю, ты сам разберешься как работает моя машина и как будет выглядеть твоя задача. Обрати внимание что событие инициализации происходит только при первом присваивании, при условии что до этого там не было ничего присвоено.
У меня выполняется при инициализации а это значение одновременно ( у нас же много шин, а квадратная скобка разрешает одновременно выполнять операторы) записывается в b и v. Дальше если значение b> 0 то а присваbется значение b и одновременно (если v<0 то в а записывается значение v.
События данных заданы так {":" Token { "_" 0 #Отсутствует значение» "=" 1 # Ноль» ">" 2 # Положительное. Больше нуля» "<" 3 #Отрицательное. Меньше нуля.» Even 4 #Четное» Uneven 5 #Не четное» "~" 6 #Изменение значения.» }}
Т.е. имя класса события >
Да. Поначалу ломает мозг. Но быстро привыкаешь и по другому даже кажется тупо.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Холодный, Вы писали:
S>Возможно, вам будет интересны рассуждения Шилова про недетерминированный язык НеМо. S>https://persons.iis.nsk.su/files/persons/pages/LangProc.pdf
Спасибо. Прочитаю.
Очень даже интересно. Выходите на связь через скайп или мессенджер +380961135437
Туда же скиньте все что надо просмотреть.
У меня небольшая проблема. Я с оккупации. Дом расхерачили и здесь у друга поселился. потомку инет только через модем телефона. С собой смог спасти только системник. Клаву и мышку купил тут, монитор подарили временно. А колонок нет. Потому послушать смогу только через телефон. Но система создавалась именно для физических процессов. Потому очень даже интересно поработать в этой теме. Должно удачно получиться. Но надо вникнуть.
Михаил, я рад, что Вы здесь выступаете. Здесь очень высококвалифицированные специалисты. Желательно отвечать на вопросы очень конкретно, избегая общих слов и заявлений. Желаю успеха.
Здравствуйте, Владимир Паронджанов, Вы писали:
ВП>Здравствуйте, Михаил.
ВП>Михаил, я рад, что Вы здесь выступаете. Здесь очень высококвалифицированные специалисты. Желательно отвечать на вопросы очень конкретно, избегая общих слов и заявлений. Желаю успеха.
Спасибо. Я тут случайно. Скоро забанят. Хотел здесь обкатать новые формулировки. Через пару дней у вас появлюсь.
Здравствуйте, Pzz, Вы писали:
Pzz>Ты суть-то опиши. В чем кайф от этой машины? А то твои математические определения скучно читать, пока не поймешь, зачем?
Он уже описывал примерно 10 лет назад, но был высмеян за использование уникальной авторской терминологии.
Сейчас сделал второй подход, но кроме другой терминологии отличий не вижу.
В двух словах, в чём ключевое отличие его "уникального способа" от классического.
Программа, по-сути, строится и видоизменяется "на лету".
На каждом шаге может сработать паттерн "стратегия" и прочие родственные, типа "фабрика" и т.д., которые, в свою очередь, могут изменить структуру программы.
Подобные трюки я иногда применяю для ускорения "горячих" мест, например, по неким развесистым условиям программа пробегается лишь однажды, строя на лету через (в идеале даже не ООП-стратегии, а просто указатели на ф-ии), в общем через какой-либо из механизмов косвенности/виртуализации на лету стрится требуемая "прямая" логика, которая будет работать в цикле до некоторых пор уже без повторных проверок условий. При смене внешних условий может сработать обработчик соответствующего события и перестроить программу.
Т.е., условно нелинейная логика каждый раз строит условно линейную программу (потому что "исполнитель" тупой-линейный).
Два этих действа в предлагаемой парадигме равноправны, потому что "нелинейная" программа строится и исполняется так же, это я просто пытаюсь отделить мух от котлет на живых примерах, с целью разгрести всю эту забористую кашу.
Автор захотел выделить подобный подход нон-стоп "реконфигурирования" в чистом виде, но запутался в ролях и придумываниях терминологии.
(язык программирования и прочий инструментарий тут нужны для большей выразительности описания происходящего, ИМХО, и ни для чего более)
Изначально у элементов этой техники никаких ролей нет (т.е. даже просто пытаться придумывать роли сущностей в отрыве от конкретных задач было ошибкой), а есть просто трюк косвенности (в общем случае — ассоциативной памяти) и перебор получаемых на модели ассоциативной памяти бесконечной комбинаторики эффектов.
Разумеется, это несколько отличается от привычного, "более линейного" программирования, что автору показалось, что он изобрёл новую парадигму.
Не изобрел.
Ассоциативный доступ к данным и подпрограммам — ключевые низкоуровневые технологии современного ПО.
В ООП это виртуальные ф-ии, инкапсулированные в объекты данные, в ФП это абстрактная сигнатура ф-ии, которая также может захватывать в лямбду данные и т.д. до бесконечности, вплоть до банальных адресов обработчиков пронумерованных прерываний в таблице их в программе на асме или си.
Отличие его подхода от классического в том, что подобное "конфигурирование" программы в классике происходит редко (часто вовсе однократно при запуске), вместо чего автор предлагает эксплуатировать подход бесконечного реконфигурирования программы в качестве ключевого этапа работы программы, а не вспомогательного, как оно чаще есть сейчас.
Здравствуйте, Холодный, Вы писали:
Х>Работа предложенной машины можно представить алгоритмом только по выполнению какой-то ветки где порядок определен последовательностью подписок событий оказавшимися истинными по факту выполнения.
Собятия/подписка и т.д. — это уже более высокоуровневые сущности архитектурного плана, не обязательно было называть их именно так, ведь раздача ролей в некотором роде сужает область оперирования.
В основе лежит тот или иной метод абстракции подпрограмм+данных, плюс доступ к этим абстракциям через какой-нибудь способ ассоциации (в ООП через адрес объекта, в ФП через пару — {указатель_на_функцию, указатель_на_захваченные_данные}.
Здравствуйте, Nuzhny, Вы писали:
N>Ты говорил: Х>>Я предлагаю общее решение для широкого класса задач, а не эксклюзивные процессоры N>И это подтверждает, что решение для широкого класса задач, во-первых, теоретически, а во-вторых, уже и практически.
+100500
10 лет назад, когда он впервые распинался об этом же, мы тоже так и не увидели примеров решений популярных программистских задач с использованием этой парадигмы, с обязательным сравнительным анализом.
Для этого необходимо было бы придумать соотв. язык программирования или библиотечную реализацию к имеющемуся, решить на этом языке сотни программистских задач от низкого до высокго уровней, сделать комплексные замеры — производительность, уровни сцепки-связанности архитектурных вещей и даже оценки пресловутого "синтаксического оверхеда".
Но ничего так и не было. Зеро.
Отношение к автору посему случилось понятно какое.
Х>Машина Кузьмина. (Управляемая недетерминированная машина Тьюринга.)
Сначала прочитай книжку Прикладные нечеткие системы
Там японцы еще в конце 1989 года описали конструкцию нечеткого компьютера
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
LVV>>Подучиться бы тебе надо... Х>Текст прочитал?
И еще раз тебе советую: прочитай книжку Прикладные нечеткие системы японских авторов...
нечеткие, а не нечетные...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
LVV>И еще раз тебе советую: прочитай книжку Прикладные нечеткие системы японских авторов... LVV>нечеткие, а не нечетные...
Странный ты парень. Ты что считаешь что я гуглом не умею пользоваться? Тем более, ты и ссылку дал. Конечно, посмотрел сразу. Я ж ответил что тема не о том. Я на буквы и внимания не обратил. А вот ты таки не въехал.
Чисто для затравки. Тьюринг своей машиной хотел формализовать алгоритмы, а формализовал нечто большее. https://ru.wikipedia.org/wiki/Алгоритм
Моя машина формализует А-ритмы. Фишка в том, что в общем случае, порядок не гарантирован. И работает на многопроцессорных машинах с несколькими шинами доступа. Для автоматики ИИ это, самое то.
LVV>>И еще раз тебе советую: прочитай книжку Прикладные нечеткие системы японских авторов... LVV>>нечеткие, а не нечетные... Х> Странный ты парень. Ты что считаешь что я гуглом не умею пользоваться? Тем более, ты и ссылку дал. Конечно, посмотрел сразу. Я ж ответил что тема не о том. Я на буквы и внимания не обратил. А вот ты таки не въехал.
Если что, то
а) я ИИ преподавал в 90-хи в начале 2000-х...
б) японцы занимались разработкой архитектур ЭВМ для ИИ с 1981 года 10 лет. И в результате получили нечеткие системы.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
LVV>б) японцы занимались разработкой архитектур ЭВМ для ИИ с 1981 года 10 лет. И в результате получили нечеткие системы.
Я в курсе. Они тогда разрабатывали новую архитектуру "Управляемую потоком данных" Кстати, очень похоже на то, что я сделал.