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.
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.
One of the best-known esoteric programming languages, brainfuck boils down the concept of an imperative language to just eight commands, using an infinite tape to store data rather than separate variables and boiling down control flow to nothing but while loops. Although the language is famously hard to read, consisting of nothing but punctuation marks, it is perhaps one of the best-studied esolangs in terms of writing programs, with many algorithms having been developed for development in it. It is particularly easy to implement as programming languages go, with its imperative paradigm reminiscent of most more widely used languages, making brainfuck a common first language for new esoprogrammers, and leading to the creation of a vast number of derivatives. Usability is rarely a high priority for such languages; often quite the opposite. The usual aim is to remove or replace conventional language features while still maintaining a language that is Turing-complete, or even one for which the computational class is unknown.
An esoteric programming language (sometimes shortened to esolang) is a programming language designed to test the boundaries of computer programming language design, as a proof of concept, or as a joke. The use of esoteric distinguishes these languages from programming languages that working developers use to write software. Usually, an esolang's creators do not intend the language to be used for mainstream programming, although some esoteric features, such as visuospatial syntax, have inspired practical applications in the arts. Such languages are often popular among hackers and hobbyists.
A funge is an esoteric programming language which models its programs as metric spaces with coordinate systems (often, but not necessarily, Cartesian) and which execute instructions located at points in their program space by moving an instruction pointer (a position vector which indicates the currently executing instruction) through that space.
Befunge and its like allow the instruction pointer to roam in multiple dimensions through the code. For example the following program displays "Hello World" by pushing the characters in reverse order onto the stack, then printing the characters in a loop which circulates clockwise through the instructions [>], [:], [v].
Chef by David Morgan-Mar is a stack-oriented programming language designed to make programs look like cooking recipes.
FALSE is a stack-based language with single-character commands and variables.
INTERCAL, short for "Compiler Language With No Pronounceable Acronym", was created in 1972 as a parody to satirize aspects of the various programming languages at the time.
LOLCODE is designed to resemble the speech of lolcats. The following is the "hello world" example:
CAN HAS STDIO?
VISIBLE "HAI WORLD!"