Недетерминированная машина. Архитектура будущего.
От: Холодный Украина  
Дата: 24.07.22 06:58
Оценка: 18 (2) :)))
Решил написать по быстрому. Для обсуждения и т.д. Ибо забанят. Могу добавить что есть куча материала. Система, новый язык программирования (хотя это слово не подходит). Ибо получившееся даже не алгоритмы. Ну, и транслятор с нового языка. Кому интересно можете писать на почту, Скайп 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

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

Определение событий адресации. Класс |.

{"|" 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, что в свою очередь запускает подписку соответствующую результату сравнения. Чем запускает первый шаг алгоритма Евклида.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.