Hi, Rishi,

Rishi Oswal wrote:
> 
> Hi. I didn't see it mentioned. But here is a nice
> article on "Lightweight Languages." There is a
> paragraph on rebol with some insights from Joe
> Marshall (main implementor of first version of
> rebol..or so the article says..)
> 
> It classifies languages like python and perl as "worse
> is better" languages and rebol as "a classic case of
> the right thing."
> 

In the context of Rich Gabriel's writing, that's not really
the compliment some would think, and it's also not clear to
me how accurate it currently is (he was talking about
version 1.0, which is outside my experience).

Note that Perl developer Dan Sugalski's wisecrack about
not understanding continuations was taken as evidence that
"Worse Is Better" communities are ignorant of computing
science.  (The concept of continuation occurs nowhere that
I've found in REBOL documentation nor practice.)  Also,
there was the comment in the article:

    Marshall also added that many of the features in the
    first version of REBOL were omitted in the second,
    including his tail-recursion implementation.

That was an interesting footnote, given that tail recursion
is a bit of a sacred cow to "The Right Thing" mentality.


A language that does "The Right Thing" is described by these:

---<begin excerpt>---
* Simplicity -- the design must be simple, both in implementation
  and interface. It is more important for the interface to be
  simple than the implementation. 
* Correctness -- the design must be correct in all observable
  aspects. Incorrectness is simply not allowed. 
* Consistency -- the design must not be inconsistent. A design is
  allowed to be slightly less simple and less complete to avoid
  inconsistency. Consistency is as important as correctness. 
* Completeness -- the design must cover as many important situations
  as is practical.  All reasonably expected cases must be covered.
  Simplicity is not allowed to overly reduce completeness. 
----<end excerpt>----

A language based on "Worse Is Better" is described by these:

---<begin excerpt>---
* Simplicity -- the design must be simple, both in implementation
  and interface. It is more important for the implementation to be
  simple than the interface. Simplicity is the most important
  consideration in a design. 
* Correctness -- the design must be correct in all observable
  aspects. It is slightly better to be simple than correct. 
* Consistency -- the design must not be overly inconsistent.
  Consistency can be sacrificed for simplicity in some cases, but
  it is better to drop those parts of the design that deal with
  less common circumstances than to introduce either
  implementational complexity or inconsistency.
* Completeness -- the design must cover as many important situations
  as is practical.  All reasonably expected cases should be covered.
  Completeness can be sacrificed in favor of any other quality. In
  fact, completeness must sacrificed whenever implementation
  simplicity is jeopardized. Consistency can be sacrificed to achieve
  completeness if simplicity is retained; especially worthless is
  consistency of interface. 
----<end excerpt>----

In conversational usage, I hear "worse is better" used as the
equivalent of "pragmatic, theoretically impure/indifferent, but
popular", and "the right thing" as equivalent to "idealistic,
theoretically pure/consistent, but marginal".


Draw your own conclusions.

-jn-

-- 
; sub REBOL {}; sub head ($) {@_[0]}
REBOL []
# despam: func [e] [replace replace/all e ":" "." "#" "@"]
; sub despam {my ($e) = @_; $e =~ tr/:#/.@/; return "\n$e"}
print head reverse despam "moc:xedef#yleen:leoj" ;
-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to