On May 12, 1941 Z3, the world’s first fully functional and programmable digital computer was unveiled by its designer, the German pioneering computer scientist Konrad Zuse (22 June 1910 – 18 December 1995).

Zuse began to develop Z3 in 1935 and completed it in 1941. But, because of World War II, it was not considered “vital” and was never put into practical use.

Thanks to Z3 and its predecessors, Z1, and Z2, Konrad Zuse has often been suggested as the inventor of the computer.

Today’s (May 12) story of what happened this day in Science, Technology, Astronomy, and Space Exploration history.

## Z3: the world’s first fully functional, programmable digital computer

Between 1936 and 1945, Konrad Zuse built the first computing machines: Z1, Z2, Z3, and Z4.

Completed in 1938, The Z1 was wholly mechanical and only worked for a few minutes at a time at most.

The Z2 was completed in 1940. It was an improvement on the Z1, which used the same mechanical memory. In the Z2, he replaced the arithmetic and control logic with 600 electrical relay circuits, weighing over 600 pounds (272 kg).

The Z2 was presented to an audience of the *Deutsche Versuchsanstalt für Luftfahrt* (“German Laboratory for Aviation”) in 1940 in Berlin-Adlershof. It was actually a failure-prone machine that rarely worked correctly. But, this time Zuse was lucky and the machine worked as expected. The success of Z2 convinced the DVL to partly finance the next design, the Z3, which would become a highly secret project of the German government.

Improving on the basic Z2 machine, Zuse completed the Z3 in 1941. It was faster and more reliable than previous designs, the Z1, and Z2.

The Z3 was built with 2,000 relays (a relay is an electrically operated electromechanical switch, logic gates can be built using relays), implementing a 22-bit word length that operated at a clock frequency of about 5-10 Hz. The machine’s floating point was improved over that of the Z1 in that it implemented exception handling. The exceptional values plus infinity, minus infinity, and undefined could be generated and passed through operations.

On May 12, 1941, the Z3 was presented to an audience of scientists in Berlin. Zuse asked the German government for funding to replace the electromechanical relays with fully electronic switches which are faster, but funding was denied as the machine was “not war-important” in the eyes of authorities.

Zuse then moved on to the Z4 design which was completed days before World War II ended. The original Z3 was destroyed on December 21, 1943, during an Allied bombardment of Berlin. A fully functioning replica was built in the 1960s by Zuse’s company, Zuse KG, and is on permanent display in the Deutsches Museum in Munich.

## Z3 as a Universal Turing machine

In 1998, Raúl Rojas González (born in 1955 in Mexico City), a professor of Computer Science and Mathematics and a renowned specialist in artificial neural networks has shown that although it lacked the conditional branch operation, Z3 was *Turing complete*, so it was a *Universal Turing Machine*.

González reconstructed the Z3 computer and showed how to implement a Universal Turing machine on the Z3.

## What is Turing completeness?

English mathematician and computer scientist Alan Turing (23 June 1912 – 7 June 1954) created a machine that can take a program, run that program, and show some results.

Up until 1936, all computers of any kind were for a fixed purpose, like a calculator. You had to create different machines for different programs. Then, as a by-product of his investigations into formal logic, Alan Turing devised a machine that could be reprogrammable to perform any algorithm – a “Universal Turing Machine” that can take any program and run it.

### What is a Universal Turing Machine?

A Universal Turing Machine (also known as the Universal Computing Machine) is a *programmable* machine. You can run any type of program on it without changing its hardware.

For example, you can run any type of program on your computer. Browser, text editor, games, etc. You don’t change your machine’s hardware in order to run a different program. Your computer can be described as a Universal Turing Machine (if we ignore the fact that it has finite memory/storage).

So, a modern computer is Turing complete, but, generally, this term is used with the exception of infinite storage.

Programming languages are also similar (although virtual): they take programs (code) and run them. A programing language can be called “Turing complete”, if it can run any program (irrespective of the language) that a Turing machine can run given enough time and memory.

In fact, no system is ever Turing-complete in practice, because no realizable system has infinite memory and storage. If the limitation of finite memory is ignored, virtually all programming languages are Turing-complete.

## Sources

- Z3 (computer) on Wikipedia
- Konrad Zuse on Wikipedia
- Turing completeness on Wikipedia
- Turing machine on Wikipedia
- Universal Turing machine on Wikipedia
- What is Turing Complete? on Stack Overflow
- The Universal Computing Machine on the Urban Engine website
- “Reconstruction of Konrad Zuse’s Z3 Computer” on Raúl Rojas González’s blog
- Konrad Zuse internet archive zuse.zib.de