DRAKON.SU

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

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




Начать новую тему Ответить на тему  [ Сообщений: 242 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13  След.
Автор Сообщение
СообщениеДобавлено: Пятница, 31 Декабрь, 2021 20:04 

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

Тут от уровня проектировщика зависит. Но, тут же парадокс. Чем сильнее проектировщик, тем больше ему хочется переделать.))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 01 Январь, 2022 18:11 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 133
Откуда: Киев
Михаил Кузьмин писал(а):
Comdiv писал(а):
Посмотреть стоит лишь в том смысле, чтобы увидеть, как делать не надо. Не любая деятельность лучше ничего не делания.
Это ты зря. Я как раз на теме графического представления и тормознулся. Актуальность вне сомнений.
Речь шла о приведении в пример раскрытии темы, что является отрицательным примером, потому что является смесью нормальных, но и обычных суждений с недостаточностью познаний, плохой проработки, несвязности изложения, преувеличенных ожиданий и других проблем.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 01 Январь, 2022 18:20 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 133
Откуда: Киев
Михаил Кузьмин писал(а):
Comdiv писал(а):
Silaev_dv писал(а):
В таком случае уже мы уйдем от понятия программирования, к ...
Это распространённая ошибка. От термина программирования уйти-то можно, но только не от понятия, которое может быть выражено в каких угодно терминах, но будет всё равно являться программированием. Лёгкость достижения алгоритмической полноты будет и дальше вводить людей в заблуждение, позволяя им "изобретать" всё новые способы программирования под какой угодной маркой, в том числе и непрограммирования.
Отнюдь. Я ушел. В моей машине это не процесс написания последовательно выполняемых команд, а создание набора концептов с формализованным взаимодействием. Кстати, изменяемым.
Вы не ушли, а, увы, заблудились, неоправданно сузив определение алгоритма и программы до последовательных алгоритма и программы, а потом выйдя за рамки ошибочно суженного, провозгласив, что это уже не программа и не алгоритм. Ирония заключается в том, что во второй части сообщения, первой части которого Вы возражаете, уже содержится ответ на Ваше возражение.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 01 Январь, 2022 22:37 

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

Не сказал бы что это сообщение образец связности изложения.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 01 Январь, 2022 22:43 

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

Я на месте и никуда не выходил. Читайте внимательно википедию. https://ru.wikipedia.org/wiki/%D0%90%D0 ... 1%82%D0%BC
Цитата:
Алгори́тм (лат. algorithmi — от имени среднеазиатского математика Аль-Хорезми[1]) — конечная совокупность точно заданных правил решения некоторого класса задач или набор инструкций, описывающих порядок действий исполнителя для решения определённой задачи. В старой трактовке вместо слова «порядок» использовалось слово «последовательность», но по мере развития параллельности в работе компьютеров слово «последовательность» стали заменять более общим словом «порядок».


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 02 Январь, 2022 01:23 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 133
Откуда: Киев
Михаил Кузьмин писал(а):
Я на месте и никуда не выходил. Читайте внимательно википедию. https://ru.wikipedia.org/wiki/%D0%90%D0 ... 1%82%D0%BC
Цитата:
Алгори́тм (лат. algorithmi — от имени среднеазиатского математика Аль-Хорезми[1]) — конечная совокупность точно заданных правил решения некоторого класса задач или набор инструкций, описывающих порядок действий исполнителя для решения определённой задачи. В старой трактовке вместо слова «порядок» использовалось слово «последовательность», но по мере развития параллельности в работе компьютеров слово «последовательность» стали заменять более общим словом «порядок».

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 02 Январь, 2022 09:33 

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

Михаил Кузьмин писал(а):
Не сказал бы что это сообщение образец связности изложения.

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

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

