Comments on: Cool language tricks are just that.

Carl Sassenrath, CTO
REBOL Technologies
2-May-2006 20:28 GMT

Article #0018
Main page || Index || Prior Article [0017] || Next Article [0019] || 7 Comments || Send feedback

REBOL is a creative person's language. Because of that, there's an endless variety of cool language tricks and features that one can invent -- especially in an agile flexible language like REBOL. Some of these are useful, but many are not.

Unfortunately, after inventing a new cool language feature, the first thing many programmers want to do is add it to the language. But is this really wise? Is a language just a stew of little features?

Not really. A language must be bigger than that. It is a way of thinking - a means of matching actions and patterns, not a collection of little fragments glued together.

Now there are a good number of very common patterns, such as a while loop, and there are many times more uncommon patterns. I'm sure you have your favorites. At issue is when do we decide that a pattern, action, or function, should be an official part of the language? That process should be taken seriously. There are dozens of bloated languages that have thousands of functions and features, of which very few are used.

This is a practical matter, not an academic or design matter. It's not can a feature be added, it's should a feature be added. If the feature is used by one programmer once a year is it worth adding? If a feature is obscure to understand or hard to use, should it be part of the standard?

I'd say no. Leave it out or make it part of a special features package or extra component module. I'd much prefer REBOL remain compact and lightweight. (And, I will be the first to admit that RT is often guilty of making this mistake... some of which we will purge in REBOL 3.0.)

Of course, nothing stops you from using your own special language features or packages. And, if you find that dozens of programmers are using your feature, then it's probably time to consider adding it. A good example is Ladislav's Include package. A lot of people use it, and a lot more would use it if it were included (so, yes, it will be).

Please, do not get me wrong. I'm not saying stop inventing cool language features, and I'm not saying stop suggesting adding them to REBOL. What I am saying is weigh the merits of each feature. Filter out less used patterns by publishing them within the REBOL community and see how popular they become. Then, if you've got a crowd using it, please be sure to knock down my door and make me aware of it. I guarantee I'll be interested in hearing about it.



Brian Hawley
2-May-2006 17:20
No offense taken :)

As for Ladislav's Include, I assume it will be incorporated after changes to make it compatible with modules and whatever other new language features that would affect it. Or is it being used as the basis of the new modules?

John Niclasen
3-May-2006 6:04
I very much agree, that the number of features and words should be kept at a minimum. Let's speculate, what would happen, if it wasn't this way. By adding new features and words will mean, that in a few years, the documentation for REBOL/Core and /View would become so huge, that a new person to the language would feel like, what you experience when starting to program for e.g. OS X. There are so many possibilities and APIs, that you don't know where to start.

REBOL/Core and REBOL/View should be light-weight! Features could be handled by modules, but those has to be light-weight too with a clean interface.

When designing REBOL 3, it should be considered, if anyone of those features and words in REBOL 2 really should be in there. If support for modules is added, then backward compatibility can be handled by a module! Something like:


include "rebol2.r"

"here goes an old program, that wouldn't run on REBOL 3 natively, but with the rebol2 module, it will work"

Is that an idea?

John Niclasen
3-May-2006 6:05
I very much like one the original ideas with REBOL, that "simple things should be simple to do".
3-May-2006 8:55
Agree with you, Carl.

The question is "What do we need the most to make good programming ?" and not "What can be cool ?". In this case, why not adding mp3 and mpeg capabilities inside rebol ?

That's why I think that "!=" is not a good idea. It's less confusing for beginners if there is only one natural way to do something.

3-May-2006 9:45
Nah, I'm all for "add everything that a sane person might think of, and then some!" I mean, that's how we got perl, ain't it :)
John Niclasen
3-May-2006 17:07
I feel like strongen my point of view on this blog. I often compare system developing with building a tall building. The language is the foundation (the base), and it has to be strong! A weak foundation can only lead to problems later on.

I have no problem with cutting backward compatibility, if it's possible to get it with little effort. Having to make an include in an old program to get it to work on a new version of the language is ok with me.

So Carl, do all you can to make REBOL 3 as strong a foundation for us developers as possible. If you feel, REBOL will be stronger leaving something out, we had in the past, do it! Make the core of the language as light-weight, strong and clever as possible. And it can be done without cutting off possibilities. Endless possibilities can be built on top of a strong foundation.

Pier Johnson
3-May-2006 17:07
:) "Must be backward compatible" is a horrible excuse.

The REBOL virtual computer is all of 648 KB (663,552 bytes) on my XP controlled hard disk.

If you have a system of script-files written for a version of REBOL less than 3.0, then run that tiny REBOL virtual computer in its own process, whatever version it is.

Write new systems with REBOL 3.0.

REBOL is about words, not in the technical sense (not word!), but in the human sense. REBOL is about writing permanent defintionals labeled with words that become part of YOUR dictionary.

Your words reflect how you define your world. Your REBOL script-files should be the result of composition of expression using your words.

More importantly, REBOL is about phrases. Once your vocabulary grows, your REBOL script should reflect your growing capabableness of expression, like any wordsmith who becomes more accomplished.

Your REBOL script should look more like the one liners, than pages of some garbage like C++, Java, C##.

Your REBOL script should read like specification of acts. With REBOL, you're writing, not programming.

You should concern yourself less with what you "said" in previous REBOL script-files and focus more upon what you can say in your next script-files because your personal dictionary contains better words that allows you to say more with fewer words.

If this isn't how you're approaching REBOL, then perhaps you need to de-program yourself from any mental indoctrination you received from High Priests of Academia with their Church of Scientia and false preaching.

REBOLing is about thoughtful design first. You should start with "a clean sheet of paper" and think about about the simplest possible way to make a computer operate.

REBOLing is about "write, test , try to break it, rewrite it to make it simpler."

REBOLing is about editing -- "trimming the fat".

Most importantly, REBOLing is about you.

Post a Comment:

You can post a comment here. Keep it on-topic.


Blog id:



 Note: HTML tags allowed for: b i u li ol ul font span div a p br pre tt blockquote

This is a technical blog related to the above topic. We reserve the right to remove comments that are off-topic, irrelevant links, advertisements, spams, personal attacks, politics, religion, etc.

Updated 15-Apr-2024 - Edit - Copyright REBOL Technologies -