DRAKON.SU

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

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




Начать новую тему Ответить на тему  [ Сообщений: 242 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 13  След.
Автор Сообщение
СообщениеДобавлено: Четверг, 25 Июнь, 2020 18:52 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
6

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

Сами события являются понятийными конструкциями и формулирование задачи в терминах событий мы решаем все проблемы программирования.
...
Команды выполняются не подряд. Если в какой-то момент необходимо проверить исполнение какого-то события достаточно к нему адресоваться. Хранить состояние нет необходимости. Кроме того есть еще интересная технология работы с перечислимыми концептами ( в том числе и событиями) Получается нечто типа оператора Select Case. Но мы до этого еще не дошли.

Всё же, не хватает шага к таинственному оператору "Select Case". Пока впечатление, что предлагаемая "системная архитектура", скорее, для программирования/моделирования "инвертированного" ("разорванного") управления. Вроде бы, какой-то потенциал есть, но не ясно какой...


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

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Прежде всего хочу поблагодарить за вопросы. Очень интересные. Прошу прощения, за то, что не знаком с терминологией Дракона. Была ссылка на определения понятий алгоритм и события. Я бы предложил другие определения. Но, вопросы серьезные и надо прочитать материал и хорошо продумать. А у меня завтра день рождения. Сейчас я уже устал. На первый вопрос могу ответить завтра утром. Часов в 6 встану и займусь.. А остальное очень медленно, пока изучу рекомендованные определения. Могу сказать что меня заставило задуматься. Это типичная ошибка из-за которой возникают теоретические проблемы с синхронизацией процессов которых реально нет. Не надо в определении алгоритма и событий привязываться ко времени. Время (вернее интервал) тоже событие. А алгоритм это последовательность выполнения определенная подписками на события. В такой формулировке нет проблем с синхронизацией. Правда алгоритм становится отвязанным от времени. Но, оставаясь последовательностью. Где-то так.. Но надо продумать. Чем я и займусь.. Еще раз спасибо.. Кто захочет поздравить хотя б на бутылку плиз сюда принимаю поздравления. Украина Приват 24. 5168 7573 8912 8234
Всем спасибо!


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

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Какой хороший разговор затеялся. Очень раз. Обещал ответить утром. Выполняю. Не все продумал. Но, к определениям здесь viewtopic.php?f=170&t=6063&start=60#p101337 есть замечания. И серьезные.

Как я уже сказал, не надо привязываться ко времени. Время тоже события. Определение алгоритма как последовательности я поддерживаю. Вопрос только что понимать под последовательностью. Ибо в многопроцесорных системах, да и в реальной жизни процессы происходят (это ключевое слово) параллельно. И заметно отождествление того что мы пишем и называем программой с тем, что происходит в реальной жизни. Потому и слово последовательность надо понимать как-то по другому. Я смею предположить что эта последовательность виртуальная. Т.е. на каком то участке она такая как задумывалось, а глобально отнюдь. Потому и говорю о недетерминированности. Еще раз подчеркну, что то, что мы пишем это одно, а то, чем мы управляем это другое. То, что мы называем процессом при разработке и написании программы ( к этому слову я б тоже относился осторожно) и то, что происходит в реальной жизни это разные процессы. Надо бы поговорить. Может таки конференцию устроить? Но, я на базар и мабуть сегодня уже не появлюсь. С днем рождения меня)) Всем спасибо! Хорошее обсуждение назревает.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 26 Июнь, 2020 07:54 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1356
Михаил, с Днем рождения!


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

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Добрый день форуму! Спасибо за поздравления. Вернемся к нашим баранам. А лучше еще раньше.

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

Новая парадигма

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

Я смею утверждать, что это гораздо проще, чем писать программы.

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

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

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

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

Т.е. события Key Up и Key down это не что иное как равенство нулю или его отрицание какого-то значения на ножке микросхемы или какой-то ячейки памяти.

Высказывание "Снег белый" не что иное как выражение сравнивающее какой-то атрибут со значением цвета снега на его "Белость". И соответствующее понятие "Снег белый" не что иное как событие определяющее истинность данного выражения.