Я бы на вашем месте постарался достичь взаимопонимания с комдивом и подробно ответить на его замечания. И не переходил бы на ты в серьезной дискуссии.
Михаил Кузьмин писал(а):
Это ты зря.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 02 Январь, 2022 10:36 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Comdiv писал(а):
Михаил Кузьмин писал(а):
Я на месте и никуда не выходил. Читайте внимательно википедию. https://ru.wikipedia.org/wiki/%D0%90%D0 ... 1%82%D0%BC
Цитата:
Алгори́тм (лат. algorithmi — от имени среднеазиатского математика Аль-Хорезми[1]) — конечная совокупность точно заданных правил решения некоторого класса задач или набор инструкций, описывающих порядок действий исполнителя для решения определённой задачи. В старой трактовке вместо слова «порядок» использовалось слово «последовательность», но по мере развития параллельности в работе компьютеров слово «последовательность» стали заменять более общим словом «порядок».

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

Во первых, хочу выразить благодарность и форуму и вам лично. Здесь я нашел достойных оппонентов, и это меня радует необыкновенно! А во вторых, попытаюсь объяснить свою мысль. Заранее скажу что, может быть, ошибаюсь или не те термины применяю. Если понятие "порядок" понимать как однозначное одно после другого, то параллельные процессы идут вообще независимо. Если считать, что связь между независимыми процессами, формирует порядок, то тогда я согласен. А так я считал что в каждой конкретной ветке порядок определен, а до того, как не произошло событие связи, то и порядок не определен.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 02 Январь, 2022 12:18 

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

Если отдадите, беру свои слова обратно. Даже то, что в моей машине можно адресоваться сразу по нескольким адресам это только добавляет в понятие "порядок" слово одновременно. И описание взаимодействия это тоже "определение порядка". Что еще раз подтверждает наличие серьезных оппонентов. И это мне нравится. Большое спасибо! В прошлом году я нашел сайт на котором мне нравится общаться. Извините за горячность.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 17 Март, 2022 19:39 

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

На форум зайти не могу. Скорее всего заблокировали все ...

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

Гарантирована только пара событие - подписка. См. частично упорядоченное множество. Работать продолжаю.

Если интересует пишите. Буду держать в курсе. Спасибо за приятное и достойное общение. И если что извините.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 03 Июнь, 2022 11:19 

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


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 133
Откуда: Киев
Михаил Кузьмин писал(а):
Осталось придумывать куда ее..

На github, у них программа сохранения кода на века. Потомки должны оценить.


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

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

Пока живой еще подергаюсь. Да и дело не в коде. Сохранять надо идеи.


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 133
Откуда: Киев
1. Вместе с исполнимым исходным кодом сохраняются и сопутствующие материалы. Возможен репозиторий и только с сопутствующими материалами.
2. Идеи для своего изложения тоже должны быть закодированы, вопрос лишь на каком языке. Формальные языки для таких вещей оптимальны, и лишь в силу ограниченности текущих инструментов, как и их познания, стоит оформлять на разговорных языках и других сложно-интерпретируемых формах.

В любом случае исполнимый исходный код нет смысла зажимать. Не надо бояться, что засмеют.


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

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Comdiv писал(а):
1. Вместе с исполнимым исходным кодом сохраняются и сопутствующие материалы. Возможен репозиторий и только с сопутствующими материалами.
2. Идеи для своего изложения тоже должны быть закодированы, вопрос лишь на каком языке. Формальные языки для таких вещей оптимальны, и лишь в силу ограниченности текущих инструментов, как и их познания, стоит оформлять на разговорных языках и других сложно-интерпретируемых формах.

В любом случае исполнимый исходный код нет смысла зажимать. Не надо бояться, что засмеют.

Я не боюсь. У меня инет плохой здесь. По нескольку раз приходится отправлять сообщение.. А это демотивирует развернуто отвечать.


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

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
В первую очередь за события. Ибо этим, интуитивно понятным словом называют не всегда то, где лопата, а это важно. Начнем с википедии
https://ru.wikipedia.org/wiki/%D0%A1%D0 ... 0%B8%D0%B5
• Нас интересует В информатике и программировании событие — это сообщение программного обеспечения либо его части, которое указывает, что произошло.
Думаю, это, мягко говоря не полное определение. Итак, предмет нашего исследования объект. По умолчанию считаем, что это некая часть программы (или программа). Императивная парадигма вынуждает нас считать, что вот сейчас начнем выполнять команды и первым делом надо начать думать за последовательность команд. А мы сначала подумаем. А надо чем мы будем думать? Ловим себя на мысли что перед тем, как приняться за написание команд мы обдумываем будущие состояния нашего объекта, и уже к этим состояниям применять команды. Будут это переходы, или какой анализ, по результатам которого мы планируем поступать так или иначе. Что нам надо проанализировать? А если по другому спроектировать?
И только когда мы все приблизительно продумаем начинаем, собственно, процесс, который мы называем программированием. Т.е. «прокрутив» в голове различные состояния объекта, которые достойны нашего внимания, мы принимаем решение. Так вот, берусь утверждать, что подмножество множеств состояния -это и есть события. Конечно, не все события (множества состояний) нам интересны с точки зрения поставленной задачи, но те, что интересны-однозначно можно определять как события. Для того, что б перейти к программированию в предлагаемой парадигме, достаточно иметь мою машину с подписками, на те события, которые и являются предметом размышления над программой. А зачастую и прямо формулируются в постановке задачи как высказывания. И здесь нет ничего странного, ведь определение множества — это функция с областью определения 0 и 1 (принадлежит событию или нет). Или высказывание если обратиться к логике. Что ж удивляться если задача поставлена в терминах высказываний! А вот отказаться от привычки последовательного выполнения команд не так легко, как кажется! Но, в результате мы получаем новый (а на самом деле возвращаемся к доброму и старому) образу мышления.
В качестве примера могу привести классический пример программы Сортировка. Столько мыслей и обсуждений которых в моей парадигме (это не моя. Это парадигма естественного мышления) просто нет. Просто формулируем в событиях (сравнения на больше-меньше) постановку задачи. И в подписке на необходимое событие меняем местами элементы. Все! Нет такой задачи! И нет такой проблемы! Проблема производительности решается многопроцессорностью и распараллеливанем заложенных в архитектуре машины.
Здесь уместно сказать пару слов за такое понятие как «сложность», ибо есть некая связь с количеством операторов If и одним из видов сложности. Он связан с тем, что необходимо отслеживать последовательность этих операторов. При самостоятельном определении событий и непосредственном указании подписок этот вид сложности убирается полностью. (убирается и непрерывность в последовательности линий соединяющие блоки в блок-схемах.) Голова освобождается для формулирования и решения существенных проблем.
При таком подходе проектирование программы (да и сама программа) состоит их двух концептуальных частей. Формулирование событий и подписки на события. Приятным открытием является то, что выражение, участвующее в формулировке события, не изменяет состояния. Это означает то, что анализы на события можно выполнять одновременно. А порядок выполнения гарантируется только парой событие-подписка.


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

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


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

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

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

берусь утверждать, что подмножество множеств состояния -это и есть события.

Конечно, не все события (множества состояний) нам интересны с точки зрения поставленной задачи, но те, что интересны-однозначно можно определять как события.

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

определение множества — это функция с областью определения 0 и 1 (принадлежит событию или нет). Или высказывание если обратиться к логике.

в результате мы получаем новый (а на самом деле возвращаемся к доброму и старому) образу мышления.

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

есть некая связь с количеством операторов If необходимо отслеживать последовательность этих операторов.

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

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

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

А порядок выполнения гарантируется только парой событие-подписка.


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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Август, 2022 12:03 

