Turing Completeness

A system, whether a programming language, an abstract machine, or even a set of rules in a game, is called Turing-complete when it is powerful enough to simulate a Turing machine. Because a universal Turing machine can carry out any effective computation, anything that can simulate one can, given enough time and memory, compute anything that is computable in principle.

The idea rests on Alan Turing’s 1936 abstract machine and the universal machine that emulates any other. As the Stanford Encyclopedia of Philosophy entry on the Church-Turing thesis explains, the universal Turing machine stores a description of another machine on its tape as a finite list of instructions, a computer program in modern terms, and then emulates that machine’s behavior. The Church-Turing thesis holds that every effective computation can be carried out by such a machine.

In practice this means that nearly all general-purpose programming languages are equivalent in raw computational power: a C program, a Python program, and a Lisp program can each compute exactly the same set of functions, even though they differ enormously in convenience. Turing completeness is about what is possible to compute, not about how easy or fast it is.

The concept also explains why surprising systems turn out to be Turing-complete. Simple rule sets such as Conway’s Game of Life, and even the recalculation engine of a spreadsheet, can be coaxed into simulating a Turing machine, which means they too can in principle compute anything computable. The flip side, established by the same theory, is that no Turing-complete system can escape the limits Turing identified, such as the undecidability of the halting problem.

Sources

Last verified June 8, 2026