DRAKON.SU

Текущее время: Пятница, 29 Март, 2024 01:24

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




Начать новую тему Ответить на тему  [ Сообщений: 184 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9, 10  След.
Автор Сообщение
СообщениеДобавлено: Пятница, 19 Март, 2021 21:38 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
ibnteo писал(а):
ещё и функциональное программирование удастся на схемы перенести

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

Рисовать "да/нет"-сети в Р-схемах хуже, чем в Дракон-диаграммах (возня с пустыми переходами). Р-схемы принуждают действовать "по-автоматному", по возможности оперируя конъюнктами событий. Чтобы схемы были "один в один" с текстом, нужен и соответствующий текстовый язык (mainstream-языки не для этого).
Рассмотрим иной вариант примера выше. Пусть текстовый формализм будет Pascal-подобным. Оператор "with" пусть будет как в Modula, но с расширенной семантикой -- вычисления по требованию (к сожалению, оператор "with" вместе с Modula развития не получили, Си-производный mainstream задушил альтернативы). Оператор "with" вводит локальные переменные как ссылки (на объекты (или как value-значения в случае вычислительных выражений), как текущее состояние, мол уже свершившееся факты). Однако предполагается, что вычисление переменных осуществляется один раз и тогда, когда нужно по требованию. В некотором роде -- аналог операторов "let" или "where" в "настоящих" функциональных языках программирования. Транслятор (а не человек) заниматься анализом зависимостей и построением нужных goto или inline-вычислений, формированием thunk-функций если нужно, и когда нужно - после срабатывания необходимого "защитного" выражения (условий), если таковы возникают в любом возможном месте в теле оператора "with".
Также не помешала бы такая же семантика и для переменных, объявляемых перед телом процедуры (до начального begin), если имеются инициализирующие значения.

Продублирую здесь постановку задачки -- она, фактически, как раз и была выстроена интуитивно почти "по-автоматному":
https://forum.drakon.su/viewtopic.php?f=228&t=6666#p103696
Степан Митькин писал(а):
Есть такой виджет - TreeView.
Это сложный виджет с хитрым поведением. Рассмотрим алгоритм реакции виджета на щелчок мыши по элементу дерева.
- Нам интересны щелчки только левой кнопкой мыши.
- Если не так давно уже был щелчок, то это двойной щелчок.
- Если виджет находится в процессе раскрытия узлов, мы игнорируем одинарный щелчок, но обработку двойного щелчка
откладываем на потом.
- Особо обрабатываются щелчки с нажатой клавишей Ctrl.
- Для узлов, которые могут иметь дочерние узлы, мы

1. выделяем узел,
2. начинаем процесс раскрытия узла (это дело долгое).

Код и схема:
Код:
PROCEDURE Tree_itemClick(machine, item, event)
BEGIN
  IF event.button = 0 THEN
    SKIP
  ELIF WITH
    now := getUnixTime();
    doubleClick := item.lastClick & ((now - item.lastClick) <= DoubleClickThreshold);
    expanding := (machine.state = "expanding");
    IF doubleClick & expanding
  DO
    machine.postponedDClick := item.id
  ELIF doubleClick DO
    Tree_doubleClick(machine, item, event)
  ELIF expanding DO
    SKIP
  ELIF
    item.lastClick := now;
    IF event.ctrlKey THEN
      Tree_ctrlClick(machine, item)
    ELIF item.leaf THEN
      Tree_singleClick(machine, item, event)
    ELSE
      Tree_clearSelection(machine);
      Tree_selectItem(machine, item);
      Tree_toggleExpand(machine, item, event);
    END
  END END
END

Вложение:
tree_item_click.png
tree_item_click.png [ 23.24 КБ | Просмотров: 5161 ]

Форма оператора "with" как:
with...if...do...elif...else...end
есть сокращение (совмещение) от:
with...do if...then...elif...else...end end

На схеме оператор "with" отмечен дугой без стрелки с "разорванной" вершиной без предиката -- "поглощающий" блок, не сам переход. Условия в стартовом "if" заданы как альтернативы конъюнктов событий на манер "join calculus" (упорядоченные варианты, сначала максимальный охват, затем сужение, альтернативы). Этот паттерн должен быть разрулен автоматически оптимизировано, так же как "boolean shortcut evaluation". При потребности транслятор должен выдать итоговый автомат (с "редукцией" with-переменных), если нужно для рассмотрения. Или таблицу решений, с наборами правил и разметкой "T/F", блок/Дракон/Р-схему можно слепить в итоге.

Возможен оператор цикла вида "while with ... do..." с таким же набором переменных, их вычисление в этом случае осуществляется на каждой итерации. На схеме цикл задаётся под двойной дугой.

Схемы, фактически, изымают из потенциального текстового языка "шашечки" (ключевые управляющие слова) и показывают направление, как и куда ехать будем.
Альтернативно "редукцию" переменных на схеме можно показать как-то иначе, нечто вроде "FBD". Но формулы "разрывать" как-то не очень..., "схематические таблицы" демонстрируют такой эффект (некие вспомогательные линии передачи операндов между формулами возможны):
https://habr.com/ru/post/80893/

Изображение


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 19 Март, 2021 21:40 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
Недавно наткнулся на любопытный "челлендж" от некоего сообщества поставщиков платформ для моделирования в таблицах решений -- поставлена небольшая задачка с очень разными вариантами реализации:
https://dmcommunity.org/challenge/challenge-jan-2016/

И оттуда же не помешает заметка для введения, в том числе насчёт того, что есть понимание алгоритма у различных моделирующих:
https://openrules.wordpress.com/2012/01/02/different-decision-tables-for-a-very-simple-use-case/

Рекомендую интересующимся -- раскрыта та же проблематика, как здесь выше: представлены самые разные формы таблиц с анализом -- почему и для кого какие -- классические с набором правил, редуцированные с набором событий, с политикой уникального "сработавшего" события, первого по порядку, множества событий, с фиксированными условиями и перевычислимыми и т.д. С декомпозицией задачи, с построением дерева зависимостей и пр.

Однако в публикациях незаметен акцент на циклах. По поводу вспомнился пример здесь на сайте:
https://oberoncore.ru/library/ermakov_strukturirovanie_promy_shlennogo_cikla

Пример выше по ссылке довольно таки показателен: Дракон-методология направляет строить циклы по первому варианту, Р-схемы вынуждают по второму.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 20 Март, 2021 16:13 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 128
ДраконКод повторяет программный код, поэтому схема не будет сокращена, будет либо несколько икон "Отказ от пуска", либо использование переменной "успех":
Изображение


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 20 Март, 2021 17:52 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 128
На ДраконКод алгоритм щелчка мышью по виджету TreeView выглядит лучше, так как построение схемы не позволяет вручную двигать иконы, и лианы автоматически приземляются где надо.

Кроме одной судьбы у Действий будет ещё и одна судьба у Вопросов, второй вопрос machine.state === "expanding" можно расположить на уровень выше, но можно на уровне первого такого же вопроса в другой ветке. Хотя надо ещё подумать, если разрешён вход слева у Вопросов, то так хуже схема читается.

В генерируемом коде пустой блок в IF будет устранён, а условие заменено на NOT.


Вложения:
IMG_20210320_180130_633.jpg
IMG_20210320_180130_633.jpg [ 68.54 КБ | Просмотров: 5145 ]
IMG_20210320_174202_704.jpg
IMG_20210320_174202_704.jpg [ 61.63 КБ | Просмотров: 5145 ]
20190920135719.png
20190920135719.png [ 343.26 КБ | Просмотров: 5145 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 20 Март, 2021 18:31 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 128
Похоже так будет лучше, значит у вопросов не будет общей судьбы.


Вложения:
IMG_20210320_183002_424.jpg
IMG_20210320_183002_424.jpg [ 63.84 КБ | Просмотров: 5144 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 21 Март, 2021 16:34 
Аватара пользователя

Зарегистрирован: Среда, 09 Ноябрь, 2016 00:33
Сообщения: 122
Откуда: Tallinn
если текст можно заменить графикой, то это надо делать имхо, насчет условных блоков вроде уже было подобное предложение несколько лет назад
вот, нашел viewtopic.php?p=99323#p99323


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 21 Март, 2021 18:08 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 128
Игорь Мазница писал(а):
если текст можно заменить графикой, то это надо делать имхо, насчет условных блоков вроде уже было подобное предложение несколько лет назад
вот, нашел viewtopic.php?p=99323#p99323
Многих это не устраивает, не одна тема уже была.

Стрелка внутри иконы Вопрос мне больше нравится, как в силуэтных иконах цикла, и сами иконы силуэтного цикла вместо ГОСТ-овских невыразительных, их прекрасно видно и на уменьшенной схеме, когда надписи еле видны.

В ДраконКод удалось вообще от стрелок избавиться, стрелочные циклы заменены на пары икон Цикл силуэт, сам Силуэт не имеет стрелки наверх, переходишь как и в цикле просто по парным иконам.

Спасибо за ссылку, почитал ту ветку обсуждения, насчёт иконы Комментария похоже правы, но ведь можно использовать икону
--[ Правый комментарий

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


Последний раз редактировалось ibnteo Воскресенье, 21 Март, 2021 18:09, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 22 Март, 2021 09:24 

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

https://forum.oberoncore.ru/viewtopic.php?f=25&t=6743


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 02 Апрель, 2021 09:35 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 02 Апрель, 2021 16:40 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 128
Владимир Паронджанов писал(а):
ibnteo, как ваши успехи с ДраконКод?
Что у вас нового?

Сейчас в процессе создания файлового менеджера на основе схем.

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


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

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 128
Посмотрел однопанельный файловый менеджер nnn, ничего нового он не привнёс, всё то же выделение файлов и выбор операции для всех выделенных файлов.

Для работы на смартфоне потребовалась экранная клавиатура, на которой можно печатать полувслепую (видеть лишь контуры клавиатуры боковым зрением, смотреть на набираемый текст), да ещё и любые символы. Стандартные экранные клавиатуры не подходят, так как кнопки мелкие и много слоёв, например, чтобы в Gboard набрать знак "<" (используется часто в HTML-тегах), надо нажать три кнопки, и ещё одну, чтобы вернуться в слой букв. Есть слайдовая клавиатура MessagEase (я на ней давно работаю, этот текст набираю на ней полувслепую), но в ней есть несколько неустраннимых недостатков, это и цифры в отдельном слое, и из-за особенностей работы — частые ошибки, к которым не удаётся приспособиться.

В итоге разрабатываю свою экранную клавиатуру, уже готов и успешно протестирован прототип, результат превзошёл все ожидания, опубликую как выложу программу в магазин приложений Android и iOS, раньше нельзя раскрывать ноу-хау, идея очень простая, хотелось бы на этом продукте заработать, можно будет за его счёт профинансировать разработку ДраконКод-редактора, он то будет бесплатным и с открытым кодом, так как потребуется усилие всего сообщества, чтобы приспособить для разных задач.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2021 13:32 

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

ibnteo писал(а):
ДраконКод-редактор будет бесплатным и с открытым кодом
Поддерживаю. Замечательная идея.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Июнь, 2021 18:49 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 128
Проект клавиатуры выходит на финишую прямую, пришлось освоить новый для меня язык и новую среду разработки, для разработки использую Kotlin библиотеку Jetpack Compose, пока собираю под Android, под iOS скорее всего будет сделано на Swift, либо надо будет освоить мультиплатформенную разработку на Kotlin.

Jetpack Compose есть и для сборки Desktop приложений, и даже Web, так что можно будет ДраконКод делать сразу под все платформы (Windows, MacOS, Linux, Android, iOS, Web), на основе единой кодовой базы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 22 Июнь, 2021 01:40 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 128
На Jetpack Compose не получилось сделать IME приложение, пришлось на Canvas отрисовать.

Это сообщение печатаю на новой экранной клавиатуре, в стандартной раскладке, но буду переходить на эргономическую быстроизучаемую. Клавиатура гораздо удобнее MessagEase, на которой работал до этого, похоже скоро забуду её раскладку. Программный код писать удобно, но пока что нет подходящего редактора на смартфоне, ДраконКод всё равно нужен.

Заодно исправляю неправильные алгоритмы прошлого, например перемещение по словам (в текстовых редакторах Ctrl+Left/Right), осуществляю остановку после слова, а не на определённых символах, похожее поведение лишь в текстовом редакторе Emacs, но в нём не учитывают кавычки и параметры гиперссылок, что может часто встречаться в программных текстах.

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


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

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


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

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 128
Comdiv писал(а):
Что насчёт численной конкретики? Каковы времена набора одного и того же текста для разных клавиатур, в том числе на стандартной Gboard рисованием слов?

В Gboard чтобы набрать "<" надо сделать 4 клика и ещё один для возврата в слой букв, для написания кода, в частности HTML, не годится, у меня это один слайд в основном слое. Ну и основное преимущество, это слепая печать, когда смотришь на набираемый текст, а не на клавиатуру, а это полный контроль ввода.


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 133
Откуда: Киев
Всё-таки, что насчёт численных замеров? Можно попробовать, например, тут - https://typingtest.aalto.fi/

Если речь идёт о коде, то понятно, что Gboard не очень подходит, хотя приложения вроде Termux добавляют дополнительный ряд с необходимыми символами к любой клавиатуре. Но зачем, вообще, набирать <>, если есть отрывки(snippets)?
То есть, пишем, например, div, нажимаем спец-клавишу получаем:
<div>
</div>
4 нажатия вместо, минимум, 11.

А слепая печать на экранных клавиатурах - это навык на уровне супер возможностей. Ну почти :). Мои поздравления.


Последний раз редактировалось Comdiv Среда, 23 Июнь, 2021 01:35, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 23 Июнь, 2021 01:18 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 128
Численные замеры будут, скорее не как сравнение с другими клавиатурами, а как установление рекордов в печати на сенсорных клавиатурах, но это ещё не очень скоро будет, скорость требует наработки. По опыту печати на MessagEase (ME) могу предположить, что скорость печати будет на уровне более 300 символов в минуту, так как удобнее печатать двумя большими пальцами, и уже реализован мультитач, в отличие от ME, а на последней были достижимы и большие скорости, я лично на ней печатаю на уровне 200 символов в минуту одним пальцем.

Освоение новой клавиатуры происходит быстрее, чем ME, так как знакомая раскладка, даже эргономическая приближена к знакомой, английская Colemak или Workman, русская по тому же принципу, как и эти две, но на основе ЙЦУКЕН. Сейчас печатаю на стандартных QWERTY и ЙЦУКЕН, вполне удобно, но эргономические будут ещё лучше. Для английской скорее всего для себя выберу фонетическую раскладку JCUKEN, как на советских компьютерах, я и сейчас на ней работаю на компьютере, уже давно сделал свою механическую клавиатуру (Catboard).

После перехода с QWERTY на JCUKEN в слепой печати, очень быстро забыл первую, похоже скоро потеряю навык печати в ME.


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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 23 Июнь, 2021 12:59 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 128
Comdiv писал(а):
Почему бы не приводить данные по мере освоения? Зачем предположения? В любом случае, данные о рекордах - это не интересно, нужны нормальные статистические данные. Кроме автора бета-тестеров не будет?

Сейчас печатаю со скоростью 130 символов в минуту зряче, и 80 вслепую, но специально не тренируюсь, и не собираюсь, на такого типа клавиатуре обучение слепой печати происходит автоматически, так как одинаковая техника печати, в отличие от механической клавиатуры, где слепая печать это 10-пальцевая техника, а зрячая это 2-4-пальцевая.

Как выпущу клавиатуру, и многие начнут её использовать, тогда и появятся достаточные статистические данные. Пока что ориентируюсь на в чём-то похожую MessegEase.


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

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


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

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


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

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