There are hundreds of programming languages that exist today, but only select languages are used professionally.
The majority of the remaining languages are esoteric languages, sometimes called ‘esolangs.’ Unlike practical programming languages, esolangs are not focused on building an easier or more efficient coding structure. Instead, many esolangs are created as practical jokes or ways to challenge the programmers who use them.
The LOLCODE language is one of the most popular esolangs in the coding community. The language was based on the concept of “lolcat” and “lolspeak” culture. The popular “lolcat” memes often feature an image of a cat with a caption that contains purposeful spelling and grammar mistakes.
With LOLCODE, the language syntax mirrors that of “lolspeak,” with silly text abbreviations and grammatical errors. For instance, to declare and assign a value to a variable, the keyword is “I HAS A” followed by the variable name, followed by “ITZ” and its value (ex: I HAS A VAR ITZ 15).
Beyond LOLCODE’s syntax, another notable characteristic is LOLCODE’s representation of different variable types. A string is called a “YARN”, an integer is a “NUMBR”, a float is a “NUMBAR”, and a boolean is a “TROOF.”
When using a string, or rather a YARN, LOLCODE uses text based emoticons by using the colon (:) as the escape character. Specifically, “:)” can be used to create a newline, “:>” represents a tab, etc.
These are just a few of the eccentric traits of LOLCODE that make it the fun language esolang enthusiasts have come to appreciate.
Omgrofl is very similar to LOLCODE, but with a bigger emphasis on the use of text abbreviations. Fittingly, Omgrofl stands for “oh my gosh rolling on the floor laughing,” a combination of the acronyms “omg” and “rofl.” All of the commands in Omgrofl are also made up of similar common Internet slang words.
For example, to create variables with Omgrofl, the variable must be written in a variation of “lol” (a common abbreviation for “laughing out loud”) such as lol, lool, loool, etc. To assign a value to a variable, follow your lol variable name with “iz’ and the variable’s value (ex: lol iz 15).
Conditionals use “wtf” (abbreviation for “what the flip”) as the conditional if-statement. When comparing expressions in a conditional, using “iz uber” checks for less than or greater than expressions, “iz liek” checks for equal expressions, and “nope” can be used to nullify a condition.
In the context of loops, Omgrofl uses the command “rtfm” (abbreviation for “read the flipping manual”) to begin a loop and “brb” (abbreviation for “be right back”) to close the loop.
Other Omgrofl commands follow the same pattern, using various slang words to communicate different instructions.
Next is Velato, which takes a unique spin on traditional programming languages by using musical notes to create code rather than text-based commands. The source code itself is provided in the form of MIDI files.
Within the music, commands are interpreted based off of the intervals between the notes in the piece. For example, an if-statement is denoted by a perfect 5th interval, an else statement is denoted by a major 6th, etc.
Velato also introduces the idea of a “command root note.” However, the command root note does not refer to the root of a chord or a particular key as a musician might expect. Instead, the command root note is defined by the first note of the song. When the note is played twice, the command root note can be changed to a new note.
Command root notes are especially important when working with variables. Velato allows any note to be a variable, but they can only be called by commands that do not have a command root note that is the same as the variable note.
Although Velato isn’t capable of creating functions and can be initially confusing to newcomers, Velato offers a challenge to musically inclined programmers to not only compose their own music, but create a coded program inside of it.
In general, whitespace refers to characters that represent invisible space on a page. Likewise, the commands in the Whitespace language are based off of characters that do just that, such as spaces, tabs, or new lines. Any other characters are ignored.
Whitespace uses binary code to represent data with spaces as zeroes and tabs as ones. So, a sequence of tab-tab-space-space would translate to 1100 in binary or “12” in base-10.
On its own, Whitespace is limited in what types of programs that it can truly create. To make the classic “hello world” print project, you would need to use almost 1000 individual whitespace characters.
In short, the scope of programming languages isn’t just limited to building languages for practical purposes. Esolangs have become an exciting new way for programmers to explore and push the boundaries of programming language design.
Chan, Clarence. “Omgrofl Documentation.” Clarencecodes, GitHub, 2018, clarencecodes.github.io/omgrofl-technical-documentation/index.html.
Hajdarbegovic, Nermin. “Meet Whitespace: The World’s Most Impractical Programming Language?” WhoIsHostingThis, 13 Feb. 2018, www.whoishostingthis.com/resources/whitespace-programming/.
Meza, Justin. 2014. LOLCODE 1.2. [Source code]. https://github.com/justinmeza/lolcode-spec/blob/master/v1.2/lolcode-spec-v1.2.md.