Хороший вопрос был по запутанности когда и как все это происходит и как связано с транслятором и работой.

Транслятор создает концепты с соответствующими подписками на событий которые нас интересуют в каком-то смысле. Работа начинается с адресации этого концепта.

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

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

Т.е. подписка это определения наличия интереса к соответствующему событию, а адресация-актуализация и реализация этой заинтересованности.

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

Что из этого можно назвать "исполняемым кодом" решайте сами.


Последний раз редактировалось Михаил Кузьмин Воскресенье, 28 Июнь, 2020 11:27, всего редактировалось 1 раз.

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

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

‘ Определим операцию возведения в степень следующими понятиями-событиями (*) Positive и Negative.

@ (Type Op1, Integer OP2) Operation "^" { *{Positive [Четное Op2 Positive Op1]
Negative {Negative Op1 Четное ¬ Op2}
} ‘Конец определения понятий
} ‘Конец определения операции "^"

Суть этого примера в определении понятий Positive и Negative без фактического вычисления степени, на основе состояний параметров выполнив логический разбор как в Прологе.

Используя этот метод становится решаемой следующая задача определения события Positive (I ^ Y) без непосредственного вычисления при следующих значениях
Integer (I=-50000, Y=108) 

Что тут называть исполняемым кодом, я тоже не скажу. Скажу только, что это "выполнение" тоже допускает распараллеливание.


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

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Перечислимые типы (Switch)
Определим группу Weekdays значений типа Token
Token Weekdays [SA=0 SU = 0 MO =1 TU=2 WE=3 TH=4 FR=5] #SA и SU имеют значение 0.»
Обращение к элементам массива возможно по имени и по индексу

Token T = Weekdays.SA # Обращение по имени элемента массива»
Token T Weekdays[1] # Обращение по индексу.»

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

Weekdays Day=SU # Присвоение индексов. Day=1»
Token A = Day # Присвоение значений. A=0»

Как видим, в перечислимых типах имя элемента массива является значением-индексом. Концепт с пустым именем определяет индекс концепта по умолчанию.
Логический тип Boolean определяется как следующая группа из двух элементов:

Bit Boolean ["!" =0 "¬" =1]
Имеющая значения 0 и 1 к которым можно обращаться по именам «!» и «¬», представляющих уже 0 и 1 как индексы.
И теперь определяем переменные F и T типа Boolean и присваиваем им значения.

Boolean T =! # Определение переменной T со значением 0 (True).»
Boolean F=¬ # Определение переменной F со значением F (False).»
T=F # Присвоение переменной T значения переменной F. »
Тип Text представляет собой группу переключателей группы Marks концептов-знаков с именами –знаками.

Marks Text()
В непосредственном определении в синтаксисе Text определяется текстовыми скобками.
Т.е. Буква определяется как объект со свойствами его класса. Ссылка на группу букв создает Алфавит, в котором каждый объект имеет свой индекс в группе. Такой подход решает вопрос что такое буква.Значение или объект. Т.е. конечно, объект, и индекс обозначает расположение этого объекта в алфавите.


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

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

Определим группу событий Event SW( S1, S2, S3, …. Sn)
И группу операторов V( V1, V2, V3,…,VN) SW
После закрывающей скобки которой подстрочный адрес группы событий (т.е. переключатель)
Тогда при адресации группы операторов (V), произойдет определение правила выполнения групп, и если подстрочное значение имеет тип Switch) то выполняется оператор с индексом этого значения. При чтении адреса SW происходит адресация к группе событий, которая возвращает первый индекс выполнившегося события (выполнение группы событий). Таким образом выполниться только тот оператор который соответствует индексу истинного события.


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

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 234
Откуда: Украина, Киев
Вполне возможно, что вы не на том форуме изначально разместили свои предложения.
На форуме OberonCore побольше функциональщиков наберётся


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

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Ярослав Романченко писал(а):
Вполне возможно, что вы не на том форуме изначально разместили свои предложения.
На форуме OberonCore побольше функциональщиков наберётся

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


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

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1356
Михаил, хотелось бы понять и освоить ваши идеи и принципы.

