26
JUL
2009

What's So Great About REBOL?

One of my favorite programming languages goes by the name of REBOL. It was designed by Carl Sassenrath, who wrote the original Amiga OS kernel. I first encountered the language before it was released on the REBOL1 website (rebol.com), which contained a description of the main concepts and some example code. That was all it took for me to get hooked. I knew immediately that it was going to be a great language.

Rebol Logo

I downloaded the first public release of the interpreter in 1997 and since then, I have written REBOL code almost every day. I have tried Perl, Lua, Ruby, Python and a bunch of other scripting type languages and there is nothing out there that rivals REBOL in terms of productivity. For me, at least.

Most people have never heard of REBOL. I have won no less than three official REBOL contests (here's one), which either goes to show that I am a REBOL genius or that the REBOL user base is limited. Unfortunately, I am leaning towards the latter.

I have informed a number of software engineers of the existence of REBOL and they always ask me what's so great about it. And here's the kicker: I can't for the life of me explain it in a way that does REBOL justice!

There are so many great little features that you can't really boil it down to a brief summary. And it's not just the features, it's how everything is tied together in a cohesive mass of pure awesomeness.

Code as Data

REBOL is all about the data. There are about 40 different data types. Even the code itself is data. This property of a programming language is referred to as homoiconicity. As a consequence of possessing this property, REBOL is its own meta-language! Usually, C programmers are hopelessly lost at this point, but anyone that has an understanding of Scheme or LISP probably gets it.

Rebol has no keywords. Instead it has symbols. The symbols are data constructs that have no inherent meaning; they are only words. It is not until a symbol is bound to a specific meaning in a specific context that the symbol resembles something a C programmer would think of as code.

You can think of REBOL code as a system of axioms and functions that are derived from these axioms. In REBOL, the common "for" loop is actually a function, which in turn is derived from the "while" loop function. The "while" function is a native function, which means it's implemented in C in the interpreter, i.e. it is an axiom. REBOL provides a number of native functions, and then every other function is built on top of the native functions.

I could literally go on forever, but I will leave REBOL's other fantastic features, such as the series abstraction and the domain specific dialecting, for a future blog entry.


  1. REBOL and the REBOL logo are registered trademarks of REBOL Technologies. 


About This Site

Hello, my name is Martin Johannesson and this is my home on the web. I live in Stockholm, Sweden, where I work as a software engineer at a software company.

Ever since I was a kid and discovered the art of programming on my C64, I've been tinkering with my own little software projects and experiments. This site is one such experiment.
more...

Recent Entries RSS Feed

Tags

Amiga blog C Cocoa game GLGX GLSL iOS iPad iPhone Java jQuery Mac Mac OS X Objective-C OpenAL OpenGL Programming REBOL Shaders Vertex Shader web

Blog Archive

2011: 01 02 03 04 05 06 07 08 09 10 11 12
2010: 01 02 03 04 05 06 07 08 09 10 11 12
2009: 01 02 03 04 05 06 07 08 09 10 11 12

Random Images Load new images

loading
loading
loading
loading
loading
loading
loading
loading
loading
loading
loading
loading