Esoteric programming language
An esoteric programming language is a computer programming language designed to experiment with weird ideas, to be hard to program in, or as a joke, rather than for practical use.
There is a small but active Internet community of people creating esoteric programming languages, writing programs for them, and debating their computational properties (e.g. which languages are Turing-complete). Apart from this website there are a couple of other forums where they meet. See the Community portal for details.
The earliest known deliberately esoteric language is INTERCAL, designed in 1972 by Donald R. Woods and James M. Lyon. Some earlier programming languages were (intentionally or not) esoteric. Now, however, the most popular esoteric languages are probably Brainfuck and Befunge, both from 1993. A large number of the newer esoteric languages are heavily influenced by these two.
The term esoteric was probably first used in connection with what is now called esoteric programming languages on Chris Pressey's web site Esoteric Topics in Computer Programming. Later the Befunge Mailing List evolved into the Esoteric Topics Mailing List, and the word began to be used to describe this kind of language.
See the Timeline of esoteric programming languages for a chronological listing of esoteric programming languages.
There are many different reasons for creating an esoteric programming language. What is possibly most indicative is that the language was not designed for a particularly "serious" or "productive" purpose, as mainstream languages are. Beyond that, a few broad categories can be recognized:
A common design goal for esoteric programming languages is to have as few instructions as possible. Brainfuck, OISC, and Lazy K are examples of such languages. These kinds of languages, when they are Turing-complete, are often referred to as Turing tarpits.
Some languages are created mainly for the purpose of being weird and difficult to program in. INTERCAL's main purpose was to be as different as possible compared to normal languages (although there are still many similarities with conventional programming languages), and Malbolge was designed with the goal of being next to impossible to use.
Some languages are based on a theme that is not computer related. For instance, var'aq is based on the fictional Klingon language. Shakespeare programs looks like Shakespearean plays, while Chef programs appear to be cooking recipes.
- The Esoteric Programming Language WebRing
- Cat's Eye Technologies: Esoteric Topics in Computer Programming (from the Wayback Machine; retrieved on 9 June 2002)
- Wikipedia article on Esoteric programming languages
- Esoteric programming languages on the C2 Wiki
- Obfuscated programming languages on the open directory project