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

Re: exception systems



I dunno, Will.  I'm familiar with the ball of mud vs diamond metaphor,
but I'm afraid each has not only a whimsy quality but also a power
quality.  Diamonds, to me, say "don't touch this, it's pristine;
you'll damage it".  Mud, to me, says "go ahead, add more glop. you'll
never be able to tell and i'll always be able to assert you've added
too much or too little, as suits me".

I think Mr. Potatohead beats out a ball of mud or a diamond.  I want
small modules that have plainly identified scope and purpose and
interfaces and which you can choose to either include or exclude.  I
don't want something that forces me to view everything as mashed
potatoes, with either a small helping or a large helping and where I
am judged as piggy for wanting a large helping or as tastefully
restrained for eating light.  I want to make the choice on the basis
of some sense of intelligent analysis of what features I want and if
that ends up meaning I want a larger or smaller system, then so be it.

But I also want to see the community come together on this.  The more
you leave these as an exercise to the community, the less the
community can ever "move on" beyond these issues to other, more
interesting ones.  You condemn every user to having to spend time
shopping for and comparing systems, when it's time we as designers did
that.  Now nearly 20 years after the invention of Scheme, it is time
to stop talking about whether exception systems or multiple
inheritance systems are a good idea.  It's time to either get our act
together and pick one we can all live with, or to admit that we're
just deadlocked.

Gerry Sussman has observed, and I think he's right, that the principle
value of computer science in the modern era is what it contributes to
our simple English (i.e., natural language) vocabulary ability to
speak about computational processes.  Scheme contributes nothing in
this regard in the sense that its terminology has not continued to
progress.  Most of what it has to say to anyone has long ago been
said.  Indeed, it holds up those who follow it if it refuses to ever
take a stand on issues that are part of the standard discourse
anywhere in computer science and have been for ages.  Scheme has
exactly the right terms ("continuations" as first class objects, the
ability to do various kinds of procedural abstraction) for building to
such a discussion but refuses to carry this any farther and so creates
a forced tower of babel among those who would discuss these issues
because they must first do a handshake on the issue of which object
system, which exception system, etc. and then (only if they reach
agreement, which is not always) can they have a dialog on the
specifics of some shared concern that reaches beyond.  And probably by
the time they reach agreement, they are too tired to talk about much
of anything.  So, inevitably, smart people in one end of SchemeLand
are left not talking to other smart people in another end ABOUT their
common language instead of USING their common language to talk about
things that rise above it.  What a way to waste some people's entire
lifetime...

Surely this must be the reason Alan Bawden is so keen to see the design
process put in the hands of the users...