An esoteric programming language (/ˌɛs.oʊˈtɛɹ.ɪk/ ess-oh-TERR-ick), or esolang (/ˈiːsəʊlæŋ/ in British English and /ˈɛsəlæŋ/ or /ˈɛsoʊlæŋ/ in American English), 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 and writing programs in them, as well as debating their computational properties (e.g. if said languages are Turing-complete). Apart from this website there are a couple of other forums where such people meet. See the Community portal for details.
HistoryThe 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 most likely first used in programming context to refer to 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 entered common use.
See the Timeline of esoteric programming languages for a chronological listing of esoteric programming languages.
PurposeThere are many different reasons for creating an esoteric programming language. Possibly most indicative of an esolang is that the language is not designed for serious functionality or use, unlike many mainstream programming languages. Beyond that, a few broad categories can be recognized:
MinimalismA 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.
New conceptsThe exploration of alternative ways to design programming languages is quite popular among esoteric programmers. Good examples include Befunge, Thue and Unlambda.
WeirdnessSome 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.
ThemedSome languages are based on a theme that is not computer related. For instance, var'aq is based on the fictional Klingon language. Shakespeare programs are modeled like Shakespearean plays, while Chef programs appear to be cooking recipes.
BrevityMany esoteric languages are designed to be as short as possible. These languages are known as "Golfing languages", and frequently used for "code golf", a competition to solve programming tasks in as few characters or bytes as possible. Examples include CJam, Pyth, and GolfScript, as well as many others.
JokesMany esoteric languages are created purely as a joke. Some of them are nevertheless usable for programming, like l33t and Ook!, while others, like HQ9+ and Bitxtreme, are not.
ObfuscationSome esoteric languages are intentionally designed to be hard to read (as opposed to being hard to write or to understand). Unreadable is a good example here.
See alsoRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4