Пожалуйста сделайте тему с описанием терминов: ваших, новых и старых с измененной трактовкой.
Вы часто упоминаете связь с Драконом, так используйте Дракон.


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

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

Пожалуйста сделайте тему с описанием терминов: ваших, новых и старых с измененной трактовкой.
Вы часто упоминаете связь с Драконом, так используйте Дракон.


Основные идеи изложены в начале. Там есть и отношение к терминам. Базовых 3. На их основе строится вся система.

Полное описание старой системы формализовано в файле System.rtf. (отправил вместе с транслятором)

Полного описания новой системы еще нет. Работаю. Надеюсь на Вашу помощь.

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

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


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

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1356
Непонятные термины:
подписка,
концепт,
группа,
события,
специальные символы (какие и как используются) и т.д..

Какое наименование имеет Ваша "новая система"?
Расскажите о предыстории "новой системы".

Неясна цель и новизна новых принципов. Для чего и кому предлагается?

Насколько используется русский язык?
Пользователей русского языка в программировании существует большое сообщество языка 1С.

Михаил Кузьмин писал(а):
Связь с Драконом в графическом представлении.
О Драконе можно меньше говорить, а больше рисовать и показывать.
Изобразите в Драконе свои идеи, принципы и применение "новой системы".


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

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
LKom писал(а):
Непонятные термины:
подписка,
Цитата:
Концепт на который выполняется адресация при истинности события. Определяется выполнением машины.

концепт,
Цитата:
Элемент бога. 1-й концепт определяющий все остальное.

группа,
Цитата:
Все виды групп перечислены в файле System.rtf. Создание концептов групп в синтаксисе определяется скобками. Здесь в начала полностью описан и синтаксис и выполнение групп.

события,
Цитата:
в файле System.rtf старые события. Новые тоже приводил перед описанием электросчетчика.

специальные символы (какие и как используются) и т.д..
Цитата:
Применение символов полностью определяется при определении класса концепта. Это имена свойств. Синтаксис полностью приведен. (символы могут быть именами)


Неясна цель и новизна новых принципов. Для чего и кому предлагается?
Цитата:
Цель построить полностью формализованную и эффективную систему с интегрированным языком и архитектурой компьютера как единое целое с минимумом определений (аксиом). Просто предлагается. Могу только сказать что применение в автоматике и умных домах реально даст возможности недостижимые в императивной парадигме. Не знаю кому. Кто заинтересуется вот тот и заинтересуется.


Насколько используется русский язык? Язык не принципиален. Unicod предполагается.. Тем более, размеры системы и контроллера вполне допускают.
Пользователей русского языка в программировании существует большое сообщество языка 1С.

О Драконе можно меньше говорить, а больше рисовать и показывать.

Ну, да.. Здесь можно и рисовать и не рисовать. За возможности управления и интеграции я еще не начинал рассказывать.. А есть и что показывать.
P.S. Программы на моем языке можно даже не рисовать. Если в контроллере есть объект термометр, а где-то лампочка или реле можно удаленно создать подписку на событие что б от него адресоваться к необходимому объекту. Т.е. можно изменять функционал вообще не программируя с сайта или с мобилки..


Последний раз редактировалось Михаил Кузьмин Вторник, 30 Июнь, 2020 19:20, всего редактировалось 2 раз(а).

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

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


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

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
Михаил Кузьмин писал(а):
Прошу прощения, за то, что не знаком с терминологией Дракона. Была ссылка на определения понятий алгоритм и события.

По ссылке терминология не Дракон-а, а теоретической информатики в изложении Г.Н. Зверева
Михаил Кузьмин писал(а):
Как я уже сказал, не надо привязываться ко времени. Время тоже события. Определение алгоритма как последовательности я поддерживаю. Вопрос только что понимать под последовательностью. Ибо в многопроцесорных системах, да и в реальной жизни процессы происходят (это ключевое слово) параллельно. И заметно отождествление того что мы пишем и называем программой с тем, что происходит в реальной жизни. Потому и слово последовательность надо понимать как-то по другому. Я смею предположить что эта последовательность виртуальная.

