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 *

Your post must include a link to this post.

How does this work?
Write a response on your own website and include a link to this post. Then submit your response’s URL here. Your response may appear here after moderation. To update or remove it, edit or delete your original post and submit the same URL again. Learn more about Webmentions.