Turing tarpit
Encyclopedia
A Turing tarpit is any programming language
or computer interface that allows for a great deal of flexibility in function but is difficult to learn and use because it offers little or no support for common tasks. The phrase was coined by Alan Perlis
in the epigram
In any Turing complete
language, it is possible to write any computer program, so in a very rigorous sense nearly all programming languages are equally capable. Turing tarpits prove that theoretical ability is not the same as usefulness in practice. A clear way of measuring this difference is by comparing the average lengths of common programs implemented in different systems. However, a very short version of a program may also be very hard to read.
Turing tarpits are characterized by having a simple abstract machine
which requires the user to deal with many details in the solution of a problem. At the extreme opposite are interfaces which can perform very complex tasks with little human intervention but become obsolete if requirements change slightly.
Some esoteric programming languages, such as brainfuck
, are specifically referred to as "Turing tarpits", meaning they purposefully implement a minimum of functionalities to be classified as a Turing complete language.
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
or computer interface that allows for a great deal of flexibility in function but is difficult to learn and use because it offers little or no support for common tasks. The phrase was coined by Alan Perlis
Alan Perlis
Alan Jay Perlis was an American computer scientist known for his pioneering work in programming languages and the first recipient of the Turing Award.-Biography:...
in the epigram
In any Turing complete
Turing completeness
In computability theory, a system of data-manipulation rules is said to be Turing complete or computationally universal if and only if it can be used to simulate any single-taped Turing machine and thus in principle any computer. A classic example is the lambda calculus...
language, it is possible to write any computer program, so in a very rigorous sense nearly all programming languages are equally capable. Turing tarpits prove that theoretical ability is not the same as usefulness in practice. A clear way of measuring this difference is by comparing the average lengths of common programs implemented in different systems. However, a very short version of a program may also be very hard to read.
Turing tarpits are characterized by having a simple abstract machine
Abstract machine
An abstract machine, also called an abstract computer, is a theoretical model of a computer hardware or software system used in automata theory...
which requires the user to deal with many details in the solution of a problem. At the extreme opposite are interfaces which can perform very complex tasks with little human intervention but become obsolete if requirements change slightly.
Some esoteric programming languages, such as brainfuck
Brainfuck
The brainfuck programming language is an esoteric programming language noted for its extreme minimalism. It is a Turing tarpit, designed to challenge and amuse programmers, and is not suitable for practical use...
, are specifically referred to as "Turing tarpits", meaning they purposefully implement a minimum of functionalities to be classified as a Turing complete language.
See also
- Greenspun's Tenth RuleGreenspun's Tenth RuleGreenspun's tenth rule of programming is an aphorism in computer programming and especially programming language circles that states:This expresses the opinion that the perceived flexibility and extensibility designed into the Lisp programming language includes all functionality that is...
- Zawinski's law of software envelopment
- Turing completenessTuring completenessIn computability theory, a system of data-manipulation rules is said to be Turing complete or computationally universal if and only if it can be used to simulate any single-taped Turing machine and thus in principle any computer. A classic example is the lambda calculus...