It was about time: David Harel and the Rational/IBM/UML gang fully specified state machines syntax and semantics and its graphical representation. Combined with a network transparent asynchronous messaging system based on Robin Milner’s Pi Calculus, the justification to model state machines to be used in C++ component development is reborn.
As Alan Cox pointed out
“A computer is a state machine. Threads are for people who can’t program state machines.”
creating a statemachine is not always that easy. But with a little help, we – the small group of 3 million C++ hackers – might get it right for the first time modeling a state machine by breaking it down into states, events and transitions instead of creating chaotic switch case monsters.
So after taking a look at boost FSM and other cruel – mostly code generating – attempts to implement these hyped UML state charts, I realized that none of them reveals a pragmatic spirit. Now, I understand why nobody wants to trade one monster with another.
What we really need is something that is
And that’s what I am creating right now: The first version of a hierarchical, concurrent state machine engine is ready for use. It needs to be tested and requires some more features to implement the complete UML state chart specification, but it already is in use for a great number of classes I have implemented the last few weeks.
So state tuned for a new C++ gadget!