|
|||||||||||||||||
|
|||||||||||||||||
Overview
While truly Turing-complete machines are very likely physically impossible as they require unlimited storage, Turing completeness is often loosely attributed to physical machines or programming languages that would be universal if they had indefinitely enlargeable storage. All modern computers are Turing-complete in this sense. Charles Babbage's analytical engine (1830s) would have been Turing-complete if it had ever been built, but the first actual implementation appeared in 1941: the program-controlled Z3 of Konrad Zuse. The universality of the Z3 was shown by Raúl Rojas in 1998. Prior to Rojas' 1998 paper, the first machine known to be Turing-complete was ENIAC (1946). The gap from the 1830s to the 1940s was not a continuous "mechanical computer" development. A mathematical demonstration of the computational resolution of problems remains with the first formal programming languages (1930s), and a wide range of solutions was demonstrated in the 1930s and 1940s, justifying the "investment" on the modern Turing complete machines in the 1940s.
See the article on computability theory for a long list of systems that are Turing-complete, as well as several systems that are less powerful, and several theoretical systems that are even more powerful than a universal Turing machine. Related workOne important result from computability theory is that it is impossible in general to determine whether a program written in a Turing-complete language will continue executing forever or will stop within a finite period of time (see halting problem). One method of commonly getting around this is to cause programs to stop executing after a fixed period of time, or to limit the power of flow control instructions. Such systems are strictly not Turing-complete by design. Another curious theorem from computability theory is that there are problems solvable by Turing-complete languages that cannot be solved by languages with finite looping capabilities (i.e. languages that guarantee any program will halt). This result is derived by, for example, Brainerd and Landweber using the PL and PL-{GOTO} languages. ExamplesThe computational systems (algebras, calculi) that are discussed as Turing complete systems are those intended for studying theoretical computer science. They are intended to be as simple as possible, so that it would be easier to understand the limits of computation. Here are a few:
Most programming languages, conventional and unconventional, are Turing-complete. This includes:
The specific language features used to achieve Turing-completeness can be quite different; FORTRAN systems would use loop constructs or possibly even GOTO statements to achieve repetition; Haskell and Prolog, lacking looping almost entirely, would use recursion. Turing-completeness is an abstract statement of capability, rather than a prescription of specific language features used to implement that capability. It is difficult to find examples of non-Turing complete languages, as these languages are very limited (see, however, machines that always halt). Examples include some of the early versions of the pixel shader languages embedded in Direct3D and OpenGL extensions. Another example is a series of mathematical formulae in a spreadsheet with no cycles. While it is possible to perform many interesting operations in such a system, this fails to be Turing-complete as it is impossible to form loops; BASIC languages associated with common spreadsheet programs such as Excel and OpenOffice Calc are however Turing-complete. Another famous example is the category of regular expressions, which are generated by finite automata. A more powerful but still not Turing-complete extension of finite automata is the category of pushdown automata. The untyped lambda calculus is Turing-complete, but many typed lambda calculi, including System F, are not. The value of typed systems is based in their ability to represent most "typical" computer programs while detecting more errors. See also
References
Sites |
Searched sites for "Turing completeness" |
|
No sites found. |
Sorry, no matching site records were found. |
Want your site listed here?
|
||||||||||||
|
Submit
your site |
|
Relevant quality search results and fast easy navigation throughout the
different sections of the site, make Americola.com |