Esoteric Programming Languages
Published: 2023-12-11 13:33:35

## At the heart 
of programming lies the desire to create things. Whether it be for work, for fun, work or artistic purposes, we love to build functional things using computers. What happens though when we attempt to push the boundaries of what we understand programming to be? Today I'll cover some examples of just how far we can programming with rules, syntax and ideas that will make you question just how exactly someone could come up with something like an esoteric (programming) language.

![brainf*ck helloworld](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oov7iw3onebxixy2oeiz.png)

You may think to yourself, this seems like a weird line break to separate paragraphs, and you'd be right because it's not intended for that purpose. That line is the 'Hello World' test in what is likely the most popular esoteric language "BrainF**k". Your next thought is probably '...how?', which brings me to the purpose. Esoteric programming languages(esolangs), are not built for practical applications. The idea is to be creative and push the boundaries of what we know programming is, while ideally maintaining a system that is Turing-complete. This means that a language would be compatible with any turing system to manipulate, read and set data sets. This throws a pretty wide net for what can be usable, and makes the 'hello world' test a great benchmark for esolangs.

## That being said,
creating an esolang gives you the creative freedom to make your own rules. These rules are often convoluted for the sake of being unique or incomparable with any other programming languages. The same can be said for the syntax, design decisions and essentially everything when it comes down to esolang design. I'll be going over some esolang specific designs that I particularly enjoy due to the parody of them. As previously mentioned, "Brainf**k" is the most well known or most popular esolang and has inspired countless other esolang's with it's syntax and rules. It's standard setup accounts for around 30,000 cells, all set to 0 with a pointer pointing to the first cell. You can then move the pointer up and down the cells with commands.


![brainf**k commands](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8uqd4mhnpbholo2axt8a.png)

As you can see, you manipulate the location of the pointer and alter the subsequent cell's byte value to represent a value inside of that cell. Here is another image from the esolang wikipedia that goes more in depth about the hello world example.

![hello World detailed](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fxjh4es6lg9upbkx1yi0.png)

It is essentially all downhill from here. This as previously mentioned this esolang inspired and fathered many other's that derived their structure from brainf*ck. Here are a list of commands for a language that is near identical to brainf*ck but changes the keywords and commands to "orangutan sounds".

![Ook!](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/864x4w66cw95olv838hp.png)
It substitutes the special characters with different syntax for ook's to denote different commands. This makes for an especially verbose version of brainf**k that takes this to write "Hello World!"


![Ook hello world](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/68brtydms2y6wvhq1s26.png)

The last language I want to cover is called "Malbolge", promptly named after the 8th circle of hell in Dante's inferno approaches this concept from an almost cryptographic standpoint. This is "Hello World!" in Malbolge.

![Hello World in Malbolge](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y1dddbjhcszblvxms714.png)

This is the more cryptic proof of concept esolang, implementing extremely unique rules and instructions to make the language even usable. This is a list of all the instructions in malbolge, which are chosen by an equation. Malbolge has three processor registers that are each set to 0 at the start of the program. Each are responsible for different things and are denoted by **a, c and d**

![Malbolge instruction](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8rgkc5bjm0kxyrgp7lv5.png)
This language wasn't always Turing-complete and took other developer's interest in revamping things like a memory limit in order to make it work fully functionally. It's also important to note that a non-terminating loop wasn't even able to be performed until 2005, 7 years after it was created. It has gone through different iterations by other developers that made it more usable but still under the same umbrella idea that Malbolge was formed under. Malbolge has many more difficult and convoluted rules to follow that I won't be covering, but serves as a reminder of the proof of concept ideals that fall under the esolang category.

## There is a common theme
amongst these esolangs that speaks most to me in the parody and creative freedom. Since entering into the software developing world, I'd always had an interest in creating my own functional programming language. I'd initially wanted to create something convoluted, silly and not necessarily practical which is really what sparked my curiosity in esolangs. I encourage anyone who may feel like programming is too rigid or serious to take a look at the [esolang wiki](https://esolangs.org/wiki/Main_Page) to check out how far we can test the limits of our systems.