DRAKON.SU

Текущее время: Четверг, 28 Март, 2024 18:31

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 242 ]  На страницу 1, 2, 3, 4, 5 ... 13  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 15 Июнь, 2020 19:45 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Начинать документ с темы роли и значении компьютерных технологий в современной жизни — это для всех очевидно, и мы не будем о банальном.

Начнем с проблем.

На заре становления цифровых технологий предрекалась революция в вычислениях и управлении устройствами.
Искусственный интеллект рассматривался как фантастика. Научных наработок в этом направлении еще не было.
Применение цифровых технологий для обработки данных даже не рассматривалось серьезно.

Не буду приводить знаменитое заблуждение Билла Гейтса по этому поводу. Реальность оказалась немного другой.

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

Искусственный интеллект занимается трансляцией, опознаванием и управляет транспортом.

А вот в моделировании устройств мы имеем огромный набор процессоров и эксклюзивных решений, и даже вроде бы элементарная (в смысле постановки задачи) проблема «умного дома» по-прежнему является чем-то из области фантастики.

Океан дорогостоящих предложений далек от рядового пользователя не только по цене, но и по сложности применения и потому не имеет массового клиента.

В чем причина подобной ситуации

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

А для работы с устройствами именно недетерминированность суть работы устройства и программирования. В реальном мире процессы и события происходят параллельно. Технологии давно готовы к конструированию многопроцессорных систем, однако системного решения для таких систем нет.

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

— архитектуру процессора,
—операционную систему,
— и язык программирования позволяющий реализовывать не детерминированную машину Тьюринга с параллельным выполнением.

Я разработал систему, язык, транслятор
и создал опытную партию железа.


Из любопытных отличий новой технологии:

1. Если свободна шина доступа к памяти, то нет необходимости в прерывании выполняющейся программы.
2. Отсутствие булевых переменных и оператора If.
3. Средства описания грамматик являются гармоничной частью языка, и транслятор разбирает множество языков шире регулярного.

С уважением, Михаил Кузьмин.
Для связи тел/Viber. 0961135437


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 15 Июнь, 2020 19:46 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Основные концепции

1. Пересмотрена и формализована вся система, архитектура процессора, язык программирования и технология программирования составляющее единое целое и основанная на базовых трех (трех) понятиях.

2. Синтаксис языка представлен одной (одной) формулой разбора, и включает в себя средства определения контекстно-свободных грамматик.

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

Реализован принцип – все есть концепт. И операторы тоже. С этой точки зрения парадигму можно назвать субъектно-ориентированной.

4. События определены как изменение состояния памяти высказыванием (выражением, понятием). Определение истинности высказывания является метафункцией относительно высказывания, потому может выполняться параллельно и не только императивно, но и методом логического разбора (как в Прологе).

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

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

Нечто похожее на прерывание по адресу концепта. Потому нет необходимости в операторе If и команд перехода.

Булевы переменные служат для хранения результата определения истинности высказывания. Так как у нас нет необходимости сохранять этот результат, то нет необходимости и в булевых переменных.

7. Загрузка, создание и удаление объектов, динамическая проверка типов параметров и семантический анализ протокола обмена осуществляется ВМ.

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

9. Управление системой универсально так как структура данных единая и содержание каждого контроллера легко визуализируется в виде текста, элементов управления, таблиц или в любом другом виде удобном для применения пользователем.

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

11. Smart-адресация позволяет адресоваться к объектам и его контенту при изменении их расположения (что происходит при удалении и создании новых объектов и подписок) и независимо даже от архитектуры процессора.

12. Удачная проработка системы занимает сейчас 14кб. И это с текстовыми хелпами и именами. Что позволяет устанавливать ее на контроллеры.

13. События можно рассматривать как персептроны, (где выражение в качестве функции активации), а подписки – синапсами. В таком представлении имеем нейронную сеть (ИИ) с интегрированным управлением устройствами.

