Overview: Created by Urban Müller in 1993, Brainfuck is a minimalist, Turing-complete programming language with only eight commands: >
, <
, +
, -
, [
, ]
, ,
, and .
. It was designed as an experiment in minimalism, pushing the boundaries of how little syntax can be used to represent a fully functional language.
Brainfuck's simplicity is both its charm and its challenge. Programs are written by manipulating a tape of memory cells and a data pointer, and despite the sparse command set, complex programs like interpreters and even games have been written in Brainfuck. It is popular in programming communities for those who enjoy brain-teasing challenges and writing compact, elegant solutions to problems.
Cult Status: Brainfuck's notoriety comes from its minimalist nature, which forces developers to think deeply about how to accomplish tasks with a bare minimum of instructions. It is a favorite language for those who enjoy coding puzzles and competitions. Communities enjoy creating interpreters for it in other languages and writing difficult-to-read "obfuscated" Brainfuck code.
How to Run on Linux:
sudo apt install bf
bf hello.bf
Overview: INTERCAL (Compiler Language With No Pronounceable Acronym) is a deliberately difficult and absurd language created in 1972 by Don Woods and James Lyon. The language was meant to parody contemporary programming languages like Fortran, COBOL, and Assembly, and it includes features designed to make programming as frustrating as possible. For example, INTERCAL encourages politeness by requiring the programmer to use the keyword PLEASE
, but if PLEASE
is used too frequently, the program may refuse to compile out of politeness overload.
INTERCAL was designed to be impractical, and its syntax includes statements that are intentionally obscure and unproductive. Despite this, a dedicated community exists, finding joy in mastering INTERCAL’s strange syntax and submitting programs that accomplish simple tasks in the most convoluted way possible.
Cult Status: INTERCAL appeals to those who appreciate absurd humor and the intellectual challenge of writing correct programs in a language that is designed to obstruct the programmer's intentions. The community thrives on creating increasingly ridiculous programs that make normal tasks nearly impossible.
How to Run on Linux:
sudo apt install intercal
ick hello.i
Overview: Malbolge, created by Ben Olmstead in 1998, is one of the most notorious esoteric programming languages due to its mind-bending complexity. Named after the eighth circle of hell in Dante's "Inferno," Malbolge was designed to be nearly impossible to program in. Its self-modifying, cryptographic-like nature, combined with an unusual instruction set, makes even writing simple programs extremely difficult.
The first valid "Hello, World!" program in Malbolge was written two years after the language's release, and it is often cited as one of the hardest programming languages ever created. The language operates on a ternary virtual machine with commands that change based on their position in memory, and every operation modifies the program itself.
Cult Status: Malbolge has a dedicated but small following of programmers who relish the challenge of mastering what is considered an almost incomprehensible language. It has a reputation for being so difficult that even trivial programs feel like significant accomplishments, and this draws in a unique group of enthusiasts.
How to Run on Linux:
git clone https://github.com/linuskendall/malbolge-interpreter
cd malbolge-interpreter
gcc malbolge.c -o malbolge
./malbolge hello.mal
Overview: Whitespace, created by Edwin Brady and Chris Morris in 2003, is a language where only spaces, tabs, and newlines are considered commands, and all non-whitespace characters are ignored. This makes Whitespace programs look blank to the untrained eye, which adds to the novelty and challenge.
Whitespace programs operate by manipulating a stack and performing basic arithmetic and control flow, all encoded in whitespace characters. The primary difficulty lies in reading and writing code that is completely invisible in most text editors unless spaces and tabs are made visible.
Cult Status: Whitespace appeals to those who enjoy puzzles, coding humor, and the ability to "hide" their programs in plain sight. The language's stealthy nature makes it popular for coding challenges and contests, where the goal is to create functional, invisible programs.
How to Run on Linux:
git clone https://github.com/potato-lang/whitespace
cd whitespace
python3 whitespace.py hello.ws
Overview: Piet, created by David Morgan-Mar in 2002, is a visual programming language where the code is represented as an abstract image. Named after the painter Piet Mondrian, Piet programs consist of a grid of colors, and the program's flow is determined by transitions between regions of different colors.
The instruction pointer moves through the image based on changes in hue and brightness. The challenge is not only in making the program work but also in making the resulting image visually appealing, leading to the creation of code that is both functional and artistic.
Cult Status: Piet is beloved by those who enjoy visual programming and art. The language's unique combination of creativity and logic has inspired a community of programmers who enjoy the challenge of writing programs that look like abstract paintings. Piet encourages an aesthetic approach to programming, where creating something beautiful is just as important as making it run.
How to Run on Linux:
sudo apt install npiet
npiet hello.png
Overview: Created by Chris Pressey in 1993, Befunge is a two-dimensional stack-based programming language that allows the instruction pointer to move in any direction (up, down, left, or right) across a grid of commands. This is in stark contrast to most programming languages, which are strictly linear in flow.
Befunge was designed to be difficult to compile due to its non-linear nature. In fact, the language was intended to be "uncompilable." The unique control flow makes Befunge ideal for programmers who enjoy puzzles, as understanding the direction and movement of the instruction pointer is key to writing functional programs.
Cult Status: Befunge has attracted a dedicated following among those who enjoy non-standard control flows and spatial programming. Its playful structure makes it a favorite in the esoteric programming community, with challenges focusing on constructing complex programs in its grid-based layout.
How to Run on Linux:
sudo apt install befunge
befunge hello.bf
Overview: LOLCODE, created by Adam Lindsay in 2007, is a humorous programming language that mimics the syntax and language of the LOLCats internet meme. LOLCODE is written in an intentionally broken English style that is full of internet slang, such as "I HAS A" to declare a variable and "VISIBLE" to print to the console.
LOLCODE is a fully functional language, and it has a strong community of programmers who enjoy the novelty of writing code that reads like a meme. While LOLCODE is not particularly efficient, its charm lies in the comedic aspect and the ease with which non-programmers can enjoy reading the code.
Cult Status: LOLCODE is popular for its humor and simplicity. The language appeals to both programmers and internet culture enthusiasts who enjoy the playful tone and ease of reading the code. Many use LOLCODE to create simple programs or jokes, and it remains a lighthearted favorite in the esolang community.
How to Run on Linux:
sudo apt install lci
lci hello.lol
Overview: Created by Karl Hasselström and Jon Åslund in 2001, Shakespeare is a programming language where programs are written as plays in Shakespearean English. Variables are named after characters, and the program's flow is hidden in the structure of acts and scenes.
Shakespeare was designed to make source code look like a dramatic script, complete with monologues, dialogues, and asides. Each variable is represented by a character in the play, and arithmetic operations are hidden in the flow of the dialogue. This gives the language an elegant but challenging syntax that blends literature with programming.
Cult Status: Shakespeare appeals to literary-minded programmers who enjoy the creative challenge of writing functional code that also reads like a play. The language has a small but passionate following of enthusiasts who appreciate the aesthetic and intellectual blend of the two worlds.
How to Run on Linux:
git clone https://github.com/doctor-g/shakespeare-lang
cd shakespeare-lang
./splang hello.spl
Overview: Created by David Morgan-Mar, Ook! is a parody of the minimalist Brainfuck language. In Ook!, every command is replaced by a variation of the word "Ook." The language was "designed" for orangutans, as a humorous take on the overly simple nature of Brainfuck.
Ook! consists of only three words: "Ook.", "Ook!", and "Ook?". Combinations of these words form all the commands in the language. It is a direct translation of Brainfuck into a more humorous and verbose form, with the added joke that it is for orangutans.
Cult Status: Ook! is popular in the esoteric programming community as a humorous alternative to Brainfuck. While the language itself isn't particularly unique in its functionality, the joke has given it a niche following among fans of minimalist programming languages.
How to Run on Linux:
git clone https://github.com/lioncash/ook-interpreter
cd ook-interpreter
python3 ook.py hello.ook
Overview: Created by Wouter van Oortmerssen in 1993, FALSE is a stack-based language known for its incredibly terse syntax. Every command in FALSE is a single character, which results in extremely compact source code. Despite its simplicity, FALSE is a Turing-complete language, meaning it can theoretically compute anything that can be computed.
FALSE has inspired several other minimalist languages, including Brainfuck. Its compactness makes it a favorite for those who enjoy writing highly compressed code that accomplishes significant tasks with very few characters.
Cult Status: FALSE is loved by those who appreciate code golf (the practice of writing programs with as few characters as possible) and the challenge of writing terse, elegant solutions to problems. It has a small but dedicated community of fans who enjoy pushing the boundaries of compact code.
How to Run on Linux:
git clone https://github.com/FALSE-lang/false-interpreter
cd false-interpreter
gcc false.c -o false
./false hello.false
Overview: Thue, created by John Colagioia in 2000, is based on context-free grammars and is a string-rewriting language. It is non-deterministic, meaning that the order of execution is not always predictable, which adds an additional layer of complexity.
Thue operates by defining rewriting rules that replace parts of strings, allowing it to perform computations by manipulating these strings. The language is inspired by formal language theory, and its non-deterministic nature makes it an interesting challenge for programmers familiar with grammars and parsing.
Cult Status: Thue appeals to those who enjoy theoretical computer science and the challenge of designing and working with formal grammars. Its cult following is made up of enthusiasts who appreciate the intersection of computational theory and esolang design.
How to Run on Linux:
git clone https://github.com/soimort/thue-interpreter
cd thue-interpreter
python3 thue.py hello.thue
Overview: Chef, created by David Morgan-Mar in 2002, is an esoteric language where programs are written as cooking recipes. Ingredients serve as variables, and instructions like "mix," "stir," and "bake" are used to perform arithmetic operations and control flow.
The goal of Chef is not only to create functional programs but also to make the resulting "recipes" read as plausible cooking instructions. This gives Chef an element of creative storytelling, as the output is both a working program and a plausible-sounding recipe.
Cult Status: Chef has a small but enthusiastic following of programmers who enjoy the whimsical nature of the language. The challenge of writing code that both works and resembles a real recipe makes Chef unique, and its novelty has attracted a loyal community.
How to Run on Linux:
git clone https://github.com/cwfu/chef
cd chef
python3 chef.py hello.chef
Overview: Created by Martin Ender in 2015, Hexagony is a two-dimensional esoteric language where the program is written on a hexagonal grid. The instruction pointer can move in six directions, and the code is designed to manipulate data in this multi-directional space.
Hexagony challenges programmers to think spatially, as the program flow moves across the hexagonal grid in ways that are unfamiliar to those accustomed to linear code. This makes it a fun and complex language for those who enjoy non-linear control flow.
Cult Status: Hexagony has a cult following among programmers who enjoy geometric programming challenges. Its hexagonal structure makes it stand out from other two-dimensional esoteric languages, and the puzzle-like nature of writing functional code in this format appeals to a unique group of enthusiasts.
How to Run on Linux:
git clone https://github.com/m-ender/hexagony
cd hexagony
python3 hexagony.py hello.hex
Overview: Velato is an esoteric programming language where programs are written as MIDI files. The pitch of the notes in the MIDI file determines the commands, making Velato a fascinating language for those who enjoy both programming and music composition.
The language uses the properties of musical notation to encode computational logic, meaning that Velato programs are written and "played" as music. The pitch, velocity, and length of notes all contribute to the behavior of the program.
Cult Status: Velato has a following among those who appreciate the creative intersection of music and programming. Writing functional programs that are also pleasing to listen to is a unique challenge, and the language's novelty has attracted a small but loyal group of enthusiasts.
How to Run on Linux:
git clone https://github.com/austin-fox/velato
cd velato
python3 velato.py hello.midi