Turing tarpit

Last updated

A Turing tarpit (or Turing tar-pit) is any programming language or computer interface that allows for flexibility in function but is difficult to learn and use because it offers little or no support for common tasks. [1] The phrase was coined in 1982 by Alan Perlis in the Epigrams on Programming : [2]

Contents

54. Beware of the Turing tar-pit in which everything is possible but nothing of interest is easy.

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. However, having that theoretical ability is not the same as usefulness in practice. Turing tarpits are characterized by having a simple abstract machine that requires the user to deal with many details in the solution of a problem. [3] At the extreme opposite are interfaces that can perform very complex tasks with little human intervention but become obsolete if requirements change slightly.

Some esoteric programming languages, such as Brainfuck or Malbolge, are specifically referred to as "Turing tarpits" [4] because they deliberately implement the minimum functionality necessary to be classified as Turing complete languages. Using such languages is a form of mathematical recreation: programmers can work out how to achieve basic programming constructs in an extremely difficult but mathematically Turing-equivalent language. [5]

See also

Related Research Articles

Brainfuck is an esoteric programming language created in 1993 by Urban Müller.

<span class="mw-page-title-main">Software</span> Non-tangible executable component of a computer

Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work.

Computer programming is the process of performing particular computations, usually by designing and building executable computer programs. Programming involves tasks such as analysis, generating algorithms, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms. The source code of a program is written in one or more languages that are intelligible to programmers, rather than machine code, which is directly executed by the central processing unit. The purpose of programming is to find a sequence of instructions that will automate the performance of a task on a computer, often for solving a given problem. Proficient programming thus usually requires expertise in several different subjects, including knowledge of the application domain, specialized algorithms, and formal logic.

<span class="mw-page-title-main">Programming language</span> Language for communicating instructions to a machine

A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.

Software documentation is written text or illustration that accompanies computer software or is embedded in the source code. The documentation either explains how the software operates or how to use it, and may mean different things to people in different roles.

In computer science, syntactic sugar is syntax within a programming language that is designed to make things easier to read or to express. It makes the language "sweeter" for human use: things can be expressed more clearly, more concisely, or in an alternative style that some may prefer. Syntactic sugar is usually a shorthand for a common operation that could also be expressed in an alternate, more verbose, form: The programmer has a choice of whether to use the shorter form or the longer form, but will usually use the shorter form since it is shorter and easier to type and read.

In computability theory, a system of data-manipulation rules is said to be Turing-complete or computationally universal if it can be used to simulate any Turing machine. This means that this system is able to recognize or decide other data-manipulation rule sets. Turing completeness is used as a way to express the power of such a data-manipulation rule set. Virtually all programming languages today are Turing-complete.

An esoteric programming language is a programming language designed to test the boundaries of computer programming language design, as a proof of concept, as software art, as a hacking interface to another language, or as a joke. The use of the word esoteric distinguishes them from languages that working developers use to write software. The creators of most esolangs do not intend them 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.

Computer science is the study of the theoretical foundations of information and computation and their implementation and application in computer systems. One well known subject classification system for computer science is the ACM Computing Classification System devised by the Association for Computing Machinery.

<span class="mw-page-title-main">Don Norman</span> American researcher, professor, and writer

Donald Arthur Norman is an American researcher, professor, and author. Norman is the director of The Design Lab at University of California, San Diego. He is best known for his books on design, especially The Design of Everyday Things. He is widely regarded for his expertise in the fields of design, usability engineering, and cognitive science, and has shaped the development of the field of cognitive systems engineering. He is a co-founder of the Nielsen Norman Group, along with Jakob Nielsen. He is also an IDEO fellow and a member of the Board of Trustees of IIT Institute of Design in Chicago. He also holds the title of Professor Emeritus of Cognitive Science at the University of California, San Diego. Norman is an active Distinguished Visiting Professor at the Korea Advanced Institute of Science and Technology (KAIST), where he spends two months a year teaching.

<span class="mw-page-title-main">Usability</span> Capacity of a system for its users to perform tasks

