Back to Blog

It's a Mad, Mad, Mad, Mad, World

Written by Peter Bolte on July 05, 2017 in esolangs, programming, languages, code, coding

Esolangs: Part II

We promise, this is the last of esolangs!

In one of our blogs a few weeks ago we introduced to you the concept of esoteric programming languages (esolangs) and shared a few of our favorite ones.

While they are mostly useless in a functional sense, and you’d probably end up pulling out all of your hair while trying to write programs with them, they certainly can give you some levity and a quick break from your daily routine.

So bear in mind this is mostly tongue-in-cheek, but here are seven more esolangs to tickle your fancy:

CHEF: Chef was developed by David Morgan-Mar in 2002. It is a stack-based programming language where the programs resemble cooking recipes. One of the key design principles states that “Program recipes should not only generate valid output, but be easy to prepare and delicious.” We shall see about that.

The following is a Hello World program created by Mike Worth called “Hello world cake with chocolate sauce”.

Hello World Cake with Chocolate sauce.

This prints hello world, while being tastier than Hello World Souffle. The main
chef makes a " world!" cake, which he puts in the baking dish. When he gets the
sous chef to make the "Hello" chocolate sauce, it gets put into the baking dish
and then the whole thing is printed when he refrigerates the sauce. When
actually cooking, I'm interpreting the chocolate sauce baking dish to be
separate from the cake one and Liquify to mean either melt or blend depending on
context.

Ingredients.
33 g chocolate chips
100 g butter
54 ml double cream
2 pinches baking powder
114 g sugar
111 ml beaten eggs
119 g flour
32 g cocoa powder
0 g cake mixture

Cooking time: 25 minutes.

Pre-heat oven to 180 degrees Celsius.

Method.
Put chocolate chips into the mixing bowl.
Put butter into the mixing bowl.
Put sugar into the mixing bowl.
Put beaten eggs into the mixing bowl.
Put flour into the mixing bowl.
Put baking powder into the mixing bowl.
Put cocoa  powder into the mixing bowl.
Stir the mixing bowl for 1 minute.
Combine double cream into the mixing bowl.
Stir the mixing bowl for 4 minutes.
Liquify the contents of the mixing bowl.
Pour contents of the mixing bowl into the baking dish.
bake the cake mixture.
Wait until baked.
Serve with chocolate sauce.

chocolate sauce.

Ingredients.
111 g sugar
108 ml hot water
108 ml heated double cream
101 g dark chocolate
72 g milk chocolate

Method.
Clean the mixing bowl.
Put sugar into the mixing bowl.
Put hot water into the mixing bowl.
Put heated double cream into the mixing bowl.
dissolve the sugar.
agitate the sugar until dissolved.
Liquify the dark chocolate.
Put dark chocolate into the mixing bowl.
Liquify the milk chocolate.
Put milk chocolate into the mixing bowl.
Liquify contents of the mixing bowl.
Pour contents of the mixing bowl into the baking dish.
Refrigerate for 1 hour.

Well, now I’m hungry.

reMorse: reMorse is an esolang created by Ryan Kusnery. It only consists of 4 instructions which include a dash (-), dash with a space(- ), dot (.), and dot with a space (. ).

reMorse was quickly followed up by reMorse2 in an attempt to clarify a very ambiguous set of original specs. reMorse2 is stated to be turing-complete. However, there seems to be some dispute of what actually can be considered turing-complete.

- - - ..- ...-.---.;newline
   - - - .-. - ..-.- ...-. ---.;!
   - - - ...- . . -.---.;d
   ----. . . -.---.;l
   ----. . -...---.;r
   ----. -...---.;o
   ----...-.- ..-. ---.;W
#The code for "Hello" has been left out by the original author so it is unclear if the complete "Hello, World!" has ever been programmed. 
   -..............;output all characters

SOS (...---...)

Spoon: Spoon was created by S. Goodwin in 1998 and stems from the esolang, Brain!@#k. It uses the original 8 commands as well as including two additional. However, each are set to a binary sequence to represent the given instruction.

Spoon's syntax:

 1 -  Increment the memory cell under the pointer
000 - Decrement the memory cell under the pointer
010 - Move the pointer to the right
011 - Move the pointer to the left
0011 - Jump back to the matching 00100
00100 - Jump past the matching 0011 if the cell under the pointer is zero
001010 - Output the character signified by the cell at the pointer
0010110 - Input a character and store it at the cell in the pointer
00101110 - Output the entire memory array
00101111 - Immediately terminate program execution

