ArnoldC, your new favourite programming language, and more

Esoteric programming languages are often born out of entertaining side-projects and can be described in many ways: fun, fabulous and freaky. ArnoldC warrants only one description: Get your ass to Mars.

If you’ve always dreamed of being able to express yourself via a programming language based on the one-liners of Arnold Schwarzenegger, then consider your wish granted: ArnoldC is here to unveil the true semantics of Arnie’s legendary, classic movie quotes. All the greats are there: Terminator 2, Total Recall, Predator and of course… COMMANDO.

The language isn’t new, but it sure is cool. The Hello, World example convinced us:

IT'S SHOWTIME
TALK TO THE HAND "hello world"
YOU HAVE BEEN TERMINATED

ArnoldC is an imperative programming language where the basics are replaced with the most well-known quotes from different Schwarzenegger movies, duh. Parsing is done with Parboiled and ASM is used to generate the Java bytecode.

The wiki has more information about use, plus a brief overview of keywords. Some of our favourites:

Lauri Hartikka, the Finnish developer behind ArnoldC, says that the projects aims to “discover new meanings from the Arnold movies with the means of computer science”. After discovering this absolute gem on GitHub, we went on the hunt for other esoteric languages that you might not know about.

Hodor Programming Language

Game of Thrones fans rejoice: Hodor-lang is Hodor hodor hodor. The engineers behind this project say they wanted to focus on creating disruptive technology that just plain works. “Using jumbled permutations of the word ‘hodor’ over and over again we have simplified programming syntax to make it easier than ever before”.

You’ll need Node.js installed on your machine to get it to work, and the features list is legitimately just Hodor:

Hodor

Hodor hodor hodor hodor

Hodor hodor hodor

Hodor HODOR hodor

Hodor!

You can even convert your old JavaScript files to Hodor using their js2hd tool. js2hd myfile.js -> myfile.hd. More information is available on GitHub here.

Deadfish

When you’re talking esoteric programming languages, Deadfish is about as oddball as they get. It was created by Jonathan Todd Skinner and originally programmed in C, but has been since ported to over 50 other programming languages, including additional esolangs. It takes no input and only outputs integer values.

The kicker with Deadfish is its commands, which naturally include an xkcd variation. If you’ve never heard of xkcd comics, then I feel bad for you man. GET READING.

From this, you can go ahead and print the ASCII values of the characters in Hello, World:

Like we said, crazy. The description from the Esolang wiki about its name is also quite the corker:

Deadfish was originally going to be called fishheads as programming in this language is like eating raw fish heads. However, due to the limiting features of the language, programming in this language became like eating (and having to smell) dead, rotting fish heads, an experience not often generally considered pleasurable.

There’s also a great Reddit post breaking down the Deadfish basics if you feel like getting freaky.

Brainfuck

We couldn’t compile a list of esolangs without mentioning the one and only brainfuck (not capitalised unless at the start of a sentence). This eight-instruction Turing-complete programming language is the work of Urban Müller, from way back in 1993. It’s noted for its minimalism, containing 8 commands and was originally intended to write the smallest compiler ever for the Amiga OS 2.0.

Described by Brian Raiter as “ungodly”, a brainfuck program has an implicit byte pointer, called “the pointer”, which is free to move around within an array of 30000 bytes, initially all set to zero. The commands look a little something like this:

> increment the pointer

< decrement the pointer

+ increment the byte at the pointer

– decrement the byte at the pointer

. output the byte at the pointer

, input a byte and store it in the byte at the pointer

[ jump forward past the matching ] if the byte at the pointer is zero

] jump backward to the matching [ unless the byte at the pointer is zero