Usability can be described as the capacity of a system to provide a condition for its users to perform the tasks safely, effectively, and efficiently while enjoying the experience. In software engineering, usability is the degree to which a software can be used by specified consumers to achieve quantified objectives with effectiveness, efficiency, and satisfaction in a quantified context of use.

<span class="mw-page-title-main">Alan Perlis</span> American computer scientist (1922–1990)

Alan Jay Perlis was an American computer scientist and professor at Purdue University, Carnegie Mellon University and Yale University. He is best known for his pioneering work in programming languages and was the first recipient of the Turing Award.

"Epigrams on Programming" is an article by Alan Perlis published in 1982, for ACM's SIGPLAN journal. The epigrams are a series of short, programming-language-neutral, humorous statements about computers and programming, which are widely quoted.

In computer science, human–computer interaction, and interaction design, direct manipulation is an approach to interfaces which involves continuous representation of objects of interest together with rapid, reversible, and incremental actions and feedback. As opposed to other interaction styles, for example, the command language, the intention of direct manipulation is to allow a user to manipulate objects presented to them, using actions that correspond at least loosely to manipulation of physical objects. An example of direct manipulation is resizing a graphical shape, such as a rectangle, by dragging its corners or edges with a mouse.

In computer humor, a write-only language is a pejorative term for a programming language alleged to have syntax or semantics sufficiently dense and bizarre that any routine of significant size is too difficult to understand by other programmers and cannot be safely edited. Similarly, write-only code is source code so arcane, complex, or ill-structured that it cannot be reliably modified or even comprehended by anyone with the possible exception of the author.

The following outline is provided as an overview of and topical guide to human–computer interaction:

The semantic gap characterizes the difference between two descriptions of an object by different linguistic representations, for instance languages or symbols. According to Andreas M. Hein, the semantic gap can be defined as "the difference in meaning between constructs formed within different representation systems". In computer science, the concept is relevant whenever ordinary human activities, observations, and tasks are transferred into a computational representation.

The collaborative human interpreter (CHI) is a proposed software interface for human-based computation specially designed for collecting and making use of human intelligence in a computer program. One typical usage is implementing impossible-to-automate functions.

James D. Hollan is professor of cognitive science and adjunct professor of computer science at the University of California, San Diego. In collaboration with Professor Edwin Hutchins, he directs the Distributed Cognition and Human–Computer Interaction Laboratory at UCSD, and co-directs the Design Lab. Hollan has also spent time working at Xerox PARC and at Bellcore. He was elected to the CHI Academy in 2003 and received the ACM SIGCHI Lifetime Research Award in 2015.

The task-focused interface is a type of user interface which extends the desktop metaphor of the graphical user interface to make tasks, not files and folders, the primary unit of interaction. Instead of showing entire hierarchies of information, such as a tree of documents, a task-focused interface shows the subset of the tree that is relevant to the task-at-hand. This addresses the problem of information overload when dealing with large hierarchies, such as those in software systems or large sets of documents. The task-focused interface is composed of a mechanism which allows the user to specify the task being worked on and to switch between active tasks, a model of the task context such as a degree-of-interest (DOI) ranking, a focusing mechanism to filter or highlight the relevant documents. The task-focused interface has been validated with statistically significant increases to knowledge worker productivity. It has been broadly adopted by programmers and is a key part of the Eclipse integrated development environment. The technology is also referred to as the "task context" model and the "task-focused programming" paradigm.

References

  1. "Turing Tarpit". wiki.c2.com. 21 November 2014. Retrieved 30 April 2023.
  2. Perlis, A (September 1982). "Epigrams on Programming". ACM SIGPLAN Notices. Yale University. 17 (9): 7–13. doi: 10.1145/947955.1083808 . S2CID   20512767.
  3. "Exploring the depths of a Turing tarpit". practicingruby.com. 17 January 2012. Retrieved 30 April 2023.
  4. Chandra, V (2014). Geek Sublime: The Beauty of Code, the Code of Beauty . Graywolf Press. ISBN   9781555973261 . Retrieved 28 August 2015. turing tarpit.
  5. Esoteric Topics in Computer Programming, Cat's Eye Technologies, Canada. ("They present the programmer with the challenge, intrigue, and entertainment of looking at known algorithms and concepts in a whole new light.")

Further reading