Here is an example of "Hello, World!" programmed in Spoon.

0101111111110010001111111111010000001101100101001011111110010001111110
1000000110111001010111111100101000101011100101001011111111111001000110
0000000000000000001000000110110000010100000000000000000000000000000000
0000000101001011111111111001000111111101000000110110010100101111110010
0011111101000000110110010101110010100000000000000000000010100000000000
0000000000000000101001011111111111001000110000000000000000000100000011
011000001010

Chicken: No, this is not an ingredient for Chef. We are now talking about chicken. Yes, chicken. That is right. The only valid symbol that is recognized is the word 'chicken'. When written out, a chicken program will use "chicken", " ", and "\n". In short, every line of code has a given number of ‘chicken’ and single spaces, followed by line breaks.

Below is "Hello, World!" written in Chicken (due to some lines having a tiresome length of vertical scroll, this is only a screenshot portion of what goes into printing "Hello, World!"):

That’s for the birds!

Whitespace: Whitespace is a programming language that only uses Whitespace as a syntax. Yes, that says exactly what it does. The interpreter ignores all non-whitespace characters other than space, tab, and linefeeds.

It was created in 2003 by Edwin Brady and Chris Morris because they were tired of whitespace almost always getting the short end of the stick.

"Some things which are difficult in other languages are made much easier in Whitespace. For example, literate programming is simply a matter of writing your helpful comments in between program instructions. It's also easy to encrypt your programs. Simply write a misleading comment!"

Here is "Hello, World!" in Whitespace (I've highlighted the spacing. As per the creators' notes, you'd have to note all of the spaces and tabs in your comments if you'd want someone to know the exact syntax):

Roadrunner: Roadrunner is an esolang named after the classic Looney Tunes cartoon character of the same name. This language mimics the programming language Brain!@#k using the same 8 commands. However for syntax, all of the original commands have been replaced by variations of the word “Meep” by merely altering capitalization to differentiate.

Roadrunner at work printing "Hello, World!"

mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEP meeP mEEp mEEp mEEp mEEp mEEp mEEp mEEp meeP mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEp meeP mEEp mEEp mEEp meeP mEEp Meep Meep Meep Meep MeeP MEEp meeP mEEp mEEp MEEP meeP mEEp MEEP mEEp mEEp mEEp mEEp mEEp mEEp mEEp MEEP MEEP mEEp mEEp mEEp MEEP meeP mEEp mEEp MEEP Meep Meep mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEp mEEp MEEP meeP MEEP mEEp mEEp mEEp MEEP MeeP MeeP MeeP MeeP MeeP MeeP MEEP MeeP MeeP MeeP MeeP MeeP MeeP MeeP MeeP MEEP meeP mEEp MEEP meeP MEEP

If only the coyote new how to write code, he may have caught that sneaky little fellow.

Z: We will go ahead and end with Z to have some kind of semblance of order within this craziness. Z’s syntax is made up of variations of ‘words’ that use up to 3 lower and uppercase Zs. Spaces and newline are also interpreted.

Z's syntax:

z - accepts input, stores in variable A
Z - outputs variable A
zz - puts values in A
    z - puts fixed value based on digits. Multiple words are multiple digits.
        z - one
        Z - two
        zz - three
        zZ - four
        Zz - five
        ZZ - six
        zzz - seven
        zzZ - eight
        zZz - nine
        zZZ - zero
        Zzz - decimal point
    Z - gets value at index of A on number grid. Stores in A.
zZ - move pointer to index A.
Zz - replace number at pointer with A.
ZZ - change number at index of pointer
    z - increase number by A
    Z - decrease number by A
zzz - jump to line A
zzZ - jump to line A if value at pointer is 0

Here is how one would write a "Hello, World!" program in Z:

zz z zzz Z  Z
zz z z zZZ z  Z
zz z z zZZ zzZ  Z  Z
zz z z z z  Z
zz z zz Z  Z
zz z zzZ zzz  Z
zz z z z z  Z
zz z z z zZ  Z
zz z z zZZ zzZ  Z
zz z z zZZ zZZ  Z
zz z zz zz  Z

Where these people are getting the time to conceive and develop these whacky languages, is beyond us.

That’s it for now with our introduction to the strange world of esolangs. However, if you are interested in learning more about some of the many practical programming languages such as HTML, CSS, JavaScript, and Ruby on Rails, take a look at our Web Development Intensive program.