Там предельное межпредметное обобщение, время задействовано лишь для обозначения упорядоченности:
Цитата:
В наиболее общем виде понятие процесса определяется как упорядоченная во
времени последовательность состояний, событий, действий,
взаимообусловленных причинными и целевыми связями прообъектов системы
и внешнего окружения. Последовательность есть линейно
упорядоченное множество прообъектов, которые можно занумеровать целыми или
натуральными числами в соответствии с текущими моментами времени
так, что если номер п > m, то время Tn >= Tm.


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

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
Михаил Кузьмин писал(а):
Теперь о связи событий и понятий. Как уже было определено событие это изменение состояния. Этих изменений всего 16 классов с именами нового состояния. Все остальные события создаются как концепты одного из этих классов над выражениями.
[...]
Хороший вопрос был по запутанности когда и как все это происходит и как связано с транслятором и работой.

Транслятор создает концепты с соответствующими подписками на событий которые нас интересуют в каком-то смысле. Работа начинается с адресации этого концепта.

Как уже рассказывалось, адресация начинается с проверки наличия подписок и проверки выражений. Если подписки есть, то происходит анализ выражения и если оно истинно, то осуществляется переход по подписке. [...]

Вы регулярно повторяетесь в своих обширных изложениях, но семантику некоего "исчисления событий" так и не представили.
Михаил Кузьмин писал(а):
Я жду когда будут вопросы по счетчику электричества. Не все сразу надо вываливать. Постепенно ввожу к новому образу мышления.

Попробуем активировать (или "адресовать" ?) нужное "событие" (к тому же представленный транслятор также "молчит", лишь выдает окошко с исключительной ситуацией).

Исходный вариант примера про счётчик:
Код:
@ 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”)

)

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

"Протокол о намерениях" выше, вероятно, некорректный, моделировать приходится по аналогии. Ранее было указано про отсутствие функций/процедур, однако наблюдаются какие-то "концепты" как Read (с "аргументами", что ли), аналогично допускаем тогда существование каких-то Trunc (обрезка или округление вещественных), Rand (генерация случайного значения из диапазона), Log (запись данных куда-то).
Итак, пусть где-то будет осуществлена "адресация" (или какой необходим термин ?) концепта ElectricMeter, например, также как создаются/адресуются выше объекты Counter, Voltage и т.п. -- в виде аля "ElectricMeter Meter (..., ...)" (или как ?). Наблюдаются "подписки" на инициализацию в разном виде различных элементов. Как должен действовать транслятор в след. ситуациях?

В начале тела ElectricMeter перед скобками "{ ‘ Создание свойств ...)" определено событие "::" ("инициализация"), видимо, отсюда начинается "пляска". Выражение "{Timer T (Interval) ! | { Tick Timer.Start Counter=Count}", вероятно, означает "адресовать/инициализировать" концепт класса Timer, в случае успеха (подписка на "!") инициализировать и запустить Tick. Что должно быть в случае неуспеха -- исключение/аварийный останов и т.п. или ничего, т.е. события "!" нет, и чтобы как-то отреагировать на проблему необходимо каким-то способом подписываться на событие "инверсия !" или "инверсия инициализации"? Если после выполнения "Tick Timer.Start" произойдёт "тик" до того как будет завершена инициализация "экземпляра класса" (до отработки всех инициализаторов), будет ли реакция на событие "Tick: ..." (при неполной инициализации концепта ElectricMeter) или нет (возможные тики будут "потеряны" до конца отработки всех инициализаторов или до конца исполнения/интерпретации зоны "{ ‘ Создание свойств ...)")?
В выражении "Timer T2 (Interval*Factor)" есть обращение (адресация ?) к концепту Factor, имеющий свой инициализатор "Factor=..." (по аналогии с "Value=0" в оригинальном примере), однако заданный где-то там, далее в зоне "{ ‘ Создание свойств ...)". В этом случае значение Factor при вычислении "Interval*Factor" уже будет предварительно инициализировано или неопределенным/случайным? Или так вообще нельзя "выражаться"?
Для концептов Voltage, Electricity не заданы инициализаторы (нет ни события "::", ни установки свойства "=" -- как-то так ведь необходимо интерпретировать выражение вида "Value=0" ?). В этом случае начальное значение как-то задаётся неявно по умолчанию (напр., заполнение нулём) и когда именно или является неопределенным (или как осуществляется "суммирование" в дальнейшем)?

