Some people say learning to program is hard, tedious and excruciating. It’s like learning a new language, just to talk to a machine which needs to be told in very specific commands what to do and execute. For some reason, a group of people seem to think that programming itself isn’t complicated enough, and thus ‘esolang’ was born.
Welcome to the world of esoteric programming languages (aka esolang), where programmers push the conventions of language design. These languages are not meant to be easy to use. Quite the opposite, they are designed to challenge, frustrate and amuse programmers with their difficulty. There are many esolangs out there for you try but here are 15 of the most bizarre and insane of the lot.
Recommended Reading: 10 Misconceptions That Are Not True About Learning Programming
True to its name, this programming language will give any programmer an instant headache. It was created by Urban Müller in 1993, as a language that could be implemented by a really small compiler, to amuse the programmer. The language uses only eight commands and an instruction pointer, each made up of a single character, making this an incredibly minimalistic language. Below is a sample of the headache-inducing code, one that will print out ‘Hello World!':
+++++ +++ Set Cell #0 to 8 [ >++++ Add 4 to Cell #1; this will always set Cell #1 to 4 [ as the cell will be cleared by the loop >++ Add 2 to Cell #2 >+++ Add 3 to Cell #3 >+++ Add 3 to Cell #4 >+ Add 1 to Cell #5 <<<<- Decrement the loop counter in Cell #1 ] Loop till Cell #1 is zero; number of iterations is 4 >+ Add 1 to Cell #2 >+ Add 1 to Cell #3 >- Subtract 1 from Cell #4 >>+ Add 1 to Cell #6 [<] Move back to the first zero cell you find; this will be Cell #1 which was cleared by the previous loop <- Decrement the loop Counter in Cell #0 ] Loop till Cell #0 is zero; number of iterations is 8 The result of this is: Cell No : 0 1 2 3 4 5 6 Contents: 0 0 72 104 88 32 8 Pointer : ^ >>. Cell #2 has value 72 which is 'H' >---. Subtract 3 from Cell #3 to get 101 which is 'e' +++++ ++..+++. Likewise for 'llo' from Cell #3 >>. Cell #5 is 32 for the space <-. Subtract 1 from Cell #4 for 87 to give a 'W' <. Cell #3 was set to 'o' from the end of 'Hello' +++.----- -.----- ---. Cell #3 for 'rl' and 'd' >>+. Add 1 to Cell #5 gives us an exclamation point >++. And finally a newline from Cell #6
LOLCODE is made up of lolspeak, the ‘language’ used by lolcats. The language was designed by Adam Lindsay in 2007, a researcher at Lancaster University’s Computing Department. The language isn’t as complete as traditional ones, with syntax and operator priorities not clearly defined but there are functioning compliers for that available out there. The hilarity and cuteness of the language more that makes up for this though. Just take a look at the ‘Hello World!’ code below:
HAI CAN HAS STDIO? VISIBLE "Hello World!" KTHXBYE
Similar to Brainf*ck, Befunge was developed by Chris Pressey in 1993, with the aim of creating a language that would be as hard to compile as possible. He does this by implementing self-modifying code and having the same instruction being executed in four different ways, not to mention the instruction set itself. However, a number of compilers were eventually created. Below is the source code for ‘Hello World!':
> v v ,,,,,"Hello"< >48*, v v,,,,,,"World!"< >25*,@
Here is a programming language made entirely out of one-liners from movies featuring Arnold Schwarzenegge, classics such as Terminator, Predator and Total Recall. ArnoldC was created by Lauri Hartikka, who swapped out standard commands with their equivalent Arnold one-liner. Example includes False and True, which becomes "I LIED" and "NO PROBLEMO", respectively. Here’s how a "Hello World!" code would look like:
IT'S SHOWTIME TALK TO THE HAND "Hello World!" YOU HAVE BEEN TERMINATED
If bodybuilding Austrian actors isn’t your thing, you may prefer the Shakespeare programming language. Created by Jon Aslund and Karl Hesselstörm, the aim was to make a programming language that didn’t look like one. In this case, the source code looks exactly like a Shakespeare play. Variables must be named after Shakespearian characters and constants are decided by positive or negative nouns.
A "Hello World!" sample is quite long, reading exactly like a play, so here is only part of the source code (the full one is available here):
The Infamous Hello World Program. Romeo, a young man with a remarkable patience. Juliet, a likewise young woman of remarkable grace. Ophelia, a remarkable woman much in dispute with Hamlet. Hamlet, the flatterer of Andersen Insulting A/S. Act I: Hamlet's insults and flattery. Scene I: The insulting of Romeo. [Enter Hamlet and Romeo] Hamlet: You lying stupid fatherless big smelly half-witted coward! You are as stupid as the difference between a handsome rich brave hero and thyself! Speak your mind! You are as brave as the sum of your fat little stuffed misused dusty old rotten codpiece and a beautiful fair warm peaceful sunny summer's day. You are as healthy as the difference between the sum of the sweetest reddest rose and my father and yourself! Speak your mind! You are as cowardly as the sum of yourself and the difference between a big mighty proud kingdom and a horse. Speak your mind. Speak your mind! [Exit Romeo]
Similar to Shakespeare, Chef, created by David Morgan-Mar, is a programming language that doesn’t look like one, looking instead like a cooking recipe. The design principles of the language is that
- the code should not only generate valid output but the output must be easy to prepare and delicious
- recipes appeal to cooks with different budgets
- the recipes have to be metric
In other words, the recipes must work as code, AND can be prepared and eaten. The source code for the ‘Hello World!’ program is available below:
Hello World Souffle. This recipe prints the immortal words "Hello world!", in a basically brute force way. It also makes a lot of food for one person. Ingredients. 72 g haricot beans 101 eggs 108 g lard 111 cups oil 32 zucchinis 119 ml water 114 g red salmon 100 g dijon mustard 33 potatoes Method. Put potatoes into the mixing bowl. Put dijon mustard into the mixing bowl. Put lard into the mixing bowl. Put red salmon into the mixing bowl. Put oil into the mixing bowl. Put water into the mixing bowl. Put zucchinis into the mixing bowl. Put oil into the mixing bowl. Put lard into the mixing bowl. Put lard into the mixing bowl. Put eggs into the mixing bowl. Put haricot beans into the mixing bowl. Liquefy contents of the mixing bowl. Pour contents of the mixing bowl into the baking dish. Serves 1.
Whitespace was created by Edwin Brady and Chris Morris as an April Fools’ joke. Where most programming languages ignore whitespace characters, Whitespace uses them as commands, ignoring non-whitespace characters instead. Because of this, Whitespace code can be written inside programming languages that ignore whitespace. Below is a ‘Hello World!’ source code written in Whitespace (color is used for clarity).
(Image Source: Wikipedia)
Named after Piet Mondrian, Piet is yet another esoteric programming language created by David Morgan-Mar. The program is compiled by a pointer that will move around the image, from one section to the other. The code is in the color; the colors is read by the compiler to turn into a program. Below is an example of a ‘source code’, with the output being ‘Hello World!':
(Image Source: Wikipedia)
Chicken. This is a programming language consisting of only one word: chicken. It was created by Swedish programmer Torbjörn Söderstedt, who was inspired to create it after hearing Doug Zongker’s parody of scientific speeches (which nobody understands). Rather than showing the code for ‘Hello World!’, which would take half the page and consist of nothing but the word ‘chicken’, here is the paper and presentation that inspired the language:
Ook! is a derivative of Brainf*ck, and is created by serial esoteric language developer, David Morgan-Mar. The structure is the same, except the eight commands are substituted with combinations of "Ook.", "Ook?" and "Ook!". The aim was to create, and we kid you not, a programming language "writable and readable by orangutans". Below is the source code for ‘Hello World!':
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.
Developed by Ryan Kusnery, ReMorse is a programming language that was made to look like Morse code. There are only four instructions: dot (.), dotty (. followed by a space), dash (-) and dasher (- followed by a space). The specifications of ReMorse were unclear, and ReMorse2 was created as an attempt to clean the code up a bit. Below is an incomplete sample for ‘Hello World!":
- - - ..- ...-.---.;newline - - - .-. - ..-.- ...-. ---.;! - - - ...- . . -.---.;d ----. . . -.---.;l ----. . -...---.;r ----. -...---.;o ----...-.- ..-. ---.;W omitted code for "Hello " is similar to the above for "World!" -..............;output all characters
Anyone who has ever spent even a bit of time on the internet knows what l33t sp34k (leet speak) is — users substitute words and letters with numbers and intentionally bad spelling. Two programmers, Stephen McGreal and Alex Mole, decided that it would be a good idea to create a programming language out of it and thus l33t was born. As with many other esoteric languages, it was designed to be as "brain-melting as possible to code in". Below is the source code for ‘Hello World!':
// "Hello World" by Stephen McGreal. // Note that the views expressed in this source code // do not necessarily coincide with those of the author :o) Gr34t l33tN3$$? M3h... iT 41n't s0 7rIckY. l33t sP33k is U8er keWl 4nD eA5y wehn u 7hink 1t tHr0uGh. 1f u w4nn4be UB3R-l33t u d3f1n1t3lY w4nt in 0n a b4d4sS h4xX0r1ng s1tE!!! ;p w4r3Z c0ll3cT10n2 r 7eh l3Et3r! Qu4k3 cL4nS r 7eh bE5t tH1ng 1n teh 3nTIr3 w0rlD!!! g4m3s wh3r3 u g3t to 5h00t ppl r 70tAl1_y w1cK1d!! I'M teh fr4GM4stEr aN I'lL t0t41_1Ly wIpE teh phr34k1ng fL00r ***j3d1 5tYlE*** wItH y0uR h1dE!!!! L0L0L0L! t3lEphR4gG1nG l4m3rs wit mY m8tes r34lLy k1kK$ A$$ l33t hAxX0r$ CrE4t3 u8er- k3wL 5tUff lIkE n34t pR0gR4mm1nG lAnguidGe$... s0m3tIm3$ teh l4nGu4gES l00k jUst l1k3 rE41_ 0neS 7o mAkE ppl Th1nk th3y'r3 ju$t n0rMal lEE7 5pEEk but th3y're 5ecRetLy c0dE!!!! n080DY unDer5tAnD$ l33t SpEaK 4p4rT fr0m j3d1!!!!! 50mE kId 0n A me$$4gEb04rD m1ghT 8E a r0xX0r1nG hAxX0r wH0 w4nT2 t0 bR34k 5tuFf, 0r mAyb3 ju5t sh0w 7eh wAy5 l33t ppl cAn 8E m0re lIkE y0d4!!! hE i5 teh u8ER!!!! 1t m1ght 8E 5omE v1rus 0r a Pl4ySt4tI0n ch34t c0dE. 1t 3v3n MiTe jUs7 s4y "H3LL0 W0RLD!!!" u ju5t cAn'T gu3s5. tH3r3's n3v3r anY p0iNt l00KiNg sC3pT1c4l c0s th4t, be1_1Ev3 iT 0r n0t, 1s whAt th1s 1s!!!!! 5uxX0r5!!!L0L0L0L0L!!!!!!!
Omgrofl (which stands for ‘oh my god rolling on the floor’) was created by Juraj Borza where all the commands are made up of internet acronyms such as lol, wtf, brb, stfu, etc. All variables declared with the language must be in the form of lol, e.g. lol, lool, loool, etc. Here’s what the source code for ‘Hello World!’ looks like:
loool iz lol looooool iz lool rtfm wtf looooool iz liek 0 tldr brb lmao loool roflmao looooool brb
Velato is a language created by Daniel Temkin which uses MIDI files as the source code. The commands are determined by the the pitch and order of notes and the source codes created using Velato tend to have a jazz-like sound to them. The ‘Hello World!" example given below is what the ‘source code’ looks like:
(Image Source: Daniel Temkin)
If a programming language is named after the eighth circle of Hell, you know what to expect. Created by Ben Olmstead in 1998, Malbolge was designed to be near-impossible to program it. In fact, it was not manmade — it is created using an algorithm. It’s no wonder that it took 2 years for the program to materialize. This is the source code for ‘Hello World!’ for this impossible programming language to give you an idea of the craziness in the code.