14. Из особенностей языка-допускается наличие контента, не описанного в классе.

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

Пример. Вычисление наибольшего общего делителя НОД

Выражение Nod
Integer Nod a ~ b? { ‘Создаем группу из 2-х подписок
> {a=a-b Nod} ‘Подписка на событие>. Вычитание и переход на выражение Nod
<{a=b-a Nod} ‘Подписка на событие <. Вычитание и переход на выражение Nod
}
При адресации выражения Nod выполняется сравнение а и b (операция «~»), и затем проверяется группа подписок
(Знак «?») на события > и <, после чего запускаются соответствующие реакции на эти события.

Реакции заключаются в вычитании из большего значения меньшего и адресация самого себя (Nod) для повторения процесса сравнения. Если ни одно событие не выполнилось, то вычисления прекращаются.

Работа нижнего уровня

Нижний уровень это универсальный контроллер с физическими датчиками, интерфейсами и исполнительными устройствами, называемые в разных источниках «конечными устройствами», «Контроллерами» «Платами» и т.п.

В моей терминологии это элементы комплекта (в комплект входит до 16 элементов комплекта).

При таком подходе работа с нижним уровнем выполняется так:

1. Загрузка системы (System), которая описывает формат концептов, виртуальной машины выполняющей арифметические команды и диспетчера событий запускающий подписки на события при адресации к концепту.

2. Загрузка классов устройств, интерфейсов и автоматов для предполагаемых объектов.

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

4. Подключение устройств к интерфейсам (с помощью механизма подписок) и создание автоматов.

Таким образом, созданное устройство является «черным ящиком» и взаимодействует с другими «черными ящиками» исключительно с помощью подписок на события.

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 15 Июнь, 2020 19:55 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
О себе

Закончил мехмат Харьковского университета.
Работал руководителем группы программистов над проектом "кипарис". Старт и техничка многоразового корабля Буран.

Затем бизнес и прочие дела. Подробности на фейсбуке https://www.facebook.com/profile.php?id=100000999797422

Затем бросил бизнес и лет 20 занимаюсь разработкой своей системы и языка.

По состоянию на сегодняшний день разработка идеально подходит для систем автоматизации.

Подробности потихоньку буду здесь рассказывать и отвечать на вопросы..

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 16 Июнь, 2020 19:55 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Михаил Кузьмин писал(а):
Системное решение подразумевает:

— архитектуру процессора,
—операционную систему,
— и язык программирования позволяющий реализовывать не детерминированную машину Тьюринга с параллельным выполнением.

Я разработал систему, язык, транслятор
и создал опытную партию железа.

Михаил, правильно ли я понял, что вы разработали и предлагаете для обсуждения четыре вещи:

1. новую архитектуру процессора, то есть новый тип компьютера;
2. новую операционную систему для нового типа компьютера;
3. новый язык программирования;
4. новый компилятор для нового языка программирования.

Верно ли я понял, что эти четыре вещи составляют "новую систему с языком и новыми принципами"?

Если верно, то сколько вы предлагаете "новых принципов"?
Желательно перечислить все "новые принципы".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 16 Июнь, 2020 20:21 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Правильно поняли. Плюс к этому предлагается новая технология программирования и образ мышления. Это как бы не совсем даже программы, а описание объектов и их взаимодействие. Причем это две раздельные вещи. По этой причине управление, заключающееся в определении взаимодействия может выполняться оперативно и удаленно. А сами объекты обладают свойством иммутабельности в смысле их независимости описания и, следовательно, двоичного кода от изменения функционала.
Сори, приходится применять термины у которых новое содержание..
P.S. 1.Основные принципы я написал в предыдущем посте.
P.S. 2. Если вы ко мне, то меня Михаил зовут.
P.P.S Для практической и коммерческой реализации с новой архитектурой можно подождать. Современные контроллеры полны по Тьюрингу. Так что реализуются без проблем.. Разве что, эффект увеличения скорости будет заметен на многопроцессорных машинах.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 16 Июнь, 2020 21:31 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Выкладываю отзыв эксперта
Анонимный эксперт писал(а):
Не очень хочу давать публичный отзыв, человек 20 лет занимался, а я не особо вникал.

