This post is not about any of those programming languages. This post is about more esoteric languages — ones that I will never use for practical purposes.
These are languages that exist not to get work done, but to have fun. If you ask yourself “Why?” you are probably missing the point. The question is more often, “Why Not?”
Six Esoteric Programming Languages
Possibly the oldest esoteric programming language, but still one of my favorites. INTERCAL’s original design goals were to be as odd as possible. Given the primary control flow statements are NEXT, RESUME, FORGET, and COME FROM, they appear to have been quite successful. The language enforces good manners by requiring the programmer to prefix statements with PLEASE. If the compiler detects that the programmer is being excessively polite, however, you will also get an error message.
Some particularly enterprising individuals have even managed to invent a web platform for INTERCAL, INTERCAL on Interstates.
Unlambda is a language that takes the concept of a functional programming language to its very extremes. It is a purely functional language in the most absolute sense of the phrase. The only programming constructs you have to work with are functions. This strictness actually provides a strange sort of beauty to the language model. Numbers are represented as church numerals.
Chef is kind of a unique esoteric language, in that it’s not actually overly difficult to interpret. Chef programs resemble recipes, though on close examination, they are not always very sensible. The language is a fairly basic stack language, in which you put ingredients (values) into a mixing bowl (stack), combine them with some operation, and bake the result to perform the computation.
The Shakespeare programming language is, as you might expect, designed to read like Shakespeare. At first glance, most programs actually do a pretty good job at this. In Shakespeare, actors serve as variables, and acts and scenes are labels that can be jumped to with a phrase like “Let us proceed to.”
Whitespace is a programming language in which only whitespace is a valid programming character. All alphanumeric and standard symbolic symbols are treated as comments. This leads to some interesting possibilities around embedding whitespace programs within other programs.
One of the most popular esoteric languages, BF only consists of 8 single-byte commands. Combined, these eight instructions are turing complete. The somewhat vulgar name is a reference to the effect trying to program in the language has on one’s brain. The largest collection of BF resources can be found at the BF Archive
Several of these languages, particularly Whitespace and BF are actually reasonably well supported. BF in particular has interpreters, compilers, and transpilers on pretty much every platform you can think of.
While these languages may not be useful for general programming, they can be quite useful to help think about programming paradigms in a different fashion. They also make excellent targets for learning about parsing, lexing, and compiling. Do you have a favorite esoteric language not mentioned above? Give me a shout in the comments.