http://blog.hostilefork.com/why-rebol-red-parse-cool/
"But even more impressively, it can work on the symbolic structure of code itself. While Rebol and Red are both like Lisp in being homoiconic, when you see something like PARSE applied on code itself... you know you're looking at something very cool."
Could you please go into agonizing detail on your team's use of REBOL? I've never been more excited for a language than Red/RedSystem, but hear so little in the wild on it or its older brother. All the parse examples I've seen have been pretty basic, but I hear it is powerful.
I can't answer for QuantumAphid, but I have used REBOL (v2) extensively for graphics post-production utilities for my old studio. It was the only way that I could provide programming services for all the departments I had to support.
Of course I wrote a number of simple utilities, but I also did several large and comprehensive applications with complete user interfaces. I could staple together a fully styled interface with custom widgets in an afternoon compared with (at best) several days for equivalent functionality with other toolkits. Most of my large programs communicated with our production management database using XMLRPC.
The GUIs including things like a full graphical Avid-style editorial timeline, a multi-panel interface for managing data on the review playback system, one that mimicked the playback system interface (complete with reflections and drop shadows) to make the operator feel at home... Even one with a wise cracking virtual assistant that guided the operator through the task. All of these were operational and bug free in a fraction of the time that would have been consumed by Python/wx.
Just as important as simple and flexible GUIs were the built in parsing, binary and image processing. I could make a shot slates (images with text noting the shot number and production) quickly and easily because anything you could show in the GUI could be exported as an image. I did complete stereo audio processing for Editorial inside REBOL with no external libraries -- it was simple and fast. When I later had to replicate this utility in Python I finally threw up my hands and shelled out to sox.
In general, these tools were rock solid, fast, easy and attractive to use.
So it's a great language, and Red seems like it will be a worthy successor. The learning curve to use it effectively is a bit steep because it has many differences from ALGOL derived languages. But once you figure it out, you'll never want to give it up!
Awesome! Thanks for the long post. I'm primarily a Python user, but recognize it as for what it is (reasonably easy to learn and equally limiting scripting tool). I think Rebol is pretty cool, but have been waiting for the speed that Red promises.
I work in marketing for a major corp. My teams manage 100+ ecommerce sites in 15 languages; we send out millions of marketing/promo emails each month; we manage product-search taxonomies, geographic hierarchies, keywords, etc. Even though large databases are our workhorses, we also transform tens of thousands of text content files (XML primarily) and validate data across plumbing junctions-- ETL jobs, SOA, web APIs and so-forth.
My teams are business users-- web-savvy marketers, designers and data analysts -- i.e., a semi-technical group. Some can write javascript and/or SQL, but they aren't programmers. We need very simple, short, readable scripts. Most languages require regular expressions, which are not a good fit for my teams unless the task is fairly basic. Rebol's Parse DSL is probably the best regular expression replacement I've found in my career. We basically have no need for RE's ever.
Rebol (and Red) have plenty of other uses -- and we've built some nice desktop GUI apps. But our main needs are around data-munging/wrangling -- scanning tens of thousands of files and/or webAPIs and parsing/extracting/transforming that data to make our many haystacks needle-free. For us, Rebol/Red have the simplest tools that work well for this job.
I imagine in the future, with greater emphasis on knowledge worker roles (such as data analysts), we may see the emergence of even simpler languages than available today-- My $.02 -- I just don't think R/Python/Ruby/Perl are quite simple enough for semi-technical staff and non-programmers.
Very interesting. Thank you. I'm an engineer that can program with traditional tools just fine, but i have a lot of analysis and data munging in my job as well and am always on the search for better tools. Anything to save me time and present an edge.
digits: charset "1234567890"
char: charset [#"a" - #"z" "+/-*"] ;; chars allowed in a symbol
not-quot: complement charset {"}
esc-string: [{\"} | not-quot]
bool: ["#t" | "#f"]
float: [opt "+-" any digits "." some digits]
number: [opt "+-" some digits]
symbol: [some char]
quot: [#"'" [sexp | atom]]
string: [{"} any esc-string {"}]
statement: [sexp | atom | space | newline]
sexp: ["(" any statement ")"]
atom: [bool | float | number | quot | symbol | string]
lisp-rule: [some statement]
NB. I wrote this "off the cuff" so I don't expect it to be flawless! Also there are no capture rules provided in my example (unlike perl6 grammars which provides this automatically).
It's worth noting that this grammar is a bit more restrictive than the Perl 6 equivalent. In particular, "\d" in Perl includes not only 0 through 9, but any Unicode character that's classified as a "digit". The Perl 6 grammar documentation features this in an example of using arbitrary methods in grammars: https://docs.perl6.org/language/grammars.html#Methods_in_Gra...
Usually they do through a PEG library if you search for that. Lua has a nice one and Python a few ok ones. They aren't native to the language like Rebol and Perl6 though.
Interesting. I didn't know they had no dependencies. Is it still considered native though since you have to import another module? Rebol & Perl6 don't require that although I'm probably grasping at straws lol. Thanks for pointing out Damian replaced Parse::RecDescent with the other one as I was reading doc on it today at work.
A cool thing about Rebol's (and Red's) PEGs are that they can easily parse and process the diverse datatypes of its parent source.
REBOL Parser in 10 Lines http://www.rebol.net/cookbook/recipes/0042.html
And:
http://blog.hostilefork.com/why-rebol-red-parse-cool/ "But even more impressively, it can work on the symbolic structure of code itself. While Rebol and Red are both like Lisp in being homoiconic, when you see something like PARSE applied on code itself... you know you're looking at something very cool."