This year my family celebrated Thanksgiving at my parent’s house. Thankfully the weather was warm enough to enjoy the socially distanced meal out on their patio.
Over turkey, potatoes, and an unusually tasty green bean casserole, my brother and I got to talking about my time in my coding bootcamp. My brother graduated from Carnegie Mellon University and has always been the more STEM-oriented child out of our family, and while he didn’t major in computer science while he was in school, he took classes and was surrounded by many kids who were in the throws of their programming degrees. Upon learning I got into Flatiron, he gave me a brief tutorial in programming on a TI-83 calculator as well as gifted me my very own actual rubber duckie! And it was during this meal that he dropped a kernel of knowledge on me that has led me down a hundred rabbit holes ever since.
“Have you ever heard of Brainfuck?”
Obviously, dropping an f-bomb at the Thanksgiving table is exciting in any conversation, but dropping it while discussing programming obviously piqued my interest.
Over the next little while my brother gave me a brief introduction to the world of esoteric programming languages. I have compiled a list below of some of my favorites, with descriptions as well as examples of their “Hello World” implementation, but first let’s break down what an esoteric programming language is, beginning with the very word esoteric:
What’s notable is that the word esoteric is pretty relative — even understanding some more non-esoteric (i.e. “traditional”) programming languages is still pretty rough for me. But though esoteric programming languages tend to be highly impractical for computing much of anything, they’re still pretty fun.
Many esoteric programming languages are often said to be “Turing-complete” — in short, that they are able to answer any computable problem given enough (read: infinite) time and space. So, while you might not want to use these languages to write your next program, in theory you could.
Many esoteric programming languages also make use of ASCII, which stands for the American Standard Code for Information Exchange. Because computers can only understand numbers, ASCII encodes characters to numeric form so they can be represented. Uppercase and lowercase letters, numbers form 0–9, and special characters (like !$@…) are all standardized by ASCII, which you can check out here. By using ASCII, an esoteric language that makes use of very few symbols can represent a wide variety of characters, examples of which we will get too soon.
So, with that very brief background, let’s get to some of these cray-cray languages! Starting with:
My polite, southern sensibilities simply shiver at typing out the name of this language, but as many modern esoteric programming languages use Brainfuck as a template, it’s important to discuss here. Brainfuck uses a whopping total of 8 characters in its entire language: ><+-., . It was developed by Urban Miller in 1993 in an attempt to make a language for which he could write the smallest possible compiler.
Esolangs contains a chart describing what each of these symbols do in the context of the language:
…but as someone without a computer science background, dissecting this to write “Hello World!” was a little tough. The easiest way I found to understand how to decipher Brainfuck came courtesy of this video in which we only make use of + > and . Using ASCII, in which the capital letter H is represented by the number 72, we can see 72 plus signs are used to represent H, followed by a period to print H , and then > to move onto the next letter :
There are “simpler” ways to write Hello World using more of the characters available to us:
…but already we can see this language is extremely tedious. But …why stop there? Let’s get even more tedious!!
COW is a language based around some of the same key concepts of Brainfuck except that its instructions are variations of the word “moo”. Here is a chart of all of COWs bovine-influenced commands:
Put in the context of Hello, World!, we get:
…and using COW’s available loops to shorten our code, we get:
You can find a more in-depth video on the COW programming language and a tutorial here.
Piet is by far the prettiest of all the coding languages on this list. Named for the Dutch abstract painter Piet Mondrian, it uses cyclical blocks of color with variations on hue and lightness to execute its programs.
Commands are defined by transitioning from one color block to another color block. The full list of commands can be found here. White blocks act like blank spaces, while black blocks are used to terminate the program through stacking blocks them to rotate the directional pointer guiding the program. Piet also makes use of ASCII.
Here is an example of a Piet exclamation point:
…and here is a suscinct version of Hello, World!
You can check out a nice Piet tutorial here
Shakespeare was designed so that the code resembles a Shakespearean play. Each character in the play represents a variable. If you want to assign a character like Romeo a negative value, you put Romeo on stage with another character and let the other character insult him. Assigning value to variables requires the characters to speak. Input and output is done by characters telling each other to listen to their heart or speak their mind. Conditionals are done by characters asking questions.
A simple Shakespeare program is set up like this:
- Title (seen from the parser’s view as a comment
- Declaration of characters (declaration of variables)
- Acts and Scenes (dividing the code into smaller parts)
- Enter, Exit, and Exeunt (variables moving “in and out” of the code)
Any noun is a constant with the value of 1 or -1 depending if it is nice or not (“flower” has the value of 1, “pig” has a value of -1. Not my personal opinion, just the opinions of the guys who wrote this). By prefixing a noun with an adjective, you multiply it by two. Another adjective, and it is multiplied by two again, and so on. Using “Speak your mind!” or “Open your heart!” prints out the variable’s numerical value or corresponding letter, respectively.
Here is the word “Hello” written in Shakespeare:
A little…wordy, but fun. Shout out to this Shakespeare tutorial here.
5. Brainfuck, but every + is replaced with the Bee Movie script
Remember our old friend Brainfuck? Remember the 72 plus signs that was the equivalent of the capital letter H? Now imagine every single one of those plus signs being replaced with the entire script of Bee Movie. Yeah. Makes Shakespeare seem pretty succinct in comparison. Couldn’t even find a tutorial for this little gem, but if it has its own article on Esolangs, it’s a thing.
Well, that was a brief look into my five fave esoteric programming languages! Again, like all good things, there is an entire wiki dedicated to the wacky world of esoteric programming languages called Esolangs, which I highly recommend and that you can check out here . Enjoy !