Черновая версия, да, не спорю. На практике обычно переходы между состояниями являются достаточно сложными процессами, с генерируемыми задержками и контролем обратной связи.
Их много и они не особо унифицируются.
Да, их действительно можно загнать в отдельные автоматы, но читабельность это не увеличит. Я пробовал.
А вот protothread - это да. Если все возможные задержки перестают быть отдельными состояниями, общий размер текста программы сокращается в несколько раз.
Появляются довольно длинные "линейные элементы".
Большинство алгоритмов становится "псевдо-линейными", что-то типа: ждем включения, включаем, нагреваем, охлаждаем, zero-band, выключаем.
(а на самом деле полсотни неименованных состояний, которые в ветвях перехода сидят, читабельность - на уровне)