[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Complexity, yet again



In reply to: David A. Moon <Moon at SCRC-STONY-BROOK.ARPA>

One last thought.  Moon says:

    In my view, forcing the user to choose between exploratory and production
    modes would be an increase in cognitive complexity, not a decrease!

I agree that this is true, other things being equal.  But according to
my second principle of apparent complexity (the one about users needing
a coherent mental model of the underlying implementation in order to
feel secure), two distinct modes might be preferable if both have
simple, obvious implementations while the one "both flexible and super
efficient mode" depends on a lot of complicated hidden machinery.  In
"flexible but not super efficient mode", it is easy to see that certain
things require runtime lookups, and that these lookups can usually be
short-circuited by cacheing; in "super efficient but not flexible mode",
it is easy to see which things would be tensely coded inline.  I'd feel
more secure this way, even if I can pretty much trust the hairy
single-mode machienry not to break on me.

Maybe I'm thinking like an implementor here -- I pried the lid off the
box and what I saw scared the hell out of me -- but as I said, most good
programmers want to have SOME model of the implementation to guide them.
It might be worth discussing this with some non-implementors and seeing
if this kind of thing bothers them.

-- Scott