В меру моего понимания, он изобрёл что-то вроде ООП в стиле смолтолка, но ведь это уже давно сделано.

Язык без if-ов мне представляется совсем неинтересным. Он хорош для низкоуровневого программирования, но сверху обычно должны находиться абстракции, в числе которых - и if.

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

Т.е. важный вопрос - как организованы подписки и какие ограничения на них.

По поводу железа тоже не очень ясно - если там каждый "объект" реализован на отдельном чипе - то это в принципе интересно, хотя вопрос про количество подписок никуда не девается.

Как-то так. Хотя, честно сказать, прочитал в достаточной мере по диагонали.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 16 Июнь, 2020 22:06 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Михаил Кузьмин писал(а):
Правильно поняли. Плюс к этому предлагается новая технология программирования и образ мышления.

С учетом этого добавления
Михаил Ювенальевич Кузьмин разработал и предлагает для обсуждения шесть инноваций:

1. новую архитектуру процессора, то есть новый тип компьютера;
2. новую операционную систему для нового типа компьютера;
3. новый язык программирования;
4. новый компилятор для нового языка программирования;
5. новую технологию программирования для нового компьютера;
6. новый образ мышления при разработке программ для нового компьютера.

Михаил, я правильно изложил суть ваших предложений? Или нет?
Если да, то верно ли я понял, что эти шесть инноваций составляют "новую систему с языком и новыми принципами"?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 17 Июнь, 2020 06:55 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Оператор If теоретически обязательный для императивного программирования и входит в минимальный набор команд наряду с присвоением и прибавлением единицы.

Суть этого оператора в проверке состояния памяти и переходе в зависимости от этого состояния.

Проверка состояния ячейки это метаоперация и не изменяет состояние памяти. Потому и возможно конвейерное выполнение двух команд проверки и выполнения в процессорах,

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

Как видим, проверка высказывания на истинность и понятие "событие" имеет одинаковую природу.

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

Теперь очевидно, что сама проверка на выполнение события/событий (а, это выражение) может выполняться параллельно а переходы по подпискам множественны.

И это красиво, потому как реализует недетерминированную модель физического мира.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 17 Июнь, 2020 09:49 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Размышления на тему оператора If

Минимальный набор команд для реализации императивной парадигмы состоит из трех команд.

1. Присваивание 0.
2. Прибавление 1.
3. Условный переход.

Первые две команды это аксиомы арифметики Пеано. Как известно это полное определение арифметики. Смысл значениям арифметики придает уже человек.

Отсюда, вроде бы напрашивается вывод что императивность этому набору придает оператор If. Однако, при внимательном рассмотрении обнаруживаем что этот оператор управляет адресацией.

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

Это все управление адресацией и именно механизм адресации (совместно с командами) реализует императивную парадигму.

Программа представляет собой некую последовательность действий (команд) приводящая к результату. Никаких ограничений (кроме собственной привычки) нет к порядку выполнения этих команд.

Если вдуматься, то даже несколько странно, что от реального мира мы ждем такой простоты как последовательность.

Никаких причин (кроме легкости восприятия) для таких ограничений нет.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 17 Июнь, 2020 10:48 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Начнем с организации памяти

Конструируя новый компьютер, акцентируя внимание на слове «новый», разумно обратить внимание на то, что мы обычно называем компьютером. И, первая, самая сложная часть предмета обсуждения, это безусловно, процессор.

За его особые заслуги его вначале даже назвали «арифметико-логическим устройством». Выполнение арифметических операций очевидная задача, и она была решена достаточно быстро.

Имеется еще такая штука как память. Она наличествует и у человека, и даже как-то связана с интеллектом. С арифметикой интеллект связывают гораздо реже. Но, вопрос как пользоваться памятью актуальный и не только для человека.

Память компьютера представляется массивом бит разделенных для удобства адресации на ячейки фиксированного размера (8-16-32 бита) и работа процессора заключается в адресации ячеек памяти и выполнения каких-то манипуляций с ними.

Одни ячейки содержат команды, другие содержат данные с которыми работают команды. В общем ничего понятного если наблюдать на эту кашу бит со стороны.

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

Итак, попробуем вместе сочинить простые и единые правила организации всех данных с минимальным количеством понятий игнорируя семантический смысл.

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

1. Concept. –создание новой структуры данных (Концепта).
2. Token - единица размера памяти 4бита.
3. Group-объединение структур данных. В синтаксисе выражается скобками.

Так как создание будущей структуры придется создавать текстом, и так же текстом объяснять семантическое содержание остановимся на детальном назначении этих понятий.

Понятие "Concept" взято с потолка. Смысл этого понятия только в том, что с него начинается определение новых концептов.

Token - это единица размера памяти.

Что бы мы не создавали это созданное будет занимать место в памяти. Забудем временно за смыслы от слова совсем.

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

Даже более необходим, чем порядок! В слове порядок подразумевается что новое понятие может состоять из нескольких других.

Ограничивать себя в синтезе нового понятия из одного более чем странно. Стало быть необходимо иметь средства группирования.

Думаю что мало кого я удивлю, если предложу для группирования использовать скобки.

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

А пока продемонстрируем вариант создания концепта Byte с помощью только созданных правил и обсудим недостатки конструируемого синтаксиса.

Concept Byte {Token Token}

Здесь первое слово указывает на то, что мы что-то создаем. (имя класса) Далее идет имя создаваемого понятия и далее содержание данного понятия.

Байт это два токена. Думаю читатели обнаружат море недостатков. Мы их обсудим и исправим в дальнейших постах! Спасибо!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 17 Июнь, 2020 13:06 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Правила непосредственного группирования.
Применение скобок с непустым содержанием.
Хранение и доступ.


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

Все классы, реализующие группирование, наследуются от концепта Group. Концепты, содержащиеся в скобках, назовем содержимое группы, а каждый из них элементом группы.

Правила группирования являются базовыми понятиями системы и составляют основу синтаксиса языка.

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

В системе предусмотрено использование следующих скобок:
Круглые «(» и «)» и фигурные «{» и «}» скобки представляют собой группы классов List и Collection, реализующих объединение любых концептов с последовательным доступом.

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

Отличия в методе хранения отражены в названии этих классов. И понятно, что доступ к элементам Collection возможен как по индексу, так и по имени элемента группы.

Квадратные скобки «[» и «]» представляют концепт Array, реализующий объединение любых концептов с произвольным доступом (по индексу) и параллельным выполнением выполняемых концептов.

Текстовые скобки ««» и «»» представляют группу Text объединяющую текстовые концепты.

Именные скобки «"» представляют концепт Name. Группа аналогична классу Text только не допускает вложения и размер ограничен 16-ю элементами.

Применение скобок к единственному элементу может имеет цель отличную от группирования.
А именно:

1. Единственный концепт в текстовых скобках представляет собой именно сам концепт, игнорируя его синтаксический, семантический и функциональный смысл. Так мы получаем возможность использовать в тексте знаки форматирования (например, перевод строки) без опасения, что этот знак повлияет на форматирование.

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

3.Единственный концепт в круглых скобках (арифметическое выражение является одним концептом) не является группированием.

Скобки в таком случае лишь выделяет семантический смысл концепта, находящегося в скобках, такой как приоритет, либо просто удобство для чтения.

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

Выполнение групп

Концепты класса (List и Collection) имеют свойства Count, Min, Max, и методы Length, Add. Свойство Count является счетчиком элементов группы и принимает значение от 0 и выше.

