We all know that programming languages can be incredibly useful tools. However, what if there were languages that were not created to be used? Ones that test the boundaries of programming language design and cause even the most experienced programmers to bang their heads against the wall trying to build a simple program? Enter esoteric programming languages.
What Are Esoteric Programming Languages?
Most programming languages are designed for the purpose of widespread use and productivity. However, Esoteric programming languages (esolang) are a segment of programming languages that are not built for usability, but rather for entertainment, artistic intent, or to prove a concept. The word “esoteric” is derived from the Greek word “esoterikos”, which means “belonging to an inner circle”. Esoteric languages are not intended to be widely understood.
The Purpose of Esoteric Languages
The first-ever esoteric programming language was INTERCAL. A parody created by Don Woods and James M. Lyon in 1972 that mimicked popular languages at the time, such as COBOL. The idea was later revived in 1993 when Wouter van Oortmerssen designed FALSE. The concept was to build a powerful, tiny implementation (compiler executable of 1024 bytes) programming language with an obfuscated syntax that was disorienting to its users. From here, more recognizable names such as brainfuck and Befunge began to emerge and the concept of esoteric languages began to take shape as a concept.
As previously stated, esoteric languages have four main purposes. To act as a proof of concept, for competitive sport, display an artistic process and simply for entertainment. To better grasp these ideas, let’s look into each of them with an example language.
Proof of Concept (Brainfuck)
The first purpose of esoteric languages we are going to look at is proof of concept. A language that was able to present a proof of concept to the computer science community was Brainfuck. A minimalist programming language that contains an astonishing eight characters in total while still proving to be Turing-complete. The language should not be used for practical projects due to its complexity at scale (as the name suggests). However, it is interesting to see that a programming language can have its utilities with such a small amount of primitives. Here is an example of the language:
Esoteric languages can also be viewed in a competitive context, such as Malbolge. Languages like Malbolge were created with the sole intent to be exceptionally incomprehensible and difficult to use. Achieved through self-modification, non-intuitive operators and encryption, Malbolge is one of the hardest programming languages to learn. It also very well could be the first of its kind for this purpose in mind. The competition revolving around Malbolge is contained within the premise of the language. That anyone able to make a useful program with Malbolge deserves bragging rights. Here’s a sample of how difficult the language is to use.
The third purpose of esolang’s are for artistic purposes. A popular example of this is the Shakespeare language. A unique programming language that is meant to resemble the writing from Shakespearean plays. The language is unique, as it redefines the entire programming paradigm. Instead of focusing on producing an intended result, the goal is to make the code itself look more elegant. If only all our code looked as clean as this!
Finally, some esoteric programming languages are simply meant to be entertaining. Such as the COW language by Sean Heber. As a derivative of the Brainfuck language mentioned above, COW only has 12 primitive. All of which are different capitalizations of the word ‘moo’. It’s hard to imagine why someone would go through so much effort to create this language. In a way, this comical language really does grasp what programming is all about: incredibly frustrating, a little silly and most importantly, fun.
The Interesting Thing About Esoteric Languages
So that’s pretty much all you need to know about esoteric programming languages. In a strange way, they are like the ‘conceptual art’ of the programming world. Unconventional and weird, but often thought-provoking and fascinating. Esoteric languages break the recycled formula that most conventional languages follow. Making me believe that these languages could one day be the key to new applications of programming.
Although, if nothing else, they are fascinating designs to look at. Which remain untouched over years, without the over looming necessity to stay ‘current’ like the majority of popular languages today. Allowing them to only become more interesting with age.
You can check out a full list of esoteric programming languages, here. If you have anything to add, I would love to hear it in the comment section below!
If you are a programmer that is interested in making passive income, check out this.
Happy coding everyone!