-
- YACC в руки и
пишитегенерите свой интерпретатор. С ровно таким набором операций, как вам нужно. Cкpипaчпророк(159 знак., 22.02.2024 22:59)- Да похоже на то. Последняя строчка конечно верна, я это уже
проходил столько раз. Но мне а) психологически некомфортен FSM. я
просто за пару лет напрочь забыл как он там работает. Там увы, увы,
очень некомпактно, файл на тысячи строк и работает это... несколько
дико. Я уже поднимал помнится тему что затратно отлаживать
FSM-машины по "аналоговым" входным данным из дикой природы. Такое
сами понимаете (я уже начал от волнения на Вы писать :) ) не
поддается разумному RxTx(477 знак., 22.02.2024 23:09)
- Такую "супер огромную конечную машину" нужно делить на более мелкие
которые работают параллельно. 5 машин с 4 состояниями отладить
легче чем одну с 1000 состояний. А комбинаций состояний у 5 машин
будет даже больше. - Boвa(24.02.2024 09:25 - 10:31)
- Спорно. Во первых, большое количество состояний не гарантирует
возможность разбить их на несколько переменных состояния, во вторых, проще от этого не становится. Проще становится когда
проектируешь не в коде, а в нарисованном на листочке графе
состояний. А в код только переносишь результат. - Cкpипaчпророк(24.02.2024 09:46)
- В общем да, там надо искать другое решение контроля. Сверху. Кстати оказалось что классическим трассированием и
отладкой (и логгингом) отлаживать это Н Е В О З М О Ж Н О. Т.е.
пытались два года, но дико сложно, результаты так себе. Пзц там был
в том, что придание вот такой-то стратегии поведения тут же причиняло другие проблемы. Дело пошло только тогда, когда стала рисоваться
телеметрия состояния FSM (и ведущих датчиков) в виде графиков во
времени. RxTx(185 знак., 24.02.2024 19:20)
- "Стратегия" , "конечные автоматы", "управление", "нейронки" , "зрение" это разные уровни программ. Их должны писать разные люди на разных языках и т.д. И наверное это все не должно быть монолитным. Тут бы привести исчерпывающую монографию про это всё, но у меня её нет, а есть что-то такое, зато с картинками Возможно что-то там можно еще покопать, может и книжку какую-то толковую найдете. Boвa(1 знак., 25.02.2024 12:21, ссылка)
- Жутко любопытно, что за задача? (естественно, без секретных подробностей) - Cкpипaчпророк(25.02.2024 10:13)
- Диды (Хоровиц с Хилом) завещали что черновая версия проекта должна
умещаться на обратной стороне почтового конверта. Если ваш граф
требует нескольких форматов, вы делаете что-то не то. - Boвa(24.02.2024 09:49)
- Схемы же? Или КА? - RxTx(24.02.2024 19:14)
- КА наиболее наглядны в виде графов состояний (см.книгу ниже). Обычно начинают с простенькой схемы на пять-десять "кружочков", которые потом расписывают и дополняют. Cкpипaчпророк(255 знак., 24.02.2024 19:25)
- Черновая версия, да, не спорю. Cкpипaчпророк(732 знак., 24.02.2024 12:23)
- Схемы же? Или КА? - RxTx(24.02.2024 19:14)
- В общем да, там надо искать другое решение контроля. Сверху. Кстати оказалось что классическим трассированием и
отладкой (и логгингом) отлаживать это Н Е В О З М О Ж Н О. Т.е.
пытались два года, но дико сложно, результаты так себе. Пзц там был
в том, что придание вот такой-то стратегии поведения тут же причиняло другие проблемы. Дело пошло только тогда, когда стала рисоваться
телеметрия состояния FSM (и ведущих датчиков) в виде графиков во
времени. RxTx(185 знак., 24.02.2024 19:20)
- Спорно. Во первых, большое количество состояний не гарантирует
возможность разбить их на несколько переменных состояния, во вторых, проще от этого не становится. Проще становится когда
проектируешь не в коде, а в нарисованном на листочке графе
состояний. А в код только переносишь результат. - Cкpипaчпророк(24.02.2024 09:46)
- Для себя, использую protothreads. Автоматы стали чудо как
читабельны. Абсолютно ничего не смущает. Cкpипaчпророк(566 знак., 23.02.2024 15:28, ссылка)
- В последнее время пришлось перейти на вариант с вычисляемыми
метками и goto. Clang (ARMCC v6) оптимизирует свичевые варианты до
невозможности отладки. - Vit(25.02.2024 13:55)
- Что такое "вычисляемые метки"? Можно пример? - AlexBi(25.02.2024 17:35)
- gcc labels as values: SciFi(1 знак., 25.02.2024 17:56, ссылка)
- Спасибо, даже не знал о таком. А где почитать и посмотреть примеры
можно, гугл весьма невнятен? - Andreas(25.02.2024 16:13)
- там, например --> Vit(32 знак., 26.02.2024 09:21, ссылка, ссылка)
- Вычисляемые метки еще хороши тем что не конфликтуют со switch. - Cкpипaчпророк(25.02.2024 14:46)
- Что такое "вычисляемые метки"? Можно пример? - AlexBi(25.02.2024 17:35)
- Спасибо! - RxTx(24.02.2024 19:13)
- В последнее время пришлось перейти на вариант с вычисляемыми
метками и goto. Clang (ARMCC v6) оптимизирует свичевые варианты до
невозможности отладки. - Vit(25.02.2024 13:55)
- Такую "супер огромную конечную машину" нужно делить на более мелкие
которые работают параллельно. 5 машин с 4 состояниями отладить
легче чем одну с 1000 состояний. А комбинаций состояний у 5 машин
будет даже больше. - Boвa(24.02.2024 09:25 - 10:31)
- тогда уже лучше рекомендовать связку bison + flex, это развитие
yacc - klen(22.02.2024 23:04)
- Да. Пардон, я именно их и пробовал, просто забыл. - Cкpипaчпророк(22.02.2024 23:04)
- Да похоже на то. Последняя строчка конечно верна, я это уже
проходил столько раз. Но мне а) психологически некомфортен FSM. я
просто за пару лет напрочь забыл как он там работает. Там увы, увы,
очень некомпактно, файл на тысячи строк и работает это... несколько
дико. Я уже поднимал помнится тему что затратно отлаживать
FSM-машины по "аналоговым" входным данным из дикой природы. Такое
сами понимаете (я уже начал от волнения на Вы писать :) ) не
поддается разумному RxTx(477 знак., 22.02.2024 23:09)
- "Программировать на state machine неудобно." ????!!!!! После
знакомства с языком ST(FBD, LAD), писать на Си автоматы одно
удовольствие. А на богомерзких крестах ваще оргазм. В смысле, ST не
поганый, на нем кроме как правильно писать невозможно. - IBAH(22.02.2024 21:43 - 21:49)
- Это который IEC 61131? А как вы его с Си скрещиваете? - ASDFSUSB-гуру(22.02.2024 21:48)
- А это вторая ветвь моих раздумий. Есть OpenPLC. Это готовая embedded библиотека IEC 61131-3 и редактор. Вот я и думаю, применить OpenPLC? Или скриптовые язычки MicroPython или eLua. (А сегодня SciFi подкинул еще...) - RxTx(22.02.2024 22:19)
- Я не мичуринец, ничего не скрещиваю. Я пользуюсь темиже абстракциями. Функциональные блоки, входы-выходы итп. - IBAH(22.02.2024 21:52)
- Это который IEC 61131? А как вы его с Си скрещиваете? - ASDFSUSB-гуру(22.02.2024 21:48)
- Так прототреды же. Samx(156 знак., 22.02.2024 21:05)
- Де-жа-вю. И по-моему я уже спрашивал про реализацию прототредов на C++. Можно еще раз? :) RxTx(119 знак., 22.02.2024 21:22)
- Есть опыт Pawn и q3vm. Это штуки со своими компиляторами, причём
q3vm - это C90. Там нет проблем "быстро проверить и выйти". Есть
также опыт с васиком от Адама нашего Дункельса (uBASIC), но васик -
это тоска, конечно. И всё это без RTOS. - SciFi(22.02.2024 20:50)
- Тьфу, до меня дошло. Я задал вопрос начисто забыв как делается интерпретация, она же виртуальная машина. С панталыку сбили JIT компилируемые VM. Мне показалось что он войдет в нее и там повиснет :)) Он же сделает шаг интерпретации и выйдет. State внутри виртуальноой машины если надо изменится, но это будет просто мелкий квант на обработку. Зайдет и выйдет. Всё, вопрос решен тогда. Но сейчас буду смотреть выше названное. Спасибо. - RxTx(22.02.2024 21:28)
- YACC в руки и