The Podcast
I was recently a guest on a developer oriented podcast Ogrodje. It's in Slovene language. It was great fun to meet two fellow developers and talk about tech and business. The second part of the podcast was about Rye. Because Rye is based on Rebol and because my projects are in big part made with Rebol, there was a lot of talk about Rebol too.
If you understand Slovene, you can listen to this and other episodes here:
The Rebol
But it's hard to explain or even give a basic feeling about a language, if you can't show the code. Example tells a thousand words - to a programmer.
I tried to explain that Rebol is not just a little different Python, Ruby, JavaScript, but a small set of uniform ideas (that have more in common with scheme, forth, logo) and that "we" are still exploring how all we could use, to solve our problems (not my quote, can't find the original - it was cooler).
I found the one from Douglas Crockford, the inventor of JSON:
"a more modern language, but with some very similar ideas to Lisp, in
that it's all built upon a representation of data which is then
executable as programs"
The XML
I need to generate another set hairy XML-s for my work. The schema itself is named pain.008.002.01. When generating XML, I find the specification, the wide and many times unintuitive namespace the problematic part.
It's not complex, it's just too wide, verbose and too temporal, to load it all into one's brain, understand, simplify and use. So implementing such XML usually consists of repeated empty looks into documentation and just plowing through it for hours or days, until it passes some XSD validation.
Back to Rebol
In most modern languages you solve problems by writing and composing the right functions, organized in classes/namespaces. In Rebol you can use those too, but if there is a big enough, repeated problem, you think to yourself:
"How would I ideally declare / describe the problem with Rebol values? And then you write an interpreter for that declaration."
In Rebol, we call these dialects. There are many dialects, the rebol "language" is just the "do" dialect, there is also the view (GUI) dialect, a draw dialect, a make dialect and the king of them all, the parse dialect, with which you can create your own dialects easily.
Parse is very capable, but here are some basic examples that you can try to figure out:
And back to XML
My idea was, to make XML definition less verbose and to have optional comments about what some node means directly next to them in the code. If I could declare the XML structure in this way, I would need less jumps to the documentation. Furthermore, I could generate an XML that includes all the comments, so XML is easier to check, understand and debug and without them.
Below is the code for the dialect and a small demo:
If the code seems odd, it's probably because Rebol conventions are still so foreign to you. When you get to know them, this code is quite simple. I wrote it ad-hoc in less than an hour today, and I haven't used parse seriously in years.
OTOH if any Rebol guru is watching, you can propose improvements :).
(The text of this post is still improving)
Komentarji
Objavite komentar