Метод Length принимает значения от 1 и выше. При отсутствии элементов в группе Метод Length принимает значение Void.

Метод доступа к следующему элементу списка Next и обращение к элементу массива по индексу. Так же по индексу можно обращаться и к элементу списка.

Обратим внимание, что для группы концептов, определенных в непосредственно нельзя добавлять и удалять элементы группы.

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

Для успешного выполнения содержимого групп List и Collection необходимо успешное выполнение всех элементов группы (семантическое И).

Для понятий текстового типа (парсеры) счетчик в группе Collection изменяется с каждым успешным выполнением элемента группы, обеспечивая продолжение анализа понятий дальше по тексту.

Счетчик текста в группе List при успешном выполнении не изменяется обеспечивая проверку того же участка текста на соответствие всем понятиям в группе.

Успешное выполнение группы заключается в успешном выполнении содержимого группы >=Min и <=Max раз.

При значении Min=0 выполнение группы считается успешным даже если не было ни одного успешного выполнения содержимого.

Концепты класса Array имеют свойства Count, Min и методы Length, Add.

Для успешного выполнения содержимого групп Array необходимо успешное выполнение минимального (Min) количества элементов в группе (семантическое Или).

Мin в диапазоне 0-15.

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

Выполнение элемента группы в виртуальной машине (как и выполнение любого концепта) вызывает событие «!» перечислимого типа Boolean со значениями «!» и «¬».


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 17 Июнь, 2020 14:50 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Средства описания синтаксиса языка
содержатся в самом языке.

Полный синтаксис концепта


Define Concept {Заголовок {Атрибут}016 {Подписка }016 {Реализация}01}

К сожалению, здесь нет возможности применять подстрочные и надстрочные значения. Придется прокомментировать.

Понятия Атрибут и Подписка могут отсутствовать (0-подстрочное значение) или присутствовать до 16 раз (надстрочное значение 16) }

Define Заголовок = { «@» {Параметр}116}01 "Класс" "Имя" "Help“

Заголовок может содержать Параметр (до 16 штук) , за которым идет имя класса создаваемого концепта, имя создаваемого концепта и Help

Define Атрибут {"Имя атрибута" Выражение}
Т.е. Имя атрибута за которым следует значение этого атрибута.

Имя атрибута берется из класса концепта (класс Name) и потому может быть словом, знаками, параметром («@»), а так же пустым именем.
Атрибут параметр или пустое имя идет первым и имя не указывается.

Определение типа Float

