Crypto glossary

Turing Completeness

Definition

Turing completeness refers to the capability of a system or programming language to solve any problem that can be solved by a machine created by mathematician Alan Turing.

  • 2 min read
  • Updated

Turing completeness is a property of a computational system or programming language that indicates it can simulate a Turing machine. 

A Turing machine is a theoretical mathematical model of computation introduced by Alan Turing in the 1930s. 

Being Turing complete means that a system or language can perform any computation that a Turing machine can, given enough time and resources.

A system is considered Turing complete if it can simulate the operations of a Turing machine. 

This implies that it can perform any computation that can be algorithmically described.

Turing completeness requires the ability to perform sequential execution of instructions. 

This includes the ability to execute instructions step-by-step, one after another.

A Turing-complete system should support conditional branching, allowing it to make decisions based on certain conditions. 

This involves using conditional statements like “if” and “else.”

Turing completeness implies the ability to manipulate an infinite tape (in the theoretical sense of a Turing machine). 

In practical terms, this corresponds to the ability to access and manipulate memory, including using variables.

Turing completeness requires the ability to perform looping and recursion, allowing the system to repeat instructions or call functions within itself.

Determining Turing Completeness

1. Demonstrating Universal Computation

To determine Turing completeness, one must demonstrate that the system can simulate a Turing machine. 

This often involves showing that the system can perform basic operations like addition, subtraction, and conditional branching.

2. Expressiveness

The language or system must be expressive enough to represent various computations. 

This involves demonstrating that it can handle the complexity of various algorithms and computations.

3. Programming Constructs

Look for key programming constructs such as variables, conditionals, and loops. 

These constructs contribute to the system’s ability to perform diverse computations.

4. Halting Problem

Turing completeness does not require a system to be able to solve the Halting Problem (determining whether a given program with a specific input will eventually halt or continue indefinitely). 

The Halting Problem is proven to be undecidable in general.

Use Cases

Consider the practical use cases and applications the system or language can support. 

It may be considered Turing complete if it can be used to implement a wide range of algorithms.

Languages like Python, Java, C++, and many others used in practical programming are considered Turing complete because they possess the necessary features to simulate a Turing machine and express a wide range of algorithms and computations. 

The determination of Turing completeness is often based on theoretical analysis and practical demonstration of computational capabilities.

Your next trade takes three taps.

Join 40K+ people on Snapiro.