Turing completeness refers to a programming language’s ability to perform the functions of a Turing machine, a basic mechanical computer. Alan Turing developed this concept and believed that computers simply execute algorithms. Most programming languages and computers today are Turing-complete, but some lack the necessary storage space. Turing completeness should not be confused with the Turing test, which tests a computer’s ability to converse in natural language.
Turing completeness is when a programming language is capable of performing the functions of a Turing machine. This is a concept for a basic mechanical computer, sometimes described as the simplest machine that can be considered a computer. Virtually all programming languages in use today, and in theory the computers that run them, are Turing-complete.
The concept of Turing completeness comes from Alan Turing, a British computer scientist whose work included deciphering coded messages during World War II. Among his works on computing was the development of a philosophy about what a computer could actually do. This included the concept that computers simply work by executing algorithms. That is, they follow a fixed set of rules for processing data and, in turn, solving problems. This means that a computer doesn’t “think” or make decisions like a person does.
To illustrate the concept, Turing described a hypothetical machine which he called the “a-machine”, with the “a” standing for automatic; others later called it the Turing machine. The machine processed a reel of tape that could move forward or backward and contained a line of symbols. At any moment the machine could process a symbol and, if necessary, modify it. For purposes of the concept, the reel of tape could be infinitely long, meaning that computer memory was not inherently limited. This is an analogy for the idea that once a computer has a set of instructions to follow, the amount of data it can apply those instructions to is subject only to physical limits.
Ironically, most computers today lack Turing completeness. This is because they have limitations on available storage space and therefore the data they can process. They also have physical limitations, especially that they will wear off eventually. It is actually the programming language that has Turing completeness. For this reason, a computer running such a program is not a Turing computer, but it can be used to simulate one.
Turing completeness should not be confused with the Turing test. This was an experiment designed by Turing to see if computers can converse in natural language. The principle of the test is that if a human cannot distinguish between a text-only conversation with the computer and another human, the computer passes the test. While some computers have passed the test when the range of conversation topics is limited, none have done so in unrestricted conversation.
Protect your devices with Threat Protection by NordVPN