DRAKON.SU

Текущее время: Вторник, 25 Июнь, 2019 23:09

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




Начать новую тему Ответить на тему  [ Сообщений: 276 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 14  След.
Автор Сообщение
СообщениеДобавлено: Воскресенье, 30 Декабрь, 2018 20:56 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 918
Дмитрий Бардынин писал(а):
... нужно провести опрос клавиатуры ...
Что такое "опрос клавиатуры", в каком виде получать результат опроса, когда и как будет использован результат опроса клавиатуры?

Дмитрий Бардынин писал(а):
"Если ГОСТ устарел, его нужно менять" (с)
Кто это утверждает, какой ГОСТ, в какой части, что предлагается? Есть стандартные процедуры изменения ГОСТов. Вы готовы инициировать?


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

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 189
Откуда: Астрахань-Сочи
LKom писал(а):
Что такое "опрос клавиатуры", в каком виде получать результат опроса, когда и как будет использован результат опроса клавиатуры?
Я упомянул ранее, что мы программируем МК, т.е. "микроконтроллер". Уточню: плату Ардуино. Речи об Операционной Системе или Циклах не идет, распараллеливать процессы тоже не получится. Опрос клавиатуры - просто некий код, который нужно исполнить, пока система ожидает продолжения работы основной программы. Думается, это достаточный уровень абстракции. Если важно знать про результат опроса клавиатуры, то допустим, что некая группа ячеек в ОЗУ нашего МК будет хранить коды, соответствующие нажатиям на клавиши произвольной клавиатуры нашего устройства. После возобновления работы основной ветки программы эти коды можно проанализировать. Причем, отдельные клавиши ("Сброс", "Ввод") могут вызывать команды, принудительно переопределяющие состояние конкретного таймера, если он уникален для данной схемы: перезапускать его, или завершать его работу. Так, например, можно запрограммировать ввод пароля для кодового замка, причем время ввода будет ограничено по указанному ранее принципу.

LKom писал(а):
Кто это утверждает, какой ГОСТ, в какой части, что предлагается? Есть стандартные процедуры изменения ГОСТов. Вы готовы инициировать?

По-моему, Вы пытаетесь заменить конкретный эксперимент рассуждениями про ГОСТы и т.п. Предложите вариант описания алгоритма "без частных и не очевидных расширений языка Дракон" (с)
Мы сравним мое описание с Вашим. И далее можно будет порассуждать о роли ГОСТа в судьбе Дракона, и о нашей с вами роли в судьбе ГОСТа.


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

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 918
У Вас все какие то самодельные (личные) термины.

К примеру, в книге "Учись .." нет иконы "Таймер", а есть икона "Пуск таймера".

Икона "Синхронизатор (по таймеру)" не запускает выполнение подпрограмм (Временные вставки), а всего лишь задерживает выполнение той иконы, к которой присоединена, т.е. задерживает поток управления.


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

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 189
Откуда: Астрахань-Сочи
LKom писал(а):
У Вас все какие то самодельные (личные) термины. К примеру, в книге "Учись .." нет иконы "Таймер", а есть икона "Пуск таймера".

Название иконы взял из программы С.Митькина. Смысл иконы не искажен.

LKom писал(а):
Икона "Синхронизатор (по таймеру)" не запускает выполнение подпрограмм (Временные вставки), а всего лишь задерживает выполнение той иконы, к которой присоединена, т.е. задерживает поток управления.
Правильно. И мне, как программисту, эта задержка не выгодна. Она тратит ресурсы впустую, что недопустимо. Пусть основная программа задерживается, а микроконтроллер за это время успеет еще что-то полезное сделать, например, "опросить клавиатуру", или "мигать светодиодом". Можно, конечно, данный алгоритм описать с помощью традиционных приемов языка Дракон, но тогда схема будет громоздкая, и понимания вряд ли станет больше. Что полезнее: Синхронизатор "Жди 5 секунд" или Синхронизатор "Жди пять секунд, помигивая светодиодом"?

Или сравните следующие команды: "Жди полчаса" и "Жди полчаса, помешивая варенье ложкой". В описании алгоритма приготовления варенья какая из этих команд будет удобнее? Конечно та, что может использовать деепричастный оборот. Теперь мы можем оформлять алгоритмы с деепричастными оборотами. В этом помогает мой принцип использования "Временной вставки".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 09:27 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 4240
Откуда: Москва
Дмитрий, правильно ли я понял вашу идею, что вы хотите изобразить параллельную работу двух вставок?

Если правильно, то можно обойтись стандартными средствами ДРАКОНа

Вложение:
011. Оберон .png
011. Оберон .png [ 18.71 КБ | Просмотров: 778 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 09:34 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 189
Откуда: Астрахань-Сочи
При использовании Вашей схемы опрос клавиатуры произойдет один раз. А если нужно, чтобы опрос происходил неопределенное число раз, все время, пока Синхронизатор ожидает порога? Причем, если Синхронизатор сработает сразу при переходе к нему (предположим, время вышло раньше, чем мы добрались до него), то в моей схеме Временная вставка не сработает ни разу, а в Вашей схеме с параллельными потоками выполнится однократно "Опрос клавиатуры".
Вложение:
Комментарий к файлу: Замена схемы с "Временной вставкой"
Снимок12-2.GIF
Снимок12-2.GIF [ 27.08 КБ | Просмотров: 774 ]


В предыдущей схеме за описание сути алгоритма отвечает 9 знаков (Синхронизатор, Вставка, Параллельная линия, две Вертикальных линии, Стрелка, Вставка, Вопрос и Горизонтальная линия). В моей схеме аналогично работают 4 знака (Синхронизатор, Вставка, Параллельная линия, Вставка). Как мне кажется, мой способ лаконичнее.
Вложение:
Комментарий к файлу: Параллельная работа Синхронизатора с Временной Вставкой.
Снимок12.GIF
Снимок12.GIF [ 9.31 КБ | Просмотров: 777 ]


А может быть, следует связать Синхронизатор и Временную вставку прямой связью?
Вложение:
Комментарий к файлу: Синхронизатор и Временная вставка на параллельном шампуре
Снимок12-1.GIF
Снимок12-1.GIF [ 7.62 КБ | Просмотров: 776 ]


По-сути "Временная вставка" - это алгоритм, альтернативный основному. Пока основной алгоритм затормозился, выполняется альтернативная часть. Но как её отразить корректно?
Может быть ввести отдельную пунктирную двойную линию? Есть еще предложения?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 12:35 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1011
Откуда: Россия, Чебоксары
Дмитрий Бардынин писал(а):
Я упомянул ранее, что мы программируем МК, т.е. "микроконтроллер". Уточню: плату Ардуино. Речи об Операционной Системе или Циклах не идет, распараллеливать процессы тоже не получится. Опрос клавиатуры - просто некий код, который нужно исполнить, пока система ожидает продолжения работы основной программы. Думается, это достаточный уровень абстракции.
Категорически не достаточный.
Вы делаете сугубо частное применение (расширение) универсальной нотации, которое рано или поздно умрёт вместе с данным контроллером.
И этим вы серьёзно ограничиваете потенциал нотации.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 12:57 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 189
Откуда: Астрахань-Сочи
Alexey_Donskoy писал(а):
Категорически не достаточный.
Вы делаете сугубо частное применение (расширение) универсальной нотации, которое рано или поздно умрёт вместе с данным контроллером.
И этим вы серьёзно ограничиваете потенциал нотации.


Я предлагаю от частного случая оттолкнуться, и определиться с общим правилом. Уверен, что не только в МК может возникнуть необходимость алгоритмизации задач по похожему принципу: "Временная вставка" как альтернативный алгоритм для иконы "Пауза", и связки "Синхронизатор"-"Любая Икона".

У Дракона есть способ объявления нескольких одновременных задач по принципу "Логическое И".
Почему бы не придумать способ объявления одновременных задач по принципу "Логическое ИЛИ"? Потребность в этом я обрисовал на примере для МК.

В некоторых языках имеется возможность определить код, который будет исполняться в случае, если основная команда отработает с ошибкой. Это тоже про альтернативные алгоритмы. В Драконе объявление такой альтернативы выглядит громоздко. Я предложил вариант. Если он не удобен - предложите свой. Упирать на то, что я исхожу из "сугубо частного применения" (с), КМК - слабая позиция. Предложите четкий, понятный вариант для общего случая, когда нужно объяснить альтернативное действие для иконки ожидания, или, скажем, иконки Вывода, на случай, что вывод не удачный, или устройство вывода не доступно.

Напомню: я предложил обсудить варианты правильной записи данного действия - альтернативной, Временной вставки для икон ожидания. Необходимость данной операции не предлагалось обсуждать, она очевидна. Какой-то из вариантов мы будем применять, и сообщество может поучаствовать в выработке корректного, на общий взгляд, решения. Если его не будет, мы будем использовать то, что проще запрограммировать, т.к. на основе текущей практики складывается учебный процесс. Ограничивать использование Синхронизаторов на Ардуино из-за того, что никто не предложил удобного способа объявления альтернативы, не планируется. Останется придумать способ самим. И у меня есть уверенность, что после того, как мы начнем его применять, через некоторое время, данный способ закрепится де-факто, т.к. его будут использовать школьники и студенты. Хотелось бы, чтобы решение было обдуманным всесторонне, а не выбрано спонтанно, или потому, что мне его было проще закодировать на редакторе С.Митькина.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 15:25 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 503
Дмитрий Бардынин ставит перед ДРАКОНом новую задачу, с которой я раньше не встречался.
Задача звучит так:

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

Рассмотрим следующую ДРАКОН-схему в нотации, предлагаемой Дмитрием Бардыниным:
Вложение:
new-sync.png
new-sync.png [ 8.01 КБ | Просмотров: 752 ]

Смысл данной схемы такой:
Код:
Через 1000 мс Включить маяк, а пока время не наступило, Опрашивай клавиатуру.
Через 2000 мс Выключить маяк, а пока время не наступило, Опрашивай клавиатуру.

Вот как события будут развиваться во времени:
Вложение:
new-sync-timeline.png
new-sync-timeline.png [ 18.82 КБ | Просмотров: 752 ]

Ту же самую мысль можно выразить стандартными средствами языка ДРАКОН:
Вложение:
new-sync-old.png
new-sync-old.png [ 12.32 КБ | Просмотров: 752 ]

Вопрос: нужно ли вводить новые средства в язык ДРАКОН?
Новый метод обладает серьёзным достоинством: большая компактность.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 18:22 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 503
Возможен другой подход.
В свойствах алгоритма прописываем:
Код:
При ожидании на паузе или синхронизаторе: Опрос клавиатуры

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 18:53 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 199
Степан Митькин писал(а):
Вопрос: нужно ли вводить новые средства в язык ДРАКОН?
Новый метод обладает серьёзным достоинством: большая компактность.

Какой смысл постоянно запускать и останавливать опрос клавиатуры?

Нужно просто запустить опрос при запуске устройства и всего делов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 19:45 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 189
Откуда: Астрахань-Сочи
Владимир Ситников писал(а):
Какой смысл постоянно запускать и останавливать опрос клавиатуры?
Нужно просто запустить опрос при запуске устройства и всего делов.

В конкретном случае смысл есть, если программируем однопоточную систему. Но мы же не про клавиатуру дискутируем...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 19:47 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 189
Откуда: Астрахань-Сочи
Степан Митькин писал(а):
Возможен другой подход.
В свойствах алгоритма прописываем:
Код:
При ожидании на паузе или синхронизаторе: Опрос клавиатуры

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 20:04 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 199
Дмитрий Бардынин писал(а):
В конкретном случае смысл есть, если программируем однопоточную систему. Но мы же не про клавиатуру дискутируем...

Нет никакого смысла.

Можно сделать минимальную обвязку, чтобы в МК крутился цикл, который бы вызывал активные Дракон-схемы. Те, которым не пришло время не вызываем. Тогда можно в самом начале запустить пресловутый опрос клавиатуры и кучу ещё чего. И можно без проблем ставить на паузу некоторые схемы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 20:27 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 189
Откуда: Астрахань-Сочи
Владимир Ситников писал(а):
Нет никакого смысла.
Можно сделать минимальную обвязку, чтобы в МК крутился цикл, который бы вызывал активные Дракон-схемы. Те, которым не пришло время не вызываем. Тогда можно в самом начале запустить пресловутый опрос клавиатуры и кучу ещё чего. И можно без проблем ставить на паузу некоторые схемы.


Конечно можно. Но мы хотим короче. Разговор о том, как в Драконе описать ситуацию с вызовом альтернативной схемы, а не о мелких вопросах, которые не имеют принципиального значения. Не можете абстрагироваться от МК, давайте обсуждать на примере рецепта приготовления варенья. Возьмите часть алгоритма: "Варить полчаса, помешивая ложкой". Сможете эту схему описать коротким способом на Драконе?


Последний раз редактировалось Дмитрий Бардынин Понедельник, 31 Декабрь, 2018 20:34, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 20:28 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1011
Откуда: Россия, Чебоксары
Владимир Ситников писал(а):
Можно сделать минимальную обвязку, чтобы в МК крутился цикл, который бы вызывал активные Дракон-схемы.
Совершенно правильный подход.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 20:35 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 199
Дмитрий Бардынин писал(а):

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

Началось всё с того, что, якобы, 'синхронизатор' блокирует поток выполнения. И, якобы, нужны какие-то приписки, чтобы выполнять ещё что-то.

Но, как я писал выше (уверен, что это уже 100500 раз озвучивалось), нет смысла делать приписки к синхронизаторам и паузам. Схема опроса клавиатуры (и чего там ещё) должна постоянно вызываться. А те схемы, которые дошли до пауз просто не вызываются некоторое время.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 20:35 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 189
Откуда: Астрахань-Сочи
Alexey_Donskoy писал(а):
Владимир Ситников писал(а):
Можно сделать минимальную обвязку, чтобы в МК крутился цикл, который бы вызывал активные Дракон-схемы.
Совершенно правильный подход.


Смотрите шире. Не в обвязке дело. Обсудим варенье.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 20:42 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 199
Дмитрий Бардынин писал(а):
Возьмите часть алгоритма: "Варить полчаса, помешивая ложкой". Сможете эту схему описать коротким способом на Драконе?

Один квадратик 'Варить полчаса, помешивая ложкой'
Или же квадратик 'старт процесса Варить полчаса, помешивая ложкой'

А сам процесс 'варки одновременно с помешиванием' можно описать в отдельной схеме (или нескольких схемах) и неважно насколько сложно оно будет. Как-никак, там может скрываться подробная инструкция на случай 'как быстро мешать', 'что делать, если вскипит', и т.п.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 20:49 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 189
Откуда: Астрахань-Сочи
Отдельные схемы, если можно описать в двух иконках? А где краткость?
Я имел в виду ранее упомянутые примеры варки варенья, с "Паузой 30 мин", и "Пауза 30 мин"-"Помешивая ложкой".
Вероятно, идея слишком нова, чтобы получилось содержательное обсуждение. Оставляю дискуссию с наилучшими пожеланиями, согласно календарю.


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

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


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

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


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

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