-
- Припомнился вариант без явного GOTO Vit(748 знак., 15.04.2019 12:02)
- Мой вариант - намного лучше. Собственно состояния - прототридсы. goto это переход на мини блоки инициализации каждого из состояний. Скрипач(232 знак., 15.04.2019 12:20)
- Вопрос был как попасть из разных мест. А метка - хоть и точка входа на графе, но это и состояние. Хорошо, когда можно упростить, но иногда нужно и документировать. - Vit(15.04.2019 13:23)
- Именно что документировать. А не подменять документацию "осмысленными именами переменных". Вы правы в том смысле, что если уж пишем prototreads, то переход между состояниями КА неплохо бы сделать частью этой библиотеки. Скрипач(218 знак., 15.04.2019 14:10 - 14:34)
- Анонимность состояний Protothreads это не священная корова. Лечится, если нужно. Вопрос не в выборе между switch, goto или Protothreads. Переход через точку входа должен изменить состояние, иначе это не документируется (разве что вручную), а кроме Vit(204 знак., 15.04.2019 15:32)
- Есть состояние, а есть дуги переходов. Скрипач(501 знак., 15.04.2019 16:05 - 16:10)
- Я пользуюсь goto и не стесняюсь. Но goto, необходимые для алгоритма, а не для работы с анонимными состояниями, у меня обернуты - добавляется изменение переменной состояния. Я показал как при switch можно обеспечить переход на ТОЧКУ ВХОДА из Vit(1042 знак., 15.04.2019 17:08)
- Ничего не поделаешь, я ставил перед собой задачу подружить именно protothreads с проименованными состояниями. Скрипач(385 знак., 15.04.2019 21:03 - 21:06)
- Я пользуюсь goto и не стесняюсь. Но goto, необходимые для алгоритма, а не для работы с анонимными состояниями, у меня обернуты - добавляется изменение переменной состояния. Я показал как при switch можно обеспечить переход на ТОЧКУ ВХОДА из Vit(1042 знак., 15.04.2019 17:08)
- Есть состояние, а есть дуги переходов. Скрипач(501 знак., 15.04.2019 16:05 - 16:10)
- Вы наверно, в каком-то другом мире живете, где есть время на документирование ПО, остается только завидовать. - VLLV(15.04.2019 14:35)
- Да, в другом (хмуро). И на документирование ПО, и на журнал версий ПО, и на code review. - Скрипач(15.04.2019 14:45 - 14:52)
- Если уж коверкать слова, предлагаю не прототриды, а пуськи бятые. Ну и switch всего лишь потому, что в рамках стандартного Си только так и можно. GCC даёт расширение "labels as values", с ним гораздо эффективнее. - SciFi(15.04.2019 14:17 - 14:21)
- 1) Исправил 2) А вы готовы закладывать в архитектуру уникальную особенность одного единственного (хоть и мега-крутого) компилятора? Скрипач(57 знак., 15.04.2019 14:34)
- Анонимность состояний Protothreads это не священная корова. Лечится, если нужно. Вопрос не в выборе между switch, goto или Protothreads. Переход через точку входа должен изменить состояние, иначе это не документируется (разве что вручную), а кроме Vit(204 знак., 15.04.2019 15:32)
- Именно что документировать. А не подменять документацию "осмысленными именами переменных". Вы правы в том смысле, что если уж пишем prototreads, то переход между состояниями КА неплохо бы сделать частью этой библиотеки. Скрипач(218 знак., 15.04.2019 14:10 - 14:34)
- Вопрос был как попасть из разных мест. А метка - хоть и точка входа на графе, но это и состояние. Хорошо, когда можно упростить, но иногда нужно и документировать. - Vit(15.04.2019 13:23)
- Мой вариант - намного лучше. Собственно состояния - прототридсы. goto это переход на мини блоки инициализации каждого из состояний. Скрипач(232 знак., 15.04.2019 12:20)
- офигеть, это всерьез? А то, что состояние - это не место в коде, а банальная переменная, которая выбирает место в коде - не рассматривается? т.е. массив функций по индексу - открытие? - VLLV(12.04.2019 16:04)
- Т.е. продолжаем прыгать, но не специально созданной для этого инструкцией, а каким-то через-оппным способом, нагородив кучу лишнего, загромождающего синтаксиса?! Скрипач(58 знак., 12.04.2019 16:43)
- Какой еще оопный способ в записи function[state]() ? А что касается читабельности, то 1) см ссылку 2) я сопровождаю старые проекты, написанные "в лоб", и новые, с использованием возможностей препроцессора, и могу сравнивать. На днях маханул шашкой VLLV(67 знак., 12.04.2019 16:51, ссылка)
- По сравнению с меткой? Две сущности вместо одной. Четыре строки текста вместо одной. Вызов функции не может быть именно в том месте где меняем состояние, нужен отдельно планировщик - еще несколько строк текста там, где они не нужны. Скрипач(117 знак., 12.04.2019 16:58)
- Планировщик - это одна строка "for (;;)". Но ладно, я сдаюсь, спишем неприятие GOTO на мою тупость ;) - VLLV(12.04.2019 18:14)
- На добивание. Скрипач(244 знак., 12.04.2019 18:38)
- Точно также! :) VLLV(341 знак., 12.04.2019 18:43)
- Параметры где? function[head.state](input1,output1,fault1,option1,option3) ? И на каждое состояние ОТДЕЛЬНАЯ функция? И на каждый тип агрегата отдельный тип массива функций? - Скрипач(12.04.2019 19:25 - 19:29)
- тут не просто один тип массива - просто один массив) Но это скорёе извращение, обычно на структуру агрегатора передается указатель. И параметров меньше нужно передавать. - VLLV(12.04.2019 20:19)
- Еще одна сущность.Ну и проверки типов, как я понимаю... придумали трусы? :) Скрипач(557 знак., 12.04.2019 20:25 - 20:37)
- Усё, здаюсь - VLLV(12.04.2019 20:34)
- Это зря. Со злом надо бороться) - s_h_e(13.04.2019 09:24)
- Усё, здаюсь - VLLV(12.04.2019 20:34)
- Еще одна сущность.Ну и проверки типов, как я понимаю... придумали трусы? :) Скрипач(557 знак., 12.04.2019 20:25 - 20:37)
- тут не просто один тип массива - просто один массив) Но это скорёе извращение, обычно на структуру агрегатора передается указатель. И параметров меньше нужно передавать. - VLLV(12.04.2019 20:19)
- Параметры где? function[head.state](input1,output1,fault1,option1,option3) ? И на каждое состояние ОТДЕЛЬНАЯ функция? И на каждый тип агрегата отдельный тип массива функций? - Скрипач(12.04.2019 19:25 - 19:29)
- Точно также! :) VLLV(341 знак., 12.04.2019 18:43)
- Не соглашусь с тобой, Гудвин(27 знак., 12.04.2019 18:18)
- Застал на липистрониксе срач на эту тему. Зажигал небезызвестный koyodza :-) - SciFi(12.04.2019 18:39)
- Не прижилось - думать надо - то ли (0), то ли (1) :) - VLLV(12.04.2019 18:29)
- На добивание. Скрипач(244 знак., 12.04.2019 18:38)
- Планировщик - это одна строка "for (;;)". Но ладно, я сдаюсь, спишем неприятие GOTO на мою тупость ;) - VLLV(12.04.2019 18:14)
- По сравнению с меткой? Две сущности вместо одной. Четыре строки текста вместо одной. Вызов функции не может быть именно в том месте где меняем состояние, нужен отдельно планировщик - еще несколько строк текста там, где они не нужны. Скрипач(117 знак., 12.04.2019 16:58)
- Какой еще оопный способ в записи function[state]() ? А что касается читабельности, то 1) см ссылку 2) я сопровождаю старые проекты, написанные "в лоб", и новые, с использованием возможностей препроцессора, и могу сравнивать. На днях маханул шашкой VLLV(67 знак., 12.04.2019 16:51, ссылка)
- дело скорей не в GOTO а в парадигме, если однозначно переносим отлаженный автомат в код, то можно и в GOTO и ассемблер, а если структурное программирование, то прыгать запрещено. - NAUT(12.04.2019 16:35)
- Т.е. продолжаем прыгать, но не специально созданной для этого инструкцией, а каким-то через-оппным способом, нагородив кучу лишнего, загромождающего синтаксиса?! Скрипач(58 знак., 12.04.2019 16:43)
- Гордий вертится в гробу... - SciFi(12.04.2019 15:18)
- Их сжыгали. Язычники, фуле... - mse homjak(12.04.2019 15:21)
- Припомнился вариант без явного GOTO Vit(748 знак., 15.04.2019 12:02)