Not a Programming Language

Enough suspense. I mentioned that Red isn't really a programming language, but you can use it as one. I'm planting this seed now, as I will for some other concepts, knowing it may not seem important. It may even seem strange. Someday, maybe, you'll hear a little <click!> in your head, and one of these little seeds will sprout. We joke about "Taking the Red Pill" and "There is no spoon." in reference to The Matrix. Until that day comes for you, live happily in the matrix and think of Red as a programming language.

This is your last chance. After this there is no turning back.

You can stop reading now, if that's what you want.

You take the red pill, you stay in Wonderland, and I show you how deep the rabbit hole goes.

It won't be all that. At least not all at once. The whole "It's dangerous to free a mind after a certain age" thing, freaking out because everything you know is wrong? Nothing so dramatic. But, one day, you may write a piece of Red code and hear a little voice in your head say "I know Kung Fu!"

Because I haven't included any actual Red in this blog so far, if you haven't already seen Red in action, what I'm about to say will seem a bit abstract. We will get to Red code and examples soon enough. Wait! I just said Red "code", which surely implies that Red is a programming language and I am a bold and bald-faced liar. Not so.

code: 1a. A system of signals used to represent letters or numbers in transmitting messages. -- American Heritage Dictionary

Charles Petzold, in his book Code, refers to code as:

...a system for transferring information among people and machines.

and also says

[Most] codes must be well understood because they're the basis of human communication.

Appeals to authority make weak arguments, which is not what I'm doing here. These are not facts to be argued, but bits of information that help set a context for discussion. I'm going to post a number of quotes by Carl Sassenrath here, because Rebol's fundamental design objectivess and choices are effectively Red's DNA (sometime I'll write about Red being both DNA and RNA, but not now). Environment plays a role, but you can't escape your DNA. Here are some things Carl has said about Rebol and its design:

It's about language...the enabling technology behind all technologies.

It is a language for representing data and metadata. It provides a consistent architecture for computation, storage, and exchange of information.

REBOL was designed to solve one of the fundamental problems in computing: the exchange and interpretation of information between distributed computer systems.

REBOL gains its advantage through lightweight domain-specific sublanguages and micro-formats. REBOL introduces the concept of dialecting: small, efficient, domain languages for code, data, and metadata.

Although it can be used for programming, writing functions, and performing processes, its greatest strength is the ability to easily create domain- specific languages or dialects.

I describe it as "A language that facilitates the exchange of information between people and machines." There is intentional overload of meaning there. It isn't just a way for us to communicate with machines, by writing program code. It also isn't just a way to share information between machines and processes. It's also a way to exchange information, person to person. With the added bonus that what a person can read and understand, a machine can process as well.

Next time, we'll see some examples, then start digging into some technical details.