Зарегистрирован: Понедельник, 15 Июнь, 2020 19:38
Сообщения: 179
Машина Кузьмина. (Управляемая недетерминированная машина Тьюринга.)
Ра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.»
Знаки «!» и « ¬»являются значениями в операторе и событием.
Так же с помощью группы определим события, заложенные в архитектуре машины.
Определение событий адресации. Класс «|».
Event "|" Token { "←" 0 #Запись» "→" 1 #Чтение» "|" 2 # Выполнение» ":" 3 #Инициализация» }
Compare
{Compare Token { "=" 0 #Равно»">" 1 #Больше.» "<" 2 #Меньше.» }}

Определение событий данных. Класс «:».

Event ":" Token {"_" 0 #Отсутствует значение.» "=" 1 # Ноль» ">" 2 # Положительное.»
"<" 3 #Отрицательное.» Even 4 #Четное» Uneven 5 #Не четное» "~" 6 #Изменение значения.» }


События, определяемые перечислимыми типами, определяют синтаксис объявления событий, и это первый шаг в понимании.
Объявление событий (подмножеств) Compare.
Определение множеств состояний выполняется классом «~» (Сравнение) имеющий значение типа Compare.
Event "~" #Сравнение. Результат типа Compare. » | :{ Type " " #Операнд 1» Type "," #Операнд 2» Compare ";" _ Boolean "?" ! #Инверсия результата события»}
Пример концепта E. Определение событий EQ, More и Less.
Concept E {
Int32 (a, b) #Определение атрибутов a, b»
~ EQ a, b = #Определение события EQ.»
~ More a, b> #Определение события More.»
~ Less a, b < #Определение события Less.»
}


Итак, мы уже умеем стоить элементарные события. Но есть возможность строить и формулы из элементарных событий используя класс * (Define) применяя правила выполнения групп в событиях (круглые, и фигурные скобки объединяют элементы группы по правилу And, а квадратные по правилу Or). Отрицание события определяется Метаатрибутом (событием)- типа Boolean именем «?» и по умолчанию равным !. Метасобытие ? виртуальное событие –результат выполнения любого концепта. Фактически событие ? ¬ это аналог привычного события Error.

Пример концепта E. Определение событий NotEQ, NoMore, NoLess и LessOrNull .
Concept E {
Int32 (a, b) #Определение атрибутов a, b»
~ NotEQ a, b = ? ¬ #Определение события NotEQ.»
~ MoMore a, b> ? ¬ #Определение события NoMore.»
~ NoLess a, b < ? ¬ #Определение события NoLess.»
Define LessOrNull [~ a, b < a : = b: =] #Событие a<b или a=0 или b=0»
}
Определение события как Define не случайно. Ведь определение события фактически является выражением и представляет собой некоторое высказывание, а определение истинности события не что иное как определение истинности этого высказывания. Т.е. вполне логично определять таким образом понятия, истинность которых определяется по правилам логического разбора скобок и можно считать интерпретацией как в языке Prolog. Но, еще очевидней что формирование подписок выполняет роль оператора If в императивном программировании. Что ж мы тут нового предлагаем?

В чем отличие?

А отличие становиться заметным, когда мы обращаем внимание на то, что у нас много процессоров и шин адресации. В классической архитектуре программа выполняется так, как пишется. Последовательность операторов О1, О2…. Оn. которые изменяют состояние. Затем оператор If- анализирующий текущее состояние и переход в зависимости от текущего состояния. У нас же переход осуществляется непосредственно в момент изменения состояния. И последовательность выполнения операторов зависит не от их порядка в тексте, а в порядке указанном парой событие – подписка. Т.е. обычную программу можно представить в виде алгортима (или блок-схемы) выполняющейся пошагово.
Работу предложенной машины можно представить алгоритмом только по выполнению какой-то ветки где порядок определен последовательностью подписок событий оказавшимися истинными по факту выполнения. https://ru.wikipedia.org/wiki/Алгоритм
В общем случае одновременно могут происходить переходы по нескольким подпискам по нескольким событиям, что порождает недетерминизм и двусмысленность в определении алгоритма как порядка или последовательности выполнения. О каком порядке и последовательности может идти речь при ОДНОВРЕМЕННОМ процессе. В общем случае МК гарантирует только порядок выполнения пары событие-подписка и назовем такую модель А-ритмом.
Пример.

Class ElectricMeter #Класс с параметрами времени в миллисекундах и счетчик суммирования»
|| # Конструктор» | @ Byte ( Interval _ # В миллисекундах одного тика.», Count 100 # Количество тиков для суммирования. По умолчанию 100») ' Параметры
{ InitCount = Count ' Присваиваем начальное значение счетчика
Timer ( Interval, Tick ) # Создание таймера, создание подписки.» }
|| #Создание динамических свойств» :
{ Byte { InitCount _ #Начальное значение счетчика»
Counter _ #Счетчик»
|| #Инициализация» | =InitCount #Количество тиков таймера до запуска вычислений. Присваивается при инициализации»
|| ← - = 1 #Ведем счетчик. При каждой записи вычитаем 1»
:: = [ ( Counter =_ ) Value =( Voltage/InitCount )* ( Electricity/InitCount )] #При событии 0, формируем счет и восстанавливаем значение счетчика. Как произведение средних значений тока и напряжения.»
}
' Определение атрибутов Voltage, Electricity и Value
Float { Voltage 0
|| ←@ Float X _ +=X # Суммирование значения при событии Write»
|| → = 0 # При чтении обнуляем счет.»
Electricity 0
|| ← @ Float X_ += X # Суммирование значения при событии Write»
|| → = 0 # При чтении обнуляем счет. »
Value 0 'Начальное значение
|| ← @ Float X_ + =X #Значение счетчика наращиваем при записи»
}

Void Tick _
|| | [ Counter =0 Voltage= "P1" Electricity ="P0"] ' Значение счетчика уменьшаем на 1 при записи значения 0 и читаем значения тока и напряжения с портов P0 и P1

}

В примере присутствуют события данных адресации «|» и класса данных «:» с именами соответственно «||» и «::»


Принцип работы счетчика.
Значения тока и напряжения (Voltage и Electricity) считываются с портов Р1 и Р0 как можно чаще. Не реже 5000 раз в сек. Считанные значения усредняются для устранения ошибок суммируя эти значения Count раз и деления на значения счетчика усреднения Count.
Расчет значения счетчика электроэнергии происходи суммированием произведений усредненных значений в атрибуте Value.
Работа программы:
Новый объект счетчика создается из класса адресацией с инициализацией к классу. (машинная команда Go с параметром |, либо синтаксическая форма New). Адресация с инициализацией формирует (машиной) одновременно адресацию для выполнения. Потому происходит сначала формирование концепта (подписка на событие «инициализация») а затем запускается подписка на событие выполнение «конструктор».
Конструктор запускает работу таймера с параметрами интервал считывания значений тока и напряжения Interval и адрес вызываемого контента Tick по истечению этого интервала. Кроме того, конструктор формирует
значения счетчика усреднения атрибута InitCount на основе параметра Count.
Работа счетчика заключается в запуске подписки Tick по заданному интервалу времени. При каждом выполнении этой подписки атрибуту Counter присваивается значение 0. Машинная команда присваивание формирует адресацию для записи, этого атрибута. А так как на событие Запись атрибута Counter оформлена подписка, то выполняется не присваивание 0, а выполнение подписки. Т.е. вычитание 1 из счетчика. Отметим что начальное значение InitCount этого счетчика Counter присваивается при событии инициализации этого атрибута. Событие инициализации атрибута происходит перед присваиванием первого значения отличного от _ (отсутствие значения) и подписка не это событие выполняется перед выполнением назначения адресации. Т.е. либо перед записью, либо перед подпиской для записи, если она есть.
Следующие операторы в подписке Tick - чтение текущих значений тока Electricity и напряжения Voltage с соответствующих портов. Работа обоих атрибутов похожа. По событию запись, параметр-значение суммируется с текущим значением, которое в начале равно 0. Оба значения при адресации для чтения обнуляются соответствующими подписками на чтение.
Вычисление электроэнергии происходит при событии Count=0. Подписка не это событие вычисляет произведение усредненных значений тока и напряжения, при этом адресуясь к этим атрибутам для чтения, обнуляя их значения подпиской на их чтение. Полученное значение электроэнергии присваивается атрибуту Value для суммирования. Что и является результатом работы.


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

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


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

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


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

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