Carl Sassenrath and His Design of REBOL
# REBOL is for Distributed Computing
"The primary concept behind REBOL is distributed computing."
"One of my primary reason for designing REBOL was to solve the problem of how you share information and processing between many different computers at the same time.
"I call this the distributed computing (disparate systems) problem".
"REBOL was designed for distributed (disparate systems) computing, providing not only the semantic exchange of information (data and metadata), but also the interpretation of that data. These are essential requirements of the XNet."
> Carl was 25 years ahead of mankind. You can think of XNet being IoT and event-driven architecture though Carl did not have those words in his vocabulary at the time.
"This aspect is its greatest strength; it's meant to offer a better approach to the exchange and interpretation of information among people, computers, and application software."
"I call R E B O L [a virtual computer that has] a messaging language, because it's intended to be used in the same way as English: for communications, not just algorithms."
"Also, the primary reason that I created REBOL was that I wanted more than just a programming language. I wanted a way to write applications that would run on any machine, and more importantly, that could intercommunicate with programs on any machine."
The Language of the REBOL Virtual Computer
“Universal Internet Communications Language. One language that spans all platforms from servers to desktops to set-tops.
“REBOL is very scalable to millions of devices for the exchange of information whether it is data or code.”
# English-like Messaging
"[A] goal of the REBOL design was to create a communications language."
"The language is designed to flow in "sentences" rather than being chopped up with parentheses or statement separators."
> Most of "the Community" missed this. Carl designed the language for pipeling and not for order-dependent sequential processing.
"It [REBOL] strives to offer a new and more natural approach to communications, not only between you and a computer, but among computer applications. It takes a big step toward unifying and simplifying expressions by using language techniques that are more like our natural human languages.
# Domain Messages
"[REBOL's] ultimate power comes from its ability to [support] specialised domain-specific sub-languages that give you greater leverage on a particular solution but without users needing to know much about programming.
A domain-specific dialect allows users to just focus on what they know. For instance, if you are a stockbroker you might write:
sell 100 shares of "Microsoft" MSFT at $95.00
buy "hamburger" and "milkshake" for $2.99
This is much easier to read and write. You can read it and understand it... AND your computer running REBOL can read and understand it too.
You can imagine hundreds of other dialects: one for e-commerce, Web page building, medicine, law, GUI descriptions, network configuration... This is a great strength not available in other languages.
# Expressiveness
"It [REBOL] works equally well for expressing data as well as code."
"REBOL was designed from a meta-circular view of language semantics. That is, REBOL is what you need it to be. It morphs to provide the maximal expressive power for any problem."
"For instance, it includes 40 native datatypes (most languages have five or six), 14 Internet protocols, compression, encryption, and reflection built-in. You don't need to remember what library to include or to link with."
# Design Goals
"Over the past two decades ... I investigated more than 50 different languages, from Ada to C, from Pascal to Lisp. I wanted a language that was very simple and readable with almost no syntax, yet very flexible with a wide degree of expressive freedom.
> Carl worked for Apple for a short while and likely was there during the "language thrash". Though he is mum on it, Carl took something from the Newton device and Newtonscript, at least for the GUI.
It needed to allow a script to run on a great number of platforms without modification, have an extensive set of built-in data types that felt natural to humans, and smoothly support all of the standard network protocols, such as HTTP, FTP, POP, SMTP, NNTP, time, finger, whois, and more. And finally, so that I could use it everywhere,
I wanted the entire package to be small (less than 200KB) with no installation hassle – just copy it and run. More than anything else, I wanted a language that was friendly, usable, and highly productive."
# REBOL is Not a Scripting Language
Creator Carl Sassenrath had a rebellious streak when he created REBOL. Like Chuck Moore of Forth fame, Carl chucked conventional wisdom.
Carl Sassenrath said that REBOL neither a scripting language nor merely an interpreter as too many computer nerds wrongly believe it to be.
"REBOL is much deeper than it first seems. On the surface you see a reflection that looks much like other scripting languages but that is an illusion I put there to help people get started with it.
"REBOL is actually much more than a scripting language and it is also much more powerful in its design than other scripting language, or even most programming languages.
"[REBOL] not just for scripting or logic. It's also very good at data relationships and descriptive coding.
"If you go the programming language route there is no way around teaching people what a variable means or what a loop is. A certain level of abstraction is required for scripting to be of use.
"Also, you must understand a wide number of interfaces to different modules in many scripting languages. If you want a language that's good at programming, it has these complexities.
"[With REBOL] when performing network operations, you don't need to try to figure out what network modules are required to get your script to work. REBOL builds all of that capability into the core program."
# REBOL is not C
Here is what Carl Sassenrath said about those who do not understand REBOL.
"When I ... released REBOL, I ... introduce[d] ... a simple approach to programming. [T]o help convince new users, I posted a great number of examples ... I wrote simple scripts of all kinds. My motivation was to attract new users to try our unique approach, and the scripts were just the candy.
"Early on, many programmers who encountered REBOL ... concluded that REBOL was too simple.
"Since those days, I've glanced over a lot of REBOL code written by a wide variety of programmers, and quite often I'm floored. Many programmers use REBOL like they're writing in C or BASIC. I can spot it in an instant; they did not bother to learn the fundamental concepts of the REBOL language. When I see that kind of code, I wonder why they bothered to use REBOL at all. C is better written in C.
"... REBOL is one of the deepest languages ever designed.
"REBOL is not for everyone. REBOL is advanced. It promotes the concepts of symbolics [sic], context, and environment as powerful tools, going far beyond the traditional ideas of functions, objects, loops, and if statements.
"REBOL is for a different breed of programmer. It is for those with open minds; those who are reflective, observant, and those who do not simply bang out any kind of junky code that works, but consider each detail of their design, and sculpt it perfectly as a lasting work of thought.
"... REBOLers have different priorities, different values. REBOL is for a different kind of programmer. We are of the old school but of the next generation. We want more from our language. Sure, we can write simple scripts, but even better, we can write powerful programs that are the size of simple scripts.
"REBOL is for those who of us who think differently."