Rebol to RED and RED/System with a detour by IO

My search for a better language to use in embedded control continued this month. I spent more time than I would like to admit on LearnXinYminutes.com. I find it irresistible, and what is worse,  once I start reading about a new language, and I google it to find out more, I tend to get sucked in a seemingly endless nest of cross links, down the rat hole.

So somehow, I truly don’t recall the exact mental process, I ended up exploring Rebol, an example of an homoiconic language. Think a language that uses the same syntax to represent data and its own code. Which means the two can become easily interchangeable and therefore , among other interesting things, it means that it is very easy to create new dialects of the language! Which is interesting if we think of how this could be used in vertical application in the embedded world.

From Rebol the step to RED is short, as the latter is an open source rewrite of sorts of the first and seems to be still actively developed,  while Rebol seems to have been abandoned by now…

RED developers are ambitious, and in the hope of bootstrapping the language, have started developing a dialect of the language (RED/System) that can cover the low level stuff and be compiled (rather than interpreted by a VM as most new languages nowadays). Now that is interesting again, RED/System could be close to what I am looking for…

(I had to play with it, so I used the online REPL…)

Now at this point I am really not sure how but while I was  looking at the concatenative family of languages (among which you might recognise FORTH…), I somehow got detoured to IO which is really a prototype based language of unique elegance.

I really like the absolute simplicity of IO’s grammar, the entire syntax of the language can be described in 5 lines:

exp        ::= { message | terminator }
message    ::= symbol [arguments]
arguments  ::= "(" [exp [ { "," exp } ]] ")"
symbol     ::= identifier | number | string
terminator ::= "\n" | ";"

Which translates in an incredible expressive power (also see the simplicity of the concurrency model offered) and with it “danger”…

(I had to play with it so I got the source and a brew for my Mac)

But IO virtues would be lost if we were to compile it and constrain it to the low level stuff as RED/System or RPython can/could.

Then somehow an article , linked from Reddit, brought me back to take a second look at Swift, ouch, short circuit!

This entry was posted in Languages and tagged , , , , , . Bookmark the permalink.