[REBOL] Re: Is Rebol OO?
From: greggirwin:mindspring at: 12-Jan-2004 11:04
Just some comments, not criticisms, just my perspective.
JC> ...rebol dialects really have not been tested and used my large
JC> numbers of people in complex apps, so we donlt know yet the
JC> deeper implications of using them.
As Gabriele said, Domain Specific Languages are definitely a known
quantity, used widely for a long time. A good example is the game
industry. Most games today are built with a specialized language that
was developed in-house, or built by a vendor whose toolkit you use.
Coding the high-level logic of complex games in C++ just doesn't make
sense, so they build an engine to do the heavy lifting and use a
to it to build the actual game content.
It's really just another form of abstraction.
JC> ...whether it behaves differently or if its sytnax is consistent
JC> or not with their expectations and the parent language.
People don't have to know that a dialect has a "parent language".
What's important is that all the similarities you *can* leverage with
embedded languages reduce the "impedance mistmatch" for users and
makes it more accessible. The less there is to learn, the better, in
Now, in cases where the end user is a regular person--not a programmer
or other "genus geekus" :)--there won't be any expectation, except
that of the domain. That's where it's important to match expectations.
JC> VID for example is one dialect for view. But already in places it is fuses a
JC> slightly different syntactic set of conventions than regular rebol. That is
JC> good or bad depending on your POV. In general I am in favor of as much
JC> syntax consistency as possible.
One of the main reasons I see for not worrying about syntax
compatibility is leverage. The more you constrain yourself in your
DSL, the less opportunity you have to make great strides--focus on the
domain first. Also, we have to separate syntax from semantics. If you
write a block-based dialect, you're going to be syntax compatible with
REBOL; this is one of REBOL's greatest strengths and achievements
IMO--the foundation it gives us to build on, with so little syntax to
get in the way. More importantly, REBOL's syntax allows us to work
with "human syntax" very closely (or at least English syntax, as far
as word-forms and such are concerned).
Think about dialects for humans as much, or more, as dialects for
JC> Python is perhaps the most balanced language where write-ability JC> read-ability.
Python's named function arguments have much to do with this.
I did a named-arg experiment a while back, using a different approach
than Gabriele IIRC. In the general case, I think they help most when
something is poorly designed (e.g. has too many args or bad arg
order), though there were rare occasions when I used them for clarity.
JC> ...In fact its the same problem in real life -
JC> lawyer politicians scientists, rap artists, poets all have their own
JC> dialects and often cannot communicate well.
But they can communicate with each other much more effectively--i.e.
within their domain. That's what it's all about IMO; effective
communication. If your message were not written in a dialect, would it
have been as effective? Consider the following terms:
trolling parent-language syntax VID View POV OO REBOL Python
named-function-arguments namespace Forth GUI
Now consider how much you would have to explain to someone, in order
to convey what "named function arguments" are.
Here's a great paper, from Guy Steele: Growing a Language
JC> Designing Rebol dialects is not easy.
Good post. Every time dialects come up this way, it makes me think,
and re-think, how I want to explain them to people, why I think
they're important, etc. So, thanks!