Type Float { Token "=" {}8 #Значение..» }
Значения имеют один атрибут по имени "=".
Пример присваивания значения атрибуту по имени "=".
Float T=0

Здесь знак «=» это имя свойства содержащего значение, а не знак операции присваивания.

Define Реализация {«{» Concept «}» } – один или группа концептов реализующих определяемый класс. Т.е. для класса это динамический контент, для групп это содержимое группы или определение группы если скобки пустые и являются определением группы.

Транслятор выделяет лексемы цветом. К сожалению, подсвечивание цветом не передается в этом форуме.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 17 Июнь, 2020 21:50 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 234
Откуда: Украина, Киев
Михаил Кузьмин писал(а):
Выражение Nod
Integer Nod a ~ b? { ‘Создаем группу из 2-х подписок
> {a=a-b Nod} ‘Подписка на событие>. Вычитание и переход на выражение Nod
<{a=b-a Nod} ‘Подписка на событие <. Вычитание и переход на выражение Nod
}
Тут нет опечатки? Мне кажется, тут произойдёт зацикливание алгоритма


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 17 Июнь, 2020 23:14 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 133
Откуда: Киев
Он остановится на равенстве

Кстати, прошлогодний вариант примера, похоже, должен был зависать
Код:
Nod a ~ b→  > {a=a-b Nod}  Else {a=b-a Nod}


Последний раз редактировалось Comdiv Четверг, 18 Июнь, 2020 01:29, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 17 Июнь, 2020 23:17 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 133
Откуда: Киев
Где можно ознакомиться с транслятором и другими материалами?

Выглядит так, что нигде. Честно говоря, всё это выглядит как проявление некого расстройства. Но впечатление может быть и обманчивым.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 18 Июнь, 2020 06:13 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Спасибо за прошлогодний вариант. Мне кажется это было очень давно. Я ж работаю и постоянно идут изменения. Здесь я пишу последние результаты. Постепенно буду выкладывать продолжение. Расстраивает что не передает формат rtf и картинки не знаю как размещать. Если будет интерес, могу устроить конференцию в Zoom. Ибо всего не напишешь.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 18 Июнь, 2020 08:23 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Михаил Кузьмин писал(а):
картинки не знаю как размещать.

Картинки в формате png размещать можно.
При ответе посмотри (прокрути) чуть ниже
Цитата:
Если вы не хотите добавлять вложения, оставьте поля пустыми.
Имя файла Выберите файл Файл не выбран Добавить файл


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 18 Июнь, 2020 09:22 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
У меня с презентации картинки. Та, ладно. Надеюсь, тут умные ребята. Разберутся..


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 18 Июнь, 2020 11:27 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Я заметил что текст программ воспринимается с большим энтузиазмом, чем текст с принципами построения. Тогда пропустим философскую часть. И ближе к телу. Одна просьба. Не воспринимать текст программы как нечто подлежащее трансляции и выполнения, как привыкли. Текст программы это описание структуры концепта, а выполнение (или то, что называется выполнением) начинается при адресации либо концепта либо контента концепта. Адресация бывает 4 видов.
1. Просто адресация
2. Адресация для инициализации. Для создания концепта из адресуемого.
3. Адресация для чтения.
4. Адресация для записи.
Итак события.
Event {
":" #Адресация. Старт.» | Bit "¬" =0 #Инверсия события.»
"::" #Инициализация значения.» | Bit "¬" =0 #Инверсия события.»
"=:" #При чтении Read и перед записью..» |Bit "¬" =0 #Инверсия события.»
Before #Перед записью.» |Bit "¬" =0 #Инверсия события.»
Change #При изменении значения.» | Bit "¬" =0 #Инверсия события.»
":=" #Запись..» | Bit "¬" =0 #Инверсия события.»
Null #Равно 0.» | Bit "¬" =0 #Инверсия события.»
Negative #Меньше 0 .» |Bit "¬" =0 #Инверсия события.»
Positive #Больше 0.» |Bit "¬" =0 #Инверсия события.»
Четное #Четное» |Bit "¬" =0 #Инверсия события.»
"~" #Сравнение..» |Compare "=“ =0 #Значения сравнения из группы Compare .»
"!" #Успешное выполнение .» |Bit "¬" =0 #Инверсия события.»
"?" #Подписка..» |Bit "¬" =0 #Инверсия подписки.»
"*" # Define Понятие..» |Bit "¬" =0 #Инверсия понятия.»
}
Группа Compare
Token Compare {}=Token {"¬" =1 #Инверсия.»
"=“ =2 #Равно.»
“>“ =4 #Больше.»
"<" =8 #Меньше..»
"≠“ =3 #Не равно.»
"≤“ =5 #Меньше или равно.»
"≥“ =9 #Больше или равно.»
}

Типы свойств. Контент концепта.
Концепт кроме общих (экспресс-адреса, имени и хелпа) «Свойство» состоит из значения (Value) по имени "=" и, возможно, вложения.
В двоичном формате сначала идет байт экспресс-адреса, байт Def, определяющий наличие компонент свойства.
Первый токен байта Def. Второй токен (количество свойств концепта) для свойств отсутствует за ненадобностью. Все свойства имеют одно свойство «=».
0-й разряд-наличие подписок. 0- Отсутствие подписок, 1-Наличие
1-й разряд-наличие имени.
2-й разряд-наличие хелпа
3-й разряд-наличие вложения.
Свойства бывают следующих типов:
Свойства значения c инициированным значением.
Int16 Value=-20 # Атрибут. Без подписок"=" »
Свойства значения без инициированного значения. Где на месте значения храниться тип Void
Float Value # Атрибут. Подписка на событие инициирование в руках пользователя.»
Свойства значения с инициализацией при создании. Событие инициализации «::»
Float Value : 2*(a+b) # Атрибут. Подписка на событие инициализации «:»
Свойства методы. (чтение) Вычислимые. При адресации вычисленное значение заносится в стек.
Float Value =: 2*(a+b) # Атрибут. Подписка на событие Read“=:" »
Свойства методы (запись). Вычисленное значение заносится в Value. И оттуда читается.
@ Float X Float Value := 2*X # Атрибут. Подписка на событие Write“:=" »
Свойства-события. Имеет перечислимое значение группы событий Event. Индекс определяемого события. Результат доступен только для чтения булевого значения состояния определяемого событием.
@ Integer X > More : A ~ X # По событию адресации выполняется операция сравнения
.
Свойства-группы. Представляет собой группу концептов к которым передается адресация.
Byte A {} = (1, 5, 7, 35)
Группа событий:
@ Float X , Y) Event Select {} |
Event{ More Cmp (X, Y) >
Less Cmp (X, Y) <
Eq Cmp (X, Y) =
}
На адресации происходит чтение кода класса (Экспресс-адрес) 1 байт.
Затем считывается код Def с битами состава концепта, где один из них признак наличия подписок. При наличии подписок на событие происходит переход выполнение этой подписки. Подписки формируются при трансляции.
Еще одно замечание. С именами и знаками я постоянно занимаюсь с целью улучшения синтаксиса, потому не обращать внимания на ошибки. Старая версия может не совпадать с текущей на сегодняшний день.
И вот пример класса счетчика электроэнергии..Хотелось бы объяснить как работает, но надеюсь тут сообразительный народ И в курсе как он работает.. Т.е. по каждому тику таймера считывается значение напряжения и тока, суммируются и по истечению какого-то периода считается интеграл произведения тока и напряжения и формирует значение энергии Затем обнуляются счетчики. И продолжается счет.

