[REBOL] Re: Comparing logic! [was Re: WYSIWYG programming]
From: joel:neely:fedex at: 29-Oct-2000 7:48
warning: enthusiastic praise for REBOL, mixed with non-specific
philosophical rambling ahead ;-)
> > If by "subjective" you mean "simply a matter of opinion" then I
> > disagree emphatically. If you mean "sufficiently subtle that they
> > cannot be defined in a 15-second sound bite" or "unlikely to be
> > assessed reliably by someone without significant experience", then
> > I wholeheartedly agree.
> Sort of. In the mathematical space yes they can be defined without
> subjectivity. Outside of that space where the 15-second sound bite
> and attention-deficit disorder reign supreme, a space where Rebol
> needs to communicate - they are subjective.
I disagree. They are not "subjective"; they are simply "not yet
learned" or "not thought through". The whole of Donald Norman's
book _The_Design_of__Everyday_Things_ is about how poor design makes
things that APPEAR simple on the surface too complicated to use.
This applies even in the most non-technical of devices and systems.
Norman gives an example illustrated with a photo, but it's such a
good one that I'll bet it'll work in words only (credit to him).
Imagine approaching a glass door with identical (mirror-image)
handles on both sides. How do you open the door? Well, most of
us have probably had this experience, and have either pushed or
pulled initially, only to find out that we guessed incorrectly
and had to stop and reverse our action to get the door open.
Now, suppose you're approaching a glass door with a vertical
handle on one side, and a flat horizontal panel across the
corresponding area on the other side. Regardless of which side
you're on, you'll probably understand immediately and intuitively
that you pull on the handle and push on the flat panel.
Same problem, same number of "moving parts", yet everyone with
whom I've discussed this illustration has immediately recognized
the second solution as more elegant.
Sometimes designers create artifacts that INITIALLY SEEM more
elegant to your "attention-deficit" general audience, simply
because there are fewer "moving parts". However, an experienced
designer may be able to use the same number of moving parts to
create something which is in the long run simpler to understand
and may be used by Joe Sixpack with more ease, accuracy, and
efficiency. Even if it takes one or two MORE moving parts, I
think we'd both agree that increased comprehensibility and utility
are the true measures.
It may require experience to predict subtle consequences of early
design decisions, and an experienced designer may very well "feel
that something's wrong" before he thinks it through in sufficient
detail to verbalize the negative consequences in concrete terms.
But Joe Sixpack usually WILL figure out over time which solution
is more elegant -- it's just that he may have to bruise his
knuckles a few more times to get the point.
As professional information systems designers, all of us have the
duty to be watching out for his knuckles!
> One aspect of that subjectivity is for example the Rebol send
> function. This function seems minimalist to many, yet those who
> know how to deconstruct that functionality will not consider it to
> be part of a minimalist set of functions. That's the feel I was
> trying to get at with the reference to Mathematical space and
> subjectivity. It depends on your context.
Well, let's do a touch more analysis of this example. Instead of
let's consider that a function has has two aspects:
its interface and its implementation.
REBOL's INTERFACE to network protocols IS elegant and minimalist,
even though the IMPLEMENTATION is (necessarily) a bit complicated
to shield the user from all the details of socket programming.
By abstracting away from the implementation details of all of the
various network protocols to give the user a streamlined, obvious,
and consistent interface
foo: read %/export/home/mydata.text
foo: read http://www.rebol.com/
foo: read ftp://ftp.boxname.dom/pub/path/file.Z
REBOL makes it possible for "the rest of us" to use the power of
the 'Net and concentrate on WHAT we want to do without having to
get tangled up in complex issues of HOW it is done at some low
level of protocol detail.
That's both EXCELLENT and ELEGANT, IMHO.
(And that excellence is actually why I react so strongly to the
kinds of inconsistencies we've discussed in this thread -- they
seem so out of character for such an otherwise great language!)
I think we're actually in agreement -- comprehnensibility and
utility are the true measures. Experience and lots of reading
and study on design have taught me that "simple-looking" may be
only skin deep, but true elegance goes all the way to the bone.