В выражении "{ Tick Timer.Start Counter=Count}" часть "Counter=Count", видимо, следует понимать как установка свойства "=". В то же время для Counter определен и иной инициализатор в виде события "Counter ::". Два раза выполняется вычисление? В оригинальном примере содержание двух инициализаторов одинаковое ("адресация" Count), во втором -- нет, какое значение в итоге в этом случае?

Для Counter определено событие ":=" ("запись", с реакцией "уменьшение на 1"). В выражении при событии Null:
Null | {Counter =Count) Value = ...Counter...}

в первой части определена установка "Counter =Count". Далее (последовательно, вроде бы, согласно "правилам групп") при установке "Value = ..." применяется Counter, по контексту теперь Counter должен реально содержать Count, иначе нет смысла вычислять Value. Следовательно, тогда события возникают "мгновенно при адресации концепта". Возникает ли и событие ":=" при установке "Counter =Count" (т.е. установили Counter в Count и сразу же возникла реакция "Counter -=1", и далее при вычислении "Value = ...Counter..." значение Counter уже уменьшенное на 1, и смотреть на предыдущую запись "Counter =Count" уже нет смысла)? Если нет, то когда возникают события ":="? Лишь только в выражениях вида "Counter (1)" (в обработчике "Tick : ...")? Чем такое выражение семантически отличается от прочих операций-уставок? Происходит ли событие ":=" при "исполнении" выражений инициализации "{ Tick Timer.Start Counter=Count}" и "Byte Counter :: ..."? Если нет, то почему? Если да, то в каком порядке?
Если при исполнении "Counter =Count" во время реакции на Null значение Count равно 0, и следовательно Counter приобретает значение 0, происходит ли новая реакция на событие Null и в каком порядке (по отношению к предыдущей реакции)? Как связана такая возможная реакция с событием ":="?
Возможно ли две и более подписки на событие Null концепта Counter как во втором примере или такие конструкции недопустимы? Если "норм", то их порядок, видимо, последовательный, однако как две подписки отработают во всех перечисленных случаях выше (какое актуальное состояние Counter будет в каждой возможной реакции в отношение вероятных повторов события Null и возникновения смежного ":=")?

Когда и как выполняются события "=:" (при "чтении")? Принцип един -- "мгновенно при адресации концепта"? Во втором примере расчёт Value задан иначе:
Null | {Counter =Count) Value =(Voltage/Counter)* (Electricity/Counter*Factor) + Voltage*Factor}

Для концептов Voltage и Factor заданы реакции на событие "=:", изменяющие соответствующие значения. В выражении "Value = ..." выше по два раза "читаются" Voltage и Factor. При каком-то чтении значения этих концептов изменятся и в каком порядке? Или же как-то фиксируется, что ли, событие Null и при выполнении всей подписки, а точнее двух в данном случае, любое обращение к концептам интерпретируется как условно одно чтение? Или для каждой подписки на Null (в целом любого события) своя отдельная фиксация?

Концепты Counter и Value имеют инициализаторы:
Byte Counter :: Trunc(Factor*Count)
Value=Factor*0.0234

В двух случаях есть "адресация" к Factor, со своей инициализацией:
Factor=Interval/Counter

Такие ссылки, как минимум в инициализаторах, допустимы? В каком порядке будут отработаны выражения (и когда именно в разрезе всего концепта ElectricMeter)? Будет ли два раза (или более) "инициализирован" Factor?
Инициализация Factor "адресуется" к концепту Counter -- возникает "рекурсивная адресация", что ли. Такие конструкции валидны или транслятор должен отбросить модель? Если транслятор пропускает, что возникает при исполнении/интерпретации -- зацикливание, аварийный останов или ничего? В последнем случае необходимы какие-то подписки на "инверсию успешного выполнения/инициализации" или что может быть использовано для "подписки" (какой-то сигнализации и реакции) на проблему?