@ Byte (Interval, Count) Class ElectricMeter #Класс с параметрами времени в миллисекундах и счетчик суммирования»
:: | {Timer T (Interval) ! | { Tick Timer.Start Counter=Count} # Создание таймера, создание подписки, сохранение счетчика при инициализации.»
{ ‘ Создание свойств
Byte Counter :: Count #Количество тиков таймера до секунды при инициализации»
:= | Counter -=1 #Ведем счетчик. При каждой записи вычитаем 1»
Null | {Counter =Count) Value =(Voltage/Counter)* (Electricity/Counter)} #При событии 0, формируем счет и восстанавливаем значение счетчика. Как произведение средних значений тока и напряжения.»
‘ Накапливаем значение тока и напряжения
Float { Voltage := | @( Float X ) Voltage += X # Суммирование значения при событии Write»
=: | Voltage =0 # При чтении обнуляем счет.»
, Electricity := | @( Float X ) Electricity + =X # Суммирование значения при событии Write»
, Value=0 := | @( Float X ) Value+ X #Значение счетчика наращиваем при записи».
)
‘ По каждому тику ведем счетчик, читаем значение тока и напряжения по физическому адресу и суммируем
Void Tick : | Counter (1) Voltage( Read “vvvv”) Electricity (Read “eeee”)

)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 18 Июнь, 2020 11:33 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Прикрепил файл отдельно. Сори. Расширение pptx не прикрепляется


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 242 ]  На страницу 1, 2, 3, 4, 5 ... 13  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB