History of Programming

The universal machine

Also: Turing machine, stored-program computer

Turing's 1936 proof that a single machine, suitably programmed, can compute anything any machine can.

In "On Computable Numbers" (1936), Alan Turing introduced an abstract device — a head reading and writing symbols on an infinite tape according to a table of rules — to pin down exactly what computable means. Then he proved something astonishing: there is a universal machine that, given a description of any other machine on its tape, can imitate it perfectly.

This is the conceptual seed of the modern computer. It means a single piece of hardware needn't be built for one task; it can become any machine by reading a program. Software exists because of this idea. The boundary between machine and data dissolves — a theme that echoes through code as data and the metacircular evaluator.

Turing also drew the limits in the same paper: some things (the halting problem) no machine can compute, no matter how clever. The universal machine and its boundaries arrived together, fully formed, before a single electronic computer existed.