| What do you think about hierarchical state machine [1] ? >Has it already been through state X? Like everything else, logging >Will it come back to this state in the future? Mentioned in the comment before, there is a transition graph that you can do static analysis on, note that you might run into a halting problem >Is there a route from state Y to state Z? There is a transition graph >State machines are effectively goto writ large... quoting Prof Carl Hewitt of Actor Model, "goto is harmless"[2], function/procedure call is a goto, much like sending an named event while in particular state with/out parameters [1] https://en.wikipedia.org/wiki/UML_state_machine [2] https://www.youtube.com/watch?v=7erJ1DV_Tlo&t=34m54s note: edited for formatting |
Would need to see what the implementation actually looked like and how it was worked on. The graphs may look nice, but I've never seen people program effectively by editing graphs.
> Mentioned in the comment before, there is a transition graph that you can do static analysis on, note that you might run into a halting problem
Sure, but the graph seems to be very much secondary. You don't step through the graph in a debugger, for example.
> quoting Prof Carl Hewitt of Actor Model, "goto is harmless"[2]
Not at all convinced, and he fails to make any real case for it. I've worked on actor systems, and they're bad in the same way that unstructured code is bad.
> function/procedure call is a goto,
It's not, because you still have the call stack. You know where you came from and why (and can see it in the debugger), and you know you're going back there. You can reason compositionally, because in g(f(x)) f is a black box and always will be even if it gets refactored, whereas there's no equivalent "locality" in a state machine.
> much like sending an named event while in particular state with/out parameters
That also sounds like a bad way of doing things.