Having realized that my last few posts might have come across as
critical of Rebol Inc.'s strategy, prospects, etc., I thought I'd post a
sort of "feel good" message and lay out why I think Rebol is important,
what's good about it, etc. Sort of in the vein of OpMan's post. Here's
why I think Rebol has a shot.
It's terse. It gets its expressive power from having a few high-level
abstractions that can be combined in a common way and applied uniformly
to solving a wide range of problems. In that, it's like the conceptual
core of UNIX. It lends itself well to the "software tools" approach:
small, specialized "tools" (functions and objects, in Rebol) that plug
together seamlessly. The integration of certain high-level concepts ---
I'm thinking network protocol handling --- into the most basic language
constructs and data structures is pure, beautiful genius. All of this
together means that you can (hypothetically, modulo real world issues
like lack of DB support ;-) write very powerful applications in a very
small amount of clear, concise code.
This is *huge.* The biggest problem (IMO) in real-world software
development is complexity bloat. Complexity is largely a function of
conceptual surface area of interface; the bigger the interface, the
more likely it is to be broken at a design level and the more likely it
is to be misunderstood and misused by the people that have to use it.
On another front, most software defects occur in functions in which the
implementation is longer than "a page" of code; those 500-line
case/switch statements are an enormous (literally) bug trap. So, as
developers, it behooves us to write *as little code as possible* in
order to guarantee correct, bug-free behavior.
Unfortunately, the languages we're saddled with operate at a generally
lower-than-optimal level of abstraction. Further, there are increasing
"impedance mismatches" when multiple systems need to be integrated. If
I'm going to write a website that reads USENET news and interacts with a
personalization database, I've got to deal with several key integration
points: NNTP, HTTP, the DB interface itself, SQL, etc. etc. The
ability to capture and use all of those interfaces in a common set of
abstractions is *absolutely* a winning proposition.
Rebol is about the only game in town on that front. It's the only thing
that even approaches, on a network level, the kind of plug-and-play
simplicity that UNIX shells offer to traditional file-and-stream
oriented tasks. Is there room for an alternative to Perl, Python, etc.
in Internet / Web "scripting"? Absolutely, if it raises that
abstraction bar and lets people write small, powerful, high-quality apps
that integrate lots of data sources and functionality. If it's easier
to do in Rebol, and faster (therefore cheaper) and results in
higher-quality, easier-to-maintain code --- it's a Big Win.
Back to my soap box to close:
The key thing to realize is that in order to make sure that Our Favorite
Fledging Language makes it to adolesence (and relevance) we have to
optimize on the set of people we can solve the most pressing problems
for, the set that's going to give us the most bang for the buck in terms
of recognition, propagation, adoption, and visibility. Given the
attention and resources devoted to Web application development today,
IMO that means Web developers.
I'm all for a revolution. But when you throw one, you want to storm the
state or national Capitol Building, not the County Courthouse. :-) Once
you take the Capitol, you can then focus on solving the real problems
that lead you to throw the revolution in the first place.
Or, put another way: if you want to overthrow the Web, you have to
co-opt it first, subvert it, and then pick away at it. It's just got
too much money, attention, and inertia to allow it to be outflanked at
this point.
$0.02,
jb