Project summary

An esoteric programming language (sometimes shortened to esolang) is a programming language designed as a test of the boundaries of computer programming language design, as a proof of concept, or as a joke. There is usually no intention of the language being adopted for real-world programming.

Implemented languages

Brainfuck

Brainfuck is the most popular esoteric language. There are in total 8 commands, each one character long.

Hello world in Brainfuck

Ook!

Ook is a joke esoteric programming language. It is identical to Brainfuck, except that the instructions are changed into Orangutan words. The interpreter scans for !, ? and . characters, then translates it into a Brainfuck code.

Spoon

Spoon is also based on Brainfuck, but uses binary sequences to represent Brainfuck instructions converted through Huffman coding, with two additional commands added.

Byter

Byter is a language for training brains. Byter consists of 11 instructions that are intended to move the instruction pointer on a 16×16 matrix and for outputting the characters which are assosiated with each cell. On an output operation the ascii character associated with the specific cell is printed out. The correct ascii value is determined by the position of the cell: It starts with zero in the top left corner of the matrix, and is increased from left to right.

Whitespace

Whitespace is an esoteric programming language and it was released on 1 April 2003 (April Fool's Day). Its name is a reference to whitespace characters. Unlike most programming languages, which ignore or assign little meaning to most whitespace characters, the Whitespace interpreter ignores any non-whitespace characters. Only spaces, tabs and linefeeds have meaning. An interesting consequence of this property is that a Whitespace program can easily be contained within the whitespace characters of a program written in another language, making the text a polyglot.

The language itself is an imperative stack-based language. The virtual machine on which the programs run has a stack and a heap. The programmer is free to push arbitrary width integers onto the stack (currently there is no implementation of floating point numbers) and can also access the heap as a permanent store for variables and data structures.