
"Andreas Huber" <ah2003@gmx.net> writes:
I said long ago that I was going to stop poking at this one, and didn't, because I had the sense that issues in this area, and the way you were reacting to my poking, might indicate that there were other problems.
I can only guess what exactly you mean with this, but it does sound like an accusation of me somehow evading your questions, see below.
That was not my intention. It did seem to me that when several people have said "this aspect of the design seems to complicate things for too little advantage", your reaction was to defend it ever more vigorously, declaring yourself to have "proven" things that seemed to me far from well-founded, and with not very much consideration given to the opposing arguments -- in fact IIRC you said that *no* technical reasoning against the design choice had been given, when I definitely made some techinical arguments. It made me concerned that similar self-justifying thought-processes had gone into other design decisions.
I don't feel as though much progress has been made, and you seem to feel that trying to convince me of anything by example is futile.
I did provide one example many posts ago (the pump in the dishwasher).
Ah, yes; I think that was before I was paying much attention.
Also, let me quote what you had to say about this in another post:
David Abrahams wrote:
I think a foundation for a decision is not flimsy when the behavior in question has proved to be useful in practice. So far nobody, who seems to have experience with non-trivial FSMs, has doubted that it is useful to terminate a state machine when it is destructed (my assumption A1).
I don't doubt that it's often useful. I also think it is surely sometimes highly undesirable. If you remove A1, the "useful" behavior is trivial to achieve without transforming the FSM, so it seems that a design without A1 is both more flexible and more orthogonal.
Since you don't doubt that it's often useful, why exactly should I then provide further examples in support for it? They will surely not convince that your "sometimes highly undesirable" assertion is invalid (that would seem highly illogical).
Good point.
BTW, I don't think that it is completely invalid either. What this all really boils down to is an interface that is easy to use and works well for the vast majority of the use-cases and requires workarounds for a minority of the use cases. I insisted on an example also to show how simple those workarounds can be and I doubt that they can typically even be called workarounds as they don't make machine design worse in any way ^^^^^^^^^^
This is the kind of argumentation I'm talking about. Having to repeat the would-be exit action in all outgoing transitions *is* worse in some ways. Duplication of code or logic is evil. The choice is between having to call the FSM's terminate once, in some controlling scope (e.g. derived class destructor) when you want it, or having to apply a workaround that affects _all_ transitions from _all_ states whose exit actions might fail, or shouldn't run from the FSM's destructor. It seems like a poor design trade-off to me... but didn't I say I was done trying to make points here? ;-)
(especially not with Darryl's trick).
I don't understand it, FWIW.
So really, now I'm going to stop worrying this issue. May other peoples' posts be more helpful than mine have been!
Having slept over this and having spent pretty much the whole morning rereading our posts and reflecting on this whole discussion, I'm a bit at a loss what exactly went wrong. While I tried to always give accurate and to-the-point answers, you seem to have misunderstood them too often, what culminated in your accusation of me reasoning circularily. I don't want to imply that the problem necessarily lies on your side. In the beginning I definitely made the mistake that I assumed too often on what we would agree and what not. However, this alone couldn't possibly have led to the situation we now have. I don't have much of a clue what else I have done wrong.
I'm sorry if my post caused you to agonize over this. You haven't done anything wrong; there's no crisis. Sometimes communication simply fails to be effective. It's not a big deal. I need to disengage from the argument, and thought I should give an explanation. Cheers, -- Dave Abrahams Boost Consulting http://www.boost-consulting.com