The best way to predict the future is to invent it.
While studying civil engineering at the Technical College (Technischen Hochschule) of Berlin Charlottenburg Konrad Zuse stumbled upon a serious problem, during his work with the construction of buildings and roads. This type of construction requires solving huge systems of linear equations, which was very hard to be done by means of a logarithmic rule or even a mechanical calculator at this time. Zuse recalled later:
I was a student in civil engineering in Berlin. Berlin is a nice town and there were many opportunities for a student to spend his time in an agreeable manner, for instance with the nice girls. But instead of that, we had to perform big and awful calculations.
Some time in 1934 the young Kuno (as his friends used to call him) started thinking about computers. After his graduation from the Technical College in 1935, he started as a design engineer at the Henschel Flugzeugwerke (Henschel aircraft factory) in Berlin-Schönefeld, but resigned a year later, deciding to devote himself entirely to the construction of a computer.
In the middle of 1936, Kuno arranged a workshop in the apartment of his parents. He was helped not only by his parents, who allowed him to use the largest room of their apartment as a workshop and gave him some money (although his father was a post office clerk and didn’t have much money), but also by his sister Lieselotte, and several of his fellow-students and friends. Thus he managed to collect several thousand marks for materials, moreover, some of them practically helped him in the workshop. The most innovative was his friend Helmut Schreyer (1912-1984), who played an important role in the construction of Zuse’s computers.
The first computer of Konrad Zuse—V1 (Z1)
In 1936 Zuse finished the logical plan for his first computer, the V1 (V for Versuchsmodell—experimental model). In fact, all the first computers of Zuse were named V (V1 to V4), but after WWII he changed their names to Z1 to Z4, in order to avoid the nasty association with the V1-V4 military rockets. The manufacturing began in the same year and the prototype was ready in 1938 (see the nearby photo), making the Z1 the first relay computer in the world.
Z1 was a machine of about 1000 kg weight, which consisted of some 20000 parts. It was a programmable computer, based on binary floating point numbers and a binary switching system. Z1 consisted completely of thin metal sheets, which Kuno and his friends produced using a jigsaw. The only electrical unit was an electrical engine with a power of 1kW, which was used to provide a clock frequency of one Hertz (one cycle per second), actually, it had also a crank for manually cycling the machine. Z1 consisted of six basic units: Control unit; Arithmetical unit; Input/Output; Memory; Memory selector; and Tape reader (see the lower drawing).
The punch tape and punch tape reader are used for programming Z1. The control unit supervised the whole machine and the execution of the instructions. The arithmetic unit (with two registers—R1 and R2) was an adder, and all the operations were internally reduced to additions or subtractions. The memory, which consisted of 64 words, each containing 22 bits, was formed from three blocks. The first block contained 64 words for the exponents and signs (8 bits for each word). The other two blocks each contained 32 words for the mantissa (14 bits for each word). The selection unit interpreted the address for the memory, managed by the control unit. The input device was a keyboard, numbers were presented to the machine in a decimal form with an exponent, then they were converted to binary normalized floating-point representation and transferred to the memory. Similarly, the output device converted the binary floating point number in Register R1 into a decimal number with an exponent and showed them on an annunciator.
The Z1’s programs (Zuse called them Rechenplans—Calculating Plans) were stored on punch tapes by means of an 8-bit code. The instruction set of the Z1 consisted of eight instructions as follows:
1. Two instructions for input/output:
• Lu—to call the input device for decimal numbers
• Ld—to call the output device for decimal numbers
2. Two instructions for reading/writing from/to memory:
• Pr z—Read the contents of the memory cell z into Registers R1 or R2
• Ps z—Write the contents of Register R1 to the memory cell z
3. Four arithmetical instructions:
• Ls1—Add the two floating-point numbers in the Registers R1 and R2
• Ls2—Subtract the two floating-point numbers in the Registers R1 and R2
• Lm—Multiply the two floating-point numbers in the Registers R1 and R2
• Li—Divide the two floating point numbers in the Registers R1 and R2
Multiplication on Z1 needed 10 cycles (about 10 seconds), and addition needed 5 cycles (about 5 seconds).
The first reliable model—Z2
When in 1936 Konrad invited his friend Helmut Schreyer to come and see his machine, Helmut came, saw his strange plates, and expressed spontaneously: “You have to do this with tubes.” The first reaction of Kuno was negative—”This is another one of the mad schnapsideas (drink ideas) of my friend!”. With tubes can be built radio equipment, but calculating machines? Almost at the same time, the same idea came to the mind of the American physicist John Atanasoff, and he became the first man to build an electronic computer.
Zuse and Schreyer continued to work together on the mechanical models, but Schreyer’s idea was not dead. Schreyer wrote his doctoral thesis on this topic at the Institute for Research of the Technical University Berlin Charlottenburg and created several logical circuits with tubes. In 1938 Zuse and Schreyer demonstrated the electronic circuits to some German scientists and even exposed their idea of building an electronic computer, but when they mentioned that such a device would require some 2000 tubes and several thousand glow lamps, this was categorized as a “fantasy”. The largest electronic devices of this time consisted of several hundred tubes. Later on, Schreyer will try again in vain to interest the authorities in their work, proposing to the army to build an electronic computer for the airforce from about 2000 tubes, but when he explained that 2 years would be enough to manufacture the machine, the reaction was “We will win the war long before your computer will be ready, why bother?”.
Zuse was unsatisfied with the reliability of the binary switching metal sheets used in the Z1, especially in the arithmetical unit. He was acquainted with relays, used in telecommunications, but indeed Schreyer was the one, who had a lot of experience with the relays and switching schemes as a telecommunications specialist. The friends made some approximate considerations, but they showed, that a relays computer will require several thousands of relays, so a room full of relay cabinets seemed unacceptable to them. Besides that, the relays were too expensive for the scarce funding of Zuse. That’s why he decided to construct his second computer, Z2, with arithmetic and control units made by relays, but to keep the mechanical memory of Z1 (this will also require less space). He managed to find 800 old relays from phone companies and with the help of his friends fixed them to be suitable for his purpose. These old relays will become a reason for a lot of problems with reliability later on.
Trying to find funding, in 1937 Zuse got into contact with the former manufacturer of mechanical calculators—Kurt Pannke. The first contact was a failure, Dr. Pannke said to him: “…at the field of computing machines virtually everything, until the last possible approaches and sophisticated devices, has already been invented. There is hardly anything left to invent.” Nevertheless, Dr. Pannke agreed to visit the workshop of Zuse and was so impressed by his work, that decided to grant him seven thousand Reichsmark, which made it possible for the work to continue.
The manufacturing of Z2 began in 1938 and the prototype was ready the next year. Z2 was quite similar to Z1, with the following differences:
1. The Z2’s arithmetic unit consisted of a 16-bit fixed-point engine.
2. Schreyer proposed to use a 36-mm film tape, instead of the paper tape of Z1.
3. The memory is smaller—16 cells with 16 bits each.
4. The Z2 is faster than the Z1—3 Hz clock rate.
The instruction set of the Z2 consisted of the same eight instructions as Z1. Z2 worked reliably enough for arithmetic calculations. So Zuse was convinced his next computer, Z3, to be built completely out of relays.
As early as 1937 Zuse had already devised the idea of a full “von Neumann” type machine, despite the fact, that his first relay computers were not “von Neumann” machines (they didn’t have the “stored-program” ability). Zuse was aware of this fault, as well as of another important one—the lack of conditional branch instructions, but can you try to imagine a computer with 64-word memory to be a “stored-program” machine? Can you try to imagine a computer, with a processor, built from metal plates, to have internal conditional branch instructions? I cannot! It was too early and Zuse didn’t have the needed resources, to make such a machine.
At the same time, Zuse developed the theoretical base of his computers. He was acquainted with the binary digital system of Leibniz (so-called Dyadik), but he didn’t know anything about George Boole and his algebra. He had to study not only Boole, but also the mathematical logic of Hilbert, Frege, Schröder, and other logicians. Unfortunately, he missed Babbage and his notation, which could make his research much easier. Finally, he developed his own system and called the notation “Conditional Combinatoric” (Bedingungskombinatorik).
The first workable programmable computer in the world—Z3
In 1940 Z2 was successfully demonstrated to the Deutschen Versuchsanstalt für Luftfahrt and Zuse obtained partial funding for the development of his third computer, Z3, which he began to build in 1939. Z3 (see the lower photo) was ready in the spring of 1941, and in May 1941, it was presented to scientists in Berlin. Z3 was built completely out of relays (600 for the arithmetic unit, 1400 for the memory, and 400 for the control unit). In all other aspects, it was similar to Z1 and Z2: it used a binary numeral system and floating-point numbers, a floating-point arithmetic unit with two 22-bit registers, the storage capacity of 64 words with 22-bit word length, control via 8-channel tape (i.e., a command consisted of 8 bits). The input was via a special keyboard. Output by displaying the results on the light stripe including the location of the decimal commas. It was a little bit faster—5,33 Hz. The principle of work of the machine, however, was improved, introducing some parallelism: a 22-bit word of data could be moved from the memory to the Register R1 and vice versa in one step (clock cycle). The same holds true for the arithmetic unit, where, amongst other things, parallel adders were used.
The arithmetic unit of the Z3 was Zuse’s masterpiece. The instruction set of the Z3 consisted of nine instructions, the same eight instructions of Z1 and Z2, and one additional—Lw (square root). Division and square root needed 20 cycles (about four seconds), multiplication—16 cycles (about 3 seconds), and addition and subtraction—less than a second. Actually, internally all the arithmetic operations are reduced to addition or subtraction (subtraction is an addition of the complement of one number and the number). The multiplication algorithm is like the one used for decimal multiplication by hand. That is, it is based on repeated additions of the multiplicator according to the individual digits of the multiplicand. The division algorithm is similar to that for multiplication, except that repeated subtraction is used. The square root was calculated by a division. The Z3 included also the ability to perform arithmetic exception handling. Zuse even provided the possibility of micro-sequencing and pipelining of the instructions, and a carry-look-ahead circuit for the addition operation, in order to minimize the execution time (later on Zuse will improve this mechanism, designing a program look-ahead mechanism, i.e. program can read two instructions in advance, and test them to see whether memory instructions can be performed ahead of time).
The S1 and S2 Computers
After the development of Z3, Zuse received an order from his first employer—Henschel aircraft company for the development of a specialized computer for measuring the surface of the wings of airplanes. The machine S1 was ready in 1942 and contained approximately 600 relays and had hardware-wired programs. The company ordered another machine, which was ready in 1944. S2 was the successor of the S1 and consisted of approximately 800 relays and about 100 dial gages in order to measure the surface of the wings. The S2 can be regarded as the first process computer in the world.
The Z4 Computer
In 1942 Zuse started the development of his next computer—the Z4. The goal of the Z4 was to build the prototype for a machine, that was intended to be produced in the thousands. The lack of materials, however, and a tragic situation in Germany (it was wartime, and Berlin was attacked almost every day by bombers), made this task almost impossible. In March 1945 Zuse eventually fled from Berlin with his pregnant wife Gisela and the semi-finished Z4 computer. He arrived at Hinterstein, Bavaria, and hid the computer in a barn. He desperately wanted to resume work on the Z4, but his first problem was to survive the years after the war. In order to get some food, he made woodcuts and sold them to the farmers and the American troops. The Z4 was reassembled as late as 1948. The next year Zuse was contacted by Prof. Eduard Stiefel from ETH-Zürich, who inspected the machine and found it suitable for scientific calculations. Despite the little bit old-fashioned technology of Z4 (at the same time in the USA are developed electronic computers), Stiefel was impressed by the simplicity of programming and the powerful arithmetic unit with its exception handling capability, that’s why he decided to buy the Z4. Encouraged by this, Zuse founded his own company (Zuse KG) and started to build an improved version of Z4 for EHT, adding a conditional branch capability, instructions for printing the results on a Mercedes typewriter or a punch tape, storing numbers on the punched tape in order to transfer them into the Z4’s memory, writing results on a punch tape and others. Restoring the Z4 cost the Zuse KG about 60000 DM. The ETH paid an amount of around 100000 DM. With this money, it was possible to find the Zuse KG and restore the Z4. (It is worth mentioning that the average income at this time was about 180 DM per month.) The Z4 was a great success for both the ETH and the Zuse KG.
The Z4 in Zürich was put into action in September 1950 and proved to be reliable. To the surprise of all, the memory of Z4, consisting of thousands of metal sheets, screws, and pins, was the most reliable feature of the machine. The Z4 worked very reliably and also worked during the night without supervision, something unbelievable at this time. The improved Z4 consisted of about ten relay cupboards containing 2200 standard relays, plus 21 stepwise relays for the micro-sequencer. The Z4’s memory was a mechanical one with 64 words, each containing 32 bits. The structure of the mechanical memory was similar to the memory of the Z1 (and Z2 and Z3). However, while the Z1 had a word length of 22 bits, the word length of the Z4 was extended to 32 bits. Each word was directly addressable by the instructions on the punched tape.
The Z4 made use of a unit called a Planfertigungsteil (program construction unit), which was used to produce punch tapes, containing instructions for the Z4 in a very easy way. For this reason, it was possible to learn the programming of the Z4 in as little as three hours. The Z4 had a large instruction set in order to calculate complicated scientific programs. The arithmetic processor was a powerful binary floating processor. The set of instructions is as follows:
1. Instructions for Input: <-, At1, etc.: These allow numbers to be read from the punched tape.
2. Instructions for Output: ->, D, L, etc.: These instructions cause binary numbers to be converted into their decimal equivalents and the results to be displayed with lamps, on the MERCEDES typewriter as floating or fixed point numbers, or on the punch tape.
3. Instruction for reading from memory: A n. For example A 17. This reads the contents of memory cell 17 into the Register R1. If Register R1 is occupied, then the contents are loaded into Register R2.
4. Instruction for writing to memory: S n. For example S 18. This writes the contents of Register R1 into memory cell 18.
5. Dyadic operations: +, -, x, /, MAX, and MIN.
6. Monadic operations: x2, SQR(x), 1/x, | x | , sign(x), x*1/2, x*2, x*(-1), x*10, x*3, x*1/3, x*1/5, x*1/7, x*Pi, x*1/Pi.
7. Instructions for comparison: x = 0, x >= 0, | x | = infinity test the value in Register R1 and set Register R1 to +1 if the condition is fulfilled, if not, then the contents of Register R1 are set to –1.
8. A conditional branch instruction: SPR. The instruction SPR skips the punched tape to the instruction ST, if Register R1 contains +1 (if Register R1 contains –1 then there is no impact).
9. Instructions for switching the punch tape readers (the Z4 had two punch tape readers).
Like the Z3, the Z4 supported powerful arithmetic exception handling. The computing times were: addition and memory access, half a second; multiplication, 3 seconds; division and square root, 6 seconds; overall performance, 2000 instructions, or 1000 arithmetic operations per hour.
Zuse KG continued to manufacture relays computers—Z5 (1952), Z7, and Z11 (1954) drawing computer Graphomat Z64 (1957). As late as 1957 Zuse decided to change the relay technology with electronics. The Z22 was ready in 1958 and was an electronic computer (based on vacuum tubes), it was also the first “stored-program” computer of Zuse. In 1961 the Zuse KG launched the Z23, which was a powerful transistor computer with almost the same logic as the Z22. The next computer of Zuse was the Z31, which contained a decimal arithmetic unit, and it was specially designed with banking and commercial applications in mind. In 1964 was launched the Z25 computer, which was a small and cheap machine that would be suitable for many different applications. The last computer of Zuse was Z43 (1964), a modern transistor computer with TTL logic. In 1958, Zuse designed a parallel computer, which was never built. He called it the Feldrechenmaschine (field calculation machine) consisting of 50 processors.
Konrad Zuse was a genius as an engineer, but not so good as an entrepreneur. Since the beginning of the 1960s Zuse KG got deeper and deeper into financial difficulties and in 1964 was bought by the steel company Rheinstahl, but continued to manufacture computers till 1969, when was bought by Siemens AG. The Zuse KG sold about 250 computers from 1949 to 1969 with a value of some 100 Million DM.
Plankalkül—the world’s first complete high-level language
From 1942-1946 (at the same time as he was developing the Z4 computer), Zuse was also developing ideas as to how his machines could be programmed in a very powerful way (that is, more powerful than arithmetic calculations only). In addition to pure statements for number calculations, Zuse also used rules of mathematical logic. On the one hand, he used the powerful predicate logic Boolean algebra as language constructs. On the other hand, he developed a mechanism to define powerful data structures, commencing with the simple bit (binary digit) and working up to complicated hierarchical structures. In order to demonstrate that the Plankalkül language could be used to solve scientific and engineering problems, Konrad Zuse wrote dozens of example programs. In his notes, one can find the sorting of lists, search strategies, relations between pairs of lists, etc. He even used more than 60 pages to describe programs for chess playing and predicted, that in some 50 years, a computer could beat the human world chess champion. It proved to be an amazingly true foresight, as in 1997, an IBM computer beat the chess world champion Kasparov.
Zuse used an unusual technique for the statements in Plankalkül. Each data item was denoted with V (variable), C (constant), Z (intermediate result), or R (result), an integer number to mark them, and a powerful notation was used to denote the data structure of the variable. Zuse used the word plan for the program. The highlights of Plankalkül are:
1. Data types: floating point, fixed point, complex numbers; arrays; records; hierarchical data structures; and list of pairs.
2. Assignment operation, for example: V1 + V2 => R1.
3. Conditional statement, for example: V1 = V2 => R1. This means: Compare the variables V1 and V2: If they are identical then assign the value true to R1, otherwise assign the value false. Such operations could also be applied to complicated data structures.
4. Possibility for defining sub-programs.
5. Possibility for defining repetition of statements (loops).
6. Logical operations (predicate logic and Boolean algebra).
7. Operations on lists and pairs of lists.
8. Arithmetic exception handling.
Biography of Konrad Zuse
Konrad Zuse was born on 22 June 1910, in Berlin (Wilmersdorf), the capital of Germany, in the family of a Prussian postal officer—Emil Wilhelm Albert Zuse (26.04.1873-14.05.1946) and Maria (Crohn) Zuse (10.01.1882-02.07.1957). Konrad had a sister, two years older Lieselotte (1908-1953).
In 1912, the Zuse family left for Braunsberg, a sleepy small town in east Prussia (now Braniewo in Poland), where Emil Zuse was appointed a postal clerk. From his early childhood, Konrad started to demonstrate a huge talent, not in mathematics, or engineering, but in painting (look below at the fabulous chalk drawing nearby, made by Zuse in his school time).
Konrad went too young to school and enrolled in the humanistic Gymnasium Hosianum in Braunsberg. After his family moved to Hoyerswerda (Hoyerswerda is a town in the German Bundesland of Saxony), he passed his Abitur (abitur is the word commonly used in Germany for the final exams young adults take at the end of their secondary education) at Reform-Real-Gymnasium in Hoyerswerda. After graduation, the young Konrad falls into a state of uncertainty, about what to study later—engineering or painting. The film Metropolis by Fritz Lang from 1927 impressed pretty much Konrad. He dreamed of designing and building a giant and impressive futuristic city like Metropolis and even started to draw some projects. Finally, he decided to study civil engineering at the Technical College (Technischen Hochschule) in Berlin-Charlottenburg.
During his studies, he worked also as a bricklayer and bridge builder. During this time the traffic lights were introduced into Berlin, causing total chaos in the traffic. Zuse was one of the first people, who tried to design something like a “green wave”, but was unsuccessful. He was also very interested in the field of photography, and designed an automated system for the development of band negatives, using punch cards as accompanying maps for control purposes. Later on, he devised a special system for film projections, the so-called Elliptisches Kino.
The next major project of the young dreamer was the conquest of space. He dreamed of building bases on the moons of the outer planets of the Solar System. In these bases will be built a fleet of rockets, each with a hundred or two hundred people passengers, capable of flying with a speed one-thousandth the speed of light, so as to reach the nearest fixed star for a thousand years.
The future city Metropolis, the automatic photo lab, the elliptical cinema, the space project—all these are only a small part of the technical ideas, preparing the invention of the computer. After graduation from Technischen Hochschule in 1935, he worked for some time in the German branch of Ford Motor Co., then started as a design engineer at the Henschel Flugzeugwerke (Henschel aircraft factory) in Berlin-Schönefeld, but resigned a year later, deciding to devote himself entirely to the construction of a computer. From 1935 to 1964 Zuse was almost entirely devoted to the development of the first relay computer in the world, the first workable programmable computer in the world, the first high-level computer language in the world, etc.
In January 1945 Konrad Zuse married one of his employees—Gisela Ruth Brandes (1919-2013). On 17 November 1945 was born their first son—Horst, who will follow his eminent father and will get a diploma degree in electrical engineering and a Ph.D. degree in computer science. Later on were born Monika (1947-1988), Ernst Friedrich (1950-1979), Hannelore Birgit (1957) and Klaus-Peter (1961).
After 1964, the Zuse KG was no longer owned and controlled by Konrad Zuse. It was a heavy blow for Zuse to lose his company, but the active debts were too high. In 1967 he received another blow because the German patent court rejected his patent applications and Zuse lost his 26-year fight about the invention of the Z3 with all its new features (see Zuse’s first patent application from 1941).
But in the 1960s the retired Zuse was still a man, full of energy and ideas. He started to write an autobiography (published in 1970), made a lot of beautiful oil paintings (see the nearby image), reconstructed his first computer (Z1), etc. In 1965, he was given the Werner von Siemens Award in Germany, which is the most prestigious technical award in Germany. In 1965 Konrad Zuse received the Harry Goode Memorial Award together with George Stibitz in Las Vegas.
In 1992 Zuse started his last project—the Helix-Tower (see the nearby image), a variable-height tower, for catching the wind in order to produce energy in an easier way, built from uniformly shaped and repeatable elements. The propeller and wind generator had to be mounted on the top of the tower. Zuse used a very elegant mechanical construction and immediately received a patent for this in 1993. The height of the tower could be modified by adding or subtracting building blocks.
Konrad Zuse must be credited (alone or with other inventors) for the following pioneering achievements in computer science:
1. The use of the binary number system for numbers and circuits.
2. The use of floating point numbers, along with the algorithms for the translation between binary and decimal and vice versa.
3. The carry look-ahead circuit for the addition operation and program look-ahead (the program is read two instructions in advance, and it is tested to see whether memory instructions can be performed ahead of time).
4. The world’s first complete high-level language (Plankalkül).
In 1969 Zuse wrote a very interesting book on automata theory— Rechnender Raum (Calculating Space), in which he proposed that all processes in the universe are computational. This view is known today as the simulation hypothesis, digital philosophy, digital physics, or pan-computationalism. Zuse proposed that the universe is being computed by some sort of cellular automaton or other discrete computing machinery, challenging the long-held view that some physical laws are continuous by nature. He focused on cellular automata as a possible substrate of computation and pointed out that the classical notions of entropy and its growth do not make sense in deterministically computed universes.
The remarkable man and inventor Konrad Zuse died from a heart attack on 18 December 1995, in Hünfeld, Germany.