What makes Rebol so productive
The ubiquitous series approach used to manage lists of all types: files, strings, email accounts, data in network ports, etc., all using the same functions and way of thinking.
Simple data persistence features such as read, write, save, and load which, along with all the standard series functions, eliminate the need for 3rd party database systems in many types of applications.
Lots of built in data types which are automatically recognized and handled appropriately. Not just numbers and text, but dates, times, money values, coordinates, IP addresses, etc. can all be calculated, sorted, evaluated, etc. without any special formatting. This recognition of complex data types is also important in designing dialect rules.
A complete lack of all unnecessary syntax (semicolons, commas, indentation, quotes, etc.), so that code can read much more naturally, simply, and without clutter.
Native access to network ports, files, and other data sources.
Native access to Internet protocols such as HTTP, FTP, email, etc.
Native ability to draw graphics, display images, and build GUI elements with events, timers, etc.
Native ability to parse formats such as .csv, HTML, XML, etc.
Natural, native interactivity between all these fundamental computing capabilities, and the ability to create new data types (examples such as JSON, PDF, Flash, etc. have been created by the community), and put them to use with simple series functions and dialects that are constructed using syntax patterns which are as simple, straightforward, and consistent as possible.
More than anything, Rebol was designed with dialect creation in mind as a fundamental approach to writing code. It provides the 'parse function and a set of key language features (such as automatic recognition of data types, uniform data structures, the port model, etc.) which make it simple to create dialects that reduce code complexity to the lowest possible levels of simplicity. Designers of dialects can create specialized code structures which translate into much more complex internal operations under the hood, to perform enormous amounts of computing activity, using the shortest, easiest to use, highest level syntax possible. That's one of the main reasons why Rebol code always seems to be so dramatically short and simple, and why the binary is so tiny, compared to other languages. Not just the built in 'parse function, but the entire design of all the features of the language, are designed to fit together nicely, in a way that works at as high a level as possible, and using the most natural constructs as possible. Rebol is designed to be a natural language construction kit, which drastically reduces the complexity of coding syntax patterns needed to solve domain specific problems. Dialects have been created to provide solutions to a variety of common programming situations and routines, and Rebol is ripe for creating dialects related to any new problems which may come in the future.
The most obvious example of a built in dialect, the "VID" GUI dialect:
view layout [
style redbtn btn red 400x50 [alert "clicked"]
redbtn "button 1"
redbtn "button 2"
That code is really as concise as could possibly be imagined - dramatically simpler than the object definitions into which that dialect code is converted. There's no need to understand any of the lower level functions, variables, event system constructs, etc., to use this dialect. This ability to create simple-to-use dialects is the real, still uncharted, value of the Rebol language approach.
posted by: Nick 24-Dec-2014/10:07:21-8:00
That dialect and parsing business still is a bit mysterious to me. I keep getting a feeling that there is a huge potential there that I just can't grasp. For example, in COBOL (years ago) there was a section called the SCREEN SECTION where screens were defined with sort of a very simple mini-language. REBOL has VID. In COBOL there was a REPORT SECTION where print line layouts were defined. I keep thinking there could be a REBOL dialect for making reports. Yes, I do know about PDF Maker which I also have trouble understanding because I don't know much about PDF's and the PDF manual is massive.
Your notes about punctuation are interesting. When I first saw REBOL, I had a reaction along the lines of, "Where is the punctuation; I can't make any sense of this." Then, at work, I had to get some training in C and Python. I had a reaction of, "What is all this punctuation; what a nuisance."
I have experienced the situation of wanting to do something in REBOL, and spending some HOURS trying to figure out how to do it. Then, when I was done, I found that it had taken maybe two lines of code. Sort of humorous and pathetic all at the same time. But I am getting better.
posted by: Steven White 24-Dec-2014/11:14:08-8:00
Very true, Rebol is very efficient and effective.
I'm looking at the navigation and bookmarking of audio files at the moment. It seems to me that Rebol's use of the series, and most of the other points Nick mentions make Rebol the ideal language for this project.
Just compare other audio file navigation to Rebol....
Rebol cuts to the chase!
posted by: Bill 26-Dec-2014/17:13:35-8:00
I created the code for the following site which is generated dynamically on every visit by a Rebol script camouflaged as files.cgi. It is about a page of code and creates the song entries from a simple text file for each song:
I think this also shows the great power of Rebol.
posted by: Bo 27-Dec-2014/0:39:32-8:00
Bo, I like that 'trick'. Care to explain it someday?
posted by: Arnold 31-Dec-2014/10:04:33-8:00
posted by: Nick 1-Jan-2015/10:06:10-8:00
I like that the language is composed of a small number of basic concepts (values, words and blocks) tied together in a simple functional style. If you understand these few things, you've learned the language.
For my job, REBOL is the easiest language to quickly get shell-scripty things done. Fire up the console, type 5 - 10 lines, and bam!, I'm crawling tens of thousands of text files, parsing XML for specific values and generating a CSV report to distribute in MS Excel.
I took the following tutorial from Carl:
I borrowed the 'find-files function and adapted it for parsing XML/HTML/JSP files. I can now manipulate 200k source code files and markup templates for my company's ecommerce website.
REBOL has saved our bacon many times on huge project releases.
posted by: Edoc 9-Jan-2015/14:31:38-8:00