Forwards, Backwards, or nil

Programming languages can be categorised into many, many – uh, categories. That’s no news.

But, no matter if you write object-oriented, structured, functional, or brainfuck – someday someone will read your program. (Well, maybe not if you’re writing in Brainfuck… let’s better just keep that aside for now)

Now, the first thing that I notice in a new programming language is not whether it’s object-oriented. And it’s not whether it supports monads or functors or even first-class functions. I only see the direction of reading.

In my very personal categorisation, there are exactly 3 directions currently available in programming languages:

  1. left-to-right
  2. right-to-left
  3. nil

Let me explain.

The first one on the list is the easiest one to find examples for. Everybody knows it: Lisp (everybody does know Lisp, right?). In Lisp everything reads strictly from left to right: Add one to one (+ 1 1). Display “hello” (display "hello"). Define ls as a list of one and two (define ls (list 1 2)).

Easy and – more importantly – consistent.

Now let’s come two item two on the list, the right-to-left languages. These are harder to find. The most prominent example among the high-level languages is probably Forth. In Forth, most things read from right to left. Add one and one: “1 1 +“. Display the duplicate of 2: “2 DUP .“.

There are exceptions to these in Forth, but overall, due to its stack-based nature, it has a very strong right-to-left feeling. At least for me.

The third point on the list is… non-existent, really

Most languages like C or Java or Fortran don’t really have a built-in reading direction – or I just don’t see it. Still, they cannot really be considered “both-ways” as they lack the right-to-left way. There is no way to write a C program that looks like Forth. C just lacks the stack (a programmer-accessible stack, that is) – and with it a whole world of expressions and idioms.

And that is what I miss most in programming languages: Lisp and Forth. I want both of them. At the same time. In one language.

How hard can it be?

Leave a Reply

Your email address will not be published. Required fields are marked *