From: Iain K. Hanson (ikh_at_[hidden])
Date: 2005-03-06 21:16:12
On Sun, Mar 06, 2005 at 07:42:59PM +0100, Andreas Huber wrote:
> Hi Iain,
> Thanks for your review!
I'm sorry it had to be negative but I did try to warn you when we discussed
> So, if you or anyone else has
> a good idea how all the requirements can be satisfied while keeping the
> performance comparable to hand-written FSMs I'd be very interested to
> hear it.
Thanks for the history that I've sniped. I understand fully what you mean. I
have had the similar problems with my sockets library. The problem IMHO is a
lack of meta-programming skills ( I've certainly suffered from ). However,
Czarnecki & Eisenecker showed that C++ is Church Turring complete at compile
time so as long as this conjecture holds it has to be doable.
The approach that I believe would have the greatest chance of sucess would
be to use layered ( GenVoca style ) implementation mixed with CRTP to
provide two way communication between the layers to form a policy based design.
Users would then use a DSL to specify there requirements and a generator
would build the FSM.
> > I have a serrious problems with this library. FSM is a design pattern
> > and
> > they can be spellt in a wide variety of ways. E.g state transition
> > tables Deterministic Finite Automata, Coloured Petri Nets, and Harrel
> > / UML state charts. There are equallly, many ways of implementing
> > FSMs. Calling this library the FSM libray would be like submitting
> > multimap and calling it the collections library.
> That's fine with me. As I wrote in the known issues section I wouldn't
> mind changing the name. I guess it is best to vote on this.
A name change would only solve part of my problem with this submission. I
strongly believe that the C++ you only pay what is absolutely necessary
for what you use can not be breached for a boost library.
particularly as I have said above, with better meta-programmingi, constant
time event dispatch and transition have to be achiveable given CT completness.
I.e. event dispatch should idealy be a single indirection but I could live
with double dispatch and a transition should idealy be an assignment.
I'll address the reat tomorrow as I'm tired and it is late.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk