SetPf
блин а как ее туда- не влезет точно.. 50 - это чего такое. В одном сценарии .это не HA там управлять миром всем - один девайс
Ну в плане вот пример из жизни. Есть какая приточная вентиляция. Ее надо включить, подождать пока откроется заслонка, запустить вентилятор, медленно набирая обороты, начать отслеживать температуру. При превышении максимума сделать одно, при понижении другое. Включить нагреватель, запустить пид.
SetPf
Это все одного уровня процессы, без внутрянки. Просто API сущностей.
SetPf
А еще могут быть настройки, что обороты включить резко, заслонку открывать не надо, ее нет, нагревателю пофиг на низкую температуру.
Yuriy
Это все одного уровня процессы, без внутрянки. Просто API сущностей.
вот то ты описал - никаких трудностей не видно
SetPf
У меня с 5го раза свичкейз вышел еле еле на 500 строк =)
Yuriy
У меня с 5го раза свичкейз вышел еле еле на 500 строк =)
фейл заранее - через пол года никто не сможет и не захочет разбираться - 200 строк - это предел для модуля - больше не удержать в голове - логику его работы - во всех нюансах
SetPf
Хотя я не претендую на красивый код.
SetPf
Я разобрался =)
SetPf
За 2 месяца =))))
Yuriy
да блин - надо было распариться дерево построить и посмотреть - уверен не нужен он такой -просто тебе понравился он таким - что это за стейт машин - для чего
SetPf
Видимо разбираются.
Yuriy
Видал библиотеки под МК где стейт машина TCP занимала тоже несколько тысяч строк.
да и у каждой есть кто ее понимает и может что -нибудь попробовать изменить , или два чела - смена ростится
SetPf
да блин - надо было распариться дерево построить и посмотреть - уверен не нужен он такой -просто тебе понравился он таким - что это за стейт машин - для чего
Рисовал. Я его несколько раз с нуля переписывал. Ну не получается там меньше, слишком много зависимостей перекрестных в реальном оборудовании.
Yuriy
кинь кусочек скрин - прям итригует
SetPf
Ага а потом для восстановления связи с вояджерами вызывают спецов с пенсии, т.к. в этих прогах ужатых уже никто разобратся не может. (Насчет вояджера может наврал, но для какого то космического ЛА было)
SetPf
Yuriy
и вот так много - ну 2000 идут строк. блин. круто
SetPf
Нет, на 3000 там мясо было дикое
SetPf
тут чуть меньше 400 сейчас посмотрел
Yuriy
а не выделяются прям контроллеры - актюаторы
SetPf
А тут - СИ недоООП
SetPf
Там проблема - для разных сценариев ошибки могут быть разные сценарии отключения.
SetPf
И вот как ты не конопатся это несколько похожих свич-кейзов, с мелкими различиями. Городить ИФы -терять читаемость.
Yuriy
Там проблема - для разных сценариев ошибки могут быть разные сценарии отключения.
блин мне кажется статический анализатор не уверен будет сколько там может быть ошибок - ну С - это серьезные парни пишут разберуться
Yuriy
И вот как ты не конопатся это несколько похожих свич-кейзов, с мелкими различиями. Городить ИФы -терять читаемость.
ну разбить хоть как то монолит -ооп в си тоже может быть - не так красиво удобно - но всё лучше - вертикальный скрол до места - это уже проблема
SetPf
она прям вся в себе, я долго думал как ее на логические шаги разбить, ничего не придумал.
SetPf
Это длинный процесс взаимодействия 10+ актуаторов и сенсоров. Смешанный в реальности.
SetPf
Я разбил, это вынес внутренний их кипеш, оставив только АПИ и объекты
Yuriy
А зачем его разбивать этот свичкейз это одна большая бизнеслогика
https://github.com/ytrikoz/garlandproject -посмотри понятно же что делается (это не то хорошо писанано - не подуй не к этому) - про разбивание. так вот внести в подобное изменение легко прогнозируемо и результат можно до эксплуаьации понять и заменить составные части - тоже не проблема - при чем сложность общая будет как у тебя - и не помещает. А так это 80% букв убрать - они лишние там -в одну функцию слить - легко знать где всё - там - не надо искать файл
romanetz
Есть, большие дорогие скады графически програмируют, но на выходе то бинарь
Некоторые большие дорогие скады графику FBD в сишный исходник превращают, и потом его компилят, а сверху визуализацию питоном обрабатывают
Yuriy
Некоторые большие дорогие скады графику FBD в сишный исходник превращают, и потом его компилят, а сверху визуализацию питоном обрабатывают
вот - не просто же так.. а для чего так ? генерить пайтом с код - нормально вот - писать сложно не хочется - кодогенарация вообще вешь пробовал что в visual code плагин котроый за тебя пишет?
romanetz
питонический интерпертатор используется из-за ООП и, внезапно, потому что он интерпретатор сишный код - для скорости работы
SetPf
Т.к. фактически это будет тот же свичкейз
romanetz
на Си в апроле пишется то, что работает на ПЛК и рантайме (большие проекты у европейцев - сотня-другая ПЛК, компилится два дня)
SetPf
ИМХО я пробовал, свичкейз оказался читаеме сильно. Если его правильн сверху вниз писать.
Yuriy
Ну тип разбить свичкей на кезый на массив функций это не много не то.
я не пример - как надо - просто что имел ввиду илюстрация
SetPf
Я понимаю. Но это фактически тоже самое.
Yuriy
Т.к. фактически это будет тот же свичкейз
фактически всё для человека - компилятору вообще не надо - он goto label - зайдет - для людей - надо. ну мне проще. tasmota - исходник кто-нибудь детально погружался
SetPf
Альтернативу единственную я нашел. Это какое то ТРУ ООП с мессадж шиной
SetPf
Но блин там столько сверху надо накидывать. А а по факту, один хрен будет в центре свичкейз который раскидывает месаджы.
SetPf
Т.к. процесс он один фиг постепенное единое целое.
romanetz
так на стейт-машинах, пожалуй, всё асутп
romanetz
а хитрожопости там ООПшной не особо
Sid
а хитрожопости там ООПшной не особо
Ну ооп это форк процедурки же
Sid
С большей вариативностью и всякими наследованиями и тд
SetPf
а хитрожопости там ООПшной не особо
Ну потому, что насколько я понимаю, все актуаторы сами по себе уже объекты с апи реальные.
Yuriy
почему он пишет не x == 1 а 1 == x- это стайл гайд какой то?
Sid
а хитрожопости там ООПшной не особо
Стейт манина еще называется конечный автомат
SetPf
Я вот с тру АСУТП не работал ни разу, только велосипед.
Sid
почему он пишет не x == 1 а 1 == x- это стайл гайд какой то?
Нюансы компилятора и промышленных стандартов
Yuriy
Нюансы компилятора и промышленных стандартов
типа ну автоматом пишет уже так -всё- tasmota - не подвержена нюансам стандартов промышленных. но понятно - где так и думал -- просто какая ересь - а им типа таже кажется x == 1
Sid
Я про 1 == х
Yuriy
Это не ересь
я про свое ограниченое восприятие говорю
romanetz
я больше скажу, косяки вылазят не в алгоритмах - не в том, что код неверный
Yuriy
Я про 1 == х
x ==1 или 1 == x конечно наверно научные работы есть - и статистика - не сомневаюсь - решение же принималось . про компиляторы - понять легко - надо ему так - всё пиши так.. про удобство и наглядность ... ну не знаю. наверно надо проникнуться
romanetz
а косяки вылазят оттого, что во времени процесс или железо ведёт себя совсем не так, как предполагают программисты
romanetz
там самая нужная вещь - trace
Sid
а косяки вылазят оттого, что во времени процесс или железо ведёт себя совсем не так, как предполагают программисты
Поэтому у нас пиво например говно, тк пускают линию а за сервис через год когда параметры поплывут кладут))
Sid
нет не поэтому
В том числе
romanetz
пиво говно потому, что хозяин производства так хочет для снижения себеса
Yuriy
потому что думали " почему говно" - а не думали "как хорошо сделать"
romanetz
автоматика выполняет то, на что настроена
Sid
пиво говно потому, что хозяин производства так хочет для снижения себеса
Там себестоимость копеечная, почти все автоматизирлвано
SetPf
я больше скажу, косяки вылазят не в алгоритмах - не в том, что код неверный
С моей не опытной колокольни самые болезненые косяки - архитектурные. Вот задумал ты какое действо на конечном автомате, прикинул, вроде хорошо все встает. А потом когда дописываешь, понимаешь, что без костылей не встает. Что вот тут течет абстракция, которая все на***ет . Или нужно чего добавить, а ты этого не ожидал и оно вообще не лезет =\
Sid
автоматика выполняет то, на что настроена
Вот, но параметры могут плыть, осадок в трубах, термодатчик поплыл со временем и т.д.
romanetz
да фигня всё это. нету там такого