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
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.
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 - 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.