|
An esoteric programming language (sometimes shortened to esolang[1]) 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. Such languages are often popular among hackers and hobbyists. This use of esoteric is meant to distinguish these languages from more popular programming languages. Some more popular languages may appear esoteric (in the usual sense of the word) to some, and though these could arguably be called "esoteric programming languages" too, this is not what is meant. A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer. ...
Hacker is a term applied often to computer software or computer hardware programmers, designers and administrators, and especially those who are perceived as experts or highly accomplished. ...
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. In computability theory a programming language or any other logical system is called Turing-complete if it has a computational power equivalent to a universal Turing machine. ...
History The earliest, and still the canonical example of an esoteric language was INTERCAL, designed in 1972 by James Lyon and Don Woods, with the stated intention of being unlike any other programming language the authors were familiar with. Canonical is an adjective derived from canon. ...
INTERCAL is a programming language parody, the canonical esoteric programming language. ...
1972 (MCMLXXII) was a leap year starting on Saturday. ...
Don Woods is a perennial hacker and computer programmer. ...
More than twenty years later, Urban Müller created the now-famous brainfuck, which consist of only eight recognized characters. Along with Befunge, brainfuck is now one of the most well-supported esoteric programming languages. These are canonical examples of minimal Turing tarpits and needlessly obfuscated language features; brainfuck's minimality borders on elegant and pure language design. Urban Dominik Müller (also spelled Urban Dominik Mueller when umlauts are not available) is the creator of the Aminet Amiga archive, the original author of the XPK compression library and the creator of the Brainfuck programming language. ...
The brainfuck language is an esoteric programming language noted for its extreme minimalism. ...
Befunge is a stack-based, reflective, esoteric fungeoid programming language. ...
A Turing tarpit is a programming language designed to be Turing-complete while minimizing the number of distinct instructions. ...
Esoteric programming terms Turing tarpit A Turing tarpit is a Turing-complete programming language with arbitrarily few commands, operators, or the equivalent. These include brainfuck (8 commands, all with 0 operands), OISC (1 command, 3 operands), and Thue (1 command, 2 operands). A Turing tarpit is a programming language designed to be Turing-complete while minimizing the number of distinct instructions. ...
In computability theory a programming language or any other logical system is called Turing-complete if it has a computational power equivalent to a universal Turing machine. ...
The brainfuck language is an esoteric programming language noted for its extreme minimalism. ...
The OISC is the One Instruction Set Computer, by humorous analogy with RISC (Reduced Instruction Set Computer) and CISC (Complex Instruction Set Computer). ...
Thue (pronounced TOO-ay) is an esoteric programming language invented by John Colagioia in early 2000. ...
Language paradigm The paradigm of a language can fall into a number of categories, and these categories are used to get a general understanding of the way that a specific language operates. These include imperative/despotic languages such as Brainfuck, in which instructions describe how to change data; functional languages such as Unlambda, in which data and code are more or less interchangeable and execution is the repeated application of functions to the results of other functions; and rewriting languages such as Thue, in which transformation functions are applied to an initial state. A programming paradigm is a paradigmatic style of programming (compare with a methodology, which is a paradigmatic style of doing software engineering). ...
The brainfuck language is an esoteric programming language noted for its extreme minimalism. ...
Unlambda is a minimal functional programming language based on combinatory logic, a version of the lambda calculus that omits the lambda operator. ...
Thue (pronounced TOO-ay) is an esoteric programming language invented by John Colagioia in early 2000. ...
Funges 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. Different instructions determine the direction in which the instruction pointer moves, and consequently, the sequence of instructions that is executed. In mathematics, a metric space is a set where a notion of distance between elements of the set is defined. ...
See Cartesian coordinate system or Coordinates (elementary mathematics) for a more elementary introduction to this topic. ...
Fig. ...
A position vector is a vector used to describe the spatial position of a point relative to a reference point called the origin (of the space). ...
The current official standard for the behaviour of these programming languages is the Funge-98 Specification. This specification is a generalisation of the semantics of the Befunge programming language, which has a two-dimensional toroidal topology. Languages which adhere closely to this standard, such as Unefunge (one-dimensional) and Trefunge (three-dimensional), are sometimes called funges, while more "distant relatives" which differ in significant respects, such as Wierd, are referred to as fungeoids. Befunge is a stack-based, reflective, esoteric fungeoid programming language. ...
:For other senses of this word, see dimension (disambiguation). ...
In geometry, a torus (pl. ...
Nondeterministic language For a deterministic language, if one is given the current state of a program, the next state can always be predicted. This is not true for a nondeterministic language. Most languages are deterministic, because nondeterministic languages such as Java2K often give unreliable results, and getting even trivial programs to have a reliable output is often a monumental task. Nondeterministic languages have only a certain probability (less than unity) of behaving the way that they are expected to.
Despotic language A despotic language is a Turing tarpit with a stateful encoding, namely a language in which commands are used to select from a finite range of operations and apply these operations to the current state of the program. Examples include reMorse and Whirl, and arguably INTERCAL. INTERCAL is a programming language parody, the canonical esoteric programming language. ...
Stateful encoding A system of encoding programs such that each substring of the encoding is an instruction to locate the next instruction in a list. An example based on reMorse or THRAT would be: - Select Next Operation in list
- Perform Operation
With the list of operations either standard (as in reMorse or THRAT) or dynamic (as in reMorse4ever).
Internet community There is a small but thriving community on the Internet of hobbyists who program in and design esoteric programming languages. The esolang community is active sporadically, and topics of discussion range from debate as to whether a language is Turing-complete to how one would go about representing abstract and hard to visualise mathematical concepts in a programming environment. There is a mailing list, but it is nearly abandoned and most discussion happens on the wiki (see below). In computability theory a programming language or any other logical system is called Turing-complete if it has a computational power equivalent to a universal Turing machine. ...
Turing completeness is a favorite topic of discussion, since it is not immediately obvious whether or not a language is Turing complete, and it often takes rather large intuitive leaps to come to a solution. New languages with new features are always being created, so proof of Turing completeness is always a challenge. A related pursuit among programming language enthusiasts is the writing of obfuscated code. Obfuscate redirects here; for the Discipline from the Vampire: The Masquerade/World of Darkness fictional setting please see Discipline (World of Darkness)#Obfuscate. ...
References - ^ http://catseye.mine.nu:8080/about/esolang.html
External links - C2 WikiWeb
- Esolang wiki — A Wiki dedicated to esoteric programming languages.
Lists The Open Directory Project (ODP), also known as dmoz (from directory. ...
Internet Archive headquarters, San Francisco The Internet Archive (archive. ...
Authors Funges |