Как работают реакции на "Tick : ..." и "Tick2 : ... " -- если во время отработки какого-то события возникает иной тик, то будет ли прерываться исходная работа, что происходит с состоянием всего концепта ElectricMeter, с диспетчеризацией событий и пр.?

В общем, как в целом понимать некий клубок "адресаций", какой должен быть образ мышления?

P.S. Заниматься виртуальным отладчиком на форуме утомительно, однако...


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

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
PSV100 писал(а):
Там предельное межпредметное обобщение, время задействовано лишь для обозначения упорядоченности:
Цитата:
В наиболее общем виде понятие процесса определяется как упорядоченная во
времени последовательность состояний, событий, действий,
взаимообусловленных причинными и целевыми связями прообъектов системы
и внешнего окружения. Последовательность есть линейно
упорядоченное множество прообъектов, которые можно занумеровать целыми или
натуральными числами в соответствии с текущими моментами времени
так, что если номер п > m, то время Tn >= Tm.

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


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

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
PSV100 писал(а):
Попробуем активировать (или "адресовать" ?) нужное "событие" (к тому же представленный транслятор также "молчит", лишь выдает окошко с исключительной ситуацией)..


Этот транслятор старая версия. Новые программы на нем не оттранслируются.
PSV100 писал(а):
Освоить такой формальный язык быстро непросто неподготовленному. Неясно, например, непарное сочетание скобок вида "{..)" в выражениях аля "Null | {Counter =Count)...}", "Float {...)" и пр. является целенаправленным и что-то означает (по аналогии с "#...»") или это просто опечатки (здесь на форуме лучше использовать теги для "кода", в этом случае при отображении применяется моноширинный шрифт и сохраняются отступы).
Опечатки. Спасибо. И еще раз многократно извиняюсь и искренне благодарен за ваш труд с разбором. Язык простой. Там же одна формула. Надо только жестко к нему привыкнуть..


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

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
PSV100 писал(а):
В начале тела ElectricMeter перед скобками "{ ‘ Создание свойств ...)" определено событие "::" ("инициализация"), видимо, отсюда начинается "пляска". Выражение "{Timer T (Interval) ! | { Tick Timer.Start Counter=Count}", вероятно, означает "адресовать/инициализировать" концепт класса Timer, в случае успеха (подписка на "!") инициализировать и запустить Tick. Что должно быть в случае неуспеха -- исключение/аварийный останов и т.п. или ничего, т.е. события "!" нет, и чтобы как-то отреагировать на проблему необходимо каким-то способом подписываться на событие "инверсия !" или "инверсия инициализации"? Если после выполнения "Tick Timer.Start" произойдёт "тик" до того как будет завершена инициализация "экземпляра класса" (до отработки всех инициализаторов), будет ли реакция на событие "Tick: ..." (при неполной инициализации концепта ElectricMeter) или нет (возможные тики будут "потеряны" до конца отработки всех инициализаторов или до конца исполнения/интерпретации зоны "{ ‘ Создание свойств ...)")

Адресация с инициализацией осуществляется для создания объекта из класса.
Подписка на событие инициализации осуществляет специфические для конкретного класса действия. В нашем случае при создании нового объекта класса ElectricMeter произойдет запуск таймера. Так как это объект, то он должен создаться (Timer T (Interval)) и потому мы на всякий случай тормозим запуск этого таймера пока операция не выполниться. Что б не запустить Start таймера до того как объект создался.. И делаем это после события !. Сохранение значения счетчика типичная операция ибо в одной переменной идет счет, а во второй хранится значение. Еще момент, что явно не указан адрес объекта Timer при запуске записывается в вектор прерывания по таймеру, потому по завершению интервала происходит адресация объекта Timer и далее по подписке чтение значений тока и напряжения и шутка со счетчиком.. Мы адресуемся к нему для записи 1 к, а при подписке происходит вычитание 1))


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

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


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

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


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

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