Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] Re: Is Rebol OO?

From: greggirwin:mindspring at: 12-Jan-2004 11:04

Hi Jason, 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 dialected interface 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 most cases. 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 developers. 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 http://homepages.inf.ed.ac.uk/wadler/steele-oopsla98.pdf JC> Designing Rebol dialects is not easy. Agreed 100%. 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! --Gregg