The creators of most esolangs do not intend them to be used for mainstream programming, although some esoteric features, such as visuospatial syntax,[1] have inspired practical applications in the arts.
Its revival in 1990 as an implementation in C under Unix stimulated a wave of interest in the intentional design of esoteric computer languages.
In 1993, Wouter van Oortmerssen created FALSE, a small stack-oriented programming language with syntax designed to make the code inherently obfuscated, confusing and unreadable.
[5] This inspired Urban Müller to create an even smaller language, the now-infamous Brainfuck, which consists of only eight recognized characters.
Along with Chris Pressey's Befunge (like FALSE, but with a two-dimensional instruction pointer), Brainfuck is now one of the best-supported esoteric programming languages, with canonical examples of minimal Turing tarpits and needlessly obfuscated language features.
Others, like Befunge and Shakespeare, utilize one or more stacks to hold data, leading to a manner of execution akin to Reverse Polish notation.
Finally, there are languages which explore alternative forms of number representation: the Brainfuck variant Boolfuck only permits operations on single bits, while Malbolge and INTERCAL variant TriINTERCAL replace bits altogether with a base 3 ternary system.
[7][page needed] This differs from conventional languages in which a program is a set of instructions usually encountered in sequence.
[8] Many esoteric programming languages are designed to produce code that is deeply obfuscated, making it difficult to read and to write.
[12] Brainfuck is designed for extreme minimalism and leads to obfuscated code, with programs containing only eight distinct characters.
The compiler interprets the number of "chickens" on a line as an opcode instruction which it uses to manipulate data on a stack.
[14] Chicken was invented by Torbjörn Söderstedt who drew his inspiration for the language from a parody of a scientific dissertation.
[19] A joking design principle states that "program recipes should not only generate valid output, but be easy to prepare and delicious", and Morgan-Mar notes that an example "Hello, World!"
[26] Malbolge (named after the 8th circle of Hell) was designed to be the most difficult and esoteric programming language.
Among other features, code is self-modifying by design and the effect of an instruction depends on its address in memory.
[27] Piet is a language designed by David Morgan-Mar, whose programs are bitmaps that look like abstract art.
[28][non-primary source needed] Variables are stored in memory as signed integers in a single stack.
For example, the following statement declares a point in the program which can be reached via a GOTO-type statement:[citation needed] Unlambda is a minimalist functional programming language based on SKI calculus, but combined with first-class continuations and imperative I/O (with input usually requiring the use of continuations).
This is the reverse of many traditional languages, which do not distinguish between different whitespace characters, treating tab and space the same.
It also allows Whitespace programs to be hidden in the source code of programs in languages like C.[citation needed] The cultural context of esolangs has been studied by Geoff Cox, who writes that esolangs "shift attention from command and control toward cultural expression and refusal",[32] seeing esolangs as similar to code art and code poetry, such as Mez Breeze's mezangelle, a belief shared by others in field.
[33] Daniel Temkin describes Brainfuck as "refusing to ease the boundary between human expression and assembly code and thereby taking us on a ludicrous journey of logic,"[34] exposing the inherent conflict between human thinking and computer logic by deconstructing their relationship.
He connects programming within an esolang to performing an event score such as those of the Fluxus movement, where playing out the irregular rules of the logic in code makes the point of view of the language clear.