# What is the history of computer science

#### 2.1.1. Brief outline of the history of programming

A graphical and programmable pocket calculator like the TI-85 has been part of the standard equipment of a Saxon high school graduate for a few years. Nowadays almost every second person calls a PC his own. But not everyone knows about the development and history of today's computers.

Our pocket calculators have very little in common with a slide rule like the one my parents used at school and whose origins go back to the 17th century. Even earlier forms of calculating machines such as the abacus or calculating boards, calculating tables or calculating cloths used in antiquity can no longer be associated with the TI-85.
The history of the pocket calculator is the history of computer science, which began much later than that of mathematics.
The beginning of computer science was linked to man's search for a system with which he could process large amounts of data quickly and perform calculations at great speed in a mechanical way1.

#### 2.1.1.1. First mechanical calculating machines and punch card technology

The capabilities of the first real calculating machines, which could independently carry out transfers from one (decimal) place to another, were essentially limited to the calculation of the basic arithmetic operations and had very little to do with programming. In 1623, for example, the astronomer Wilhelm Schickard (1592-1635) constructed a machine that had a six-digit decimal adding unit with decimal transmission, as well as a multiplier unit and could perform all four basic arithmetic operations. However, it went largely unnoticed and was quickly forgotten. For this reason, the French mathematician Blaise Pascal (1623-1662), who almost 20 years later, in 1641, developed a calculating machine with which six-digit numbers could be added, was considered to be the inventor of the first machine of this type. At that time However, the level of precision mechanics was still so low that a reliably working copy of Pascal's machine, called "Pascaline" after its developer, could not be produced.
The German Gottfried Wilhelm Leibniz, who constructed a four-species calculating machine with staggered rollers in 1674, had to struggle with similar difficulties and the hoped-for success of the construction did not materialize at the time.
Even in the 19th century, the technology was not really ready to build the revolutionary machines reliably and economically viable, which was invented by the English mathematics professor Charles Babbage, for example. The idea of ​​his machine was based on the calculation of the differences between numbers and was therefore called "difference machine". This "analytical engine" consisted of five basic components that can still be found in electronic computing systems to this day1:

1. inputto transport numbers into the machine;
2. Storage, in which the numerical material and program instructions required for the invoice could be accommodated;
3. Arithmetic unitto perform arithmetic operations;
4. Tail unitwhich should control the calculation processes using a program
5. output

Babbage provided punch cards for input, which were developed in 1801 by the French Jacquard in the form of wooden plates for the control of looms. These cards should also serve as storage and output. In this point there was also the new thing about Babbag's machine: the idea of ​​programmability, i.e. the control of processes with the help of different programs. Up to now, this essential property of today's computers was not given to any calculating machine and the programs were "built-in". The machines could only be used for a very specific purpose. With the help of punch card technology, new possibilities opened up for the first time. But even Babbage ultimately failed because the machine's precision mechanics were too complicated.
Another important step towards program-controlled computing technology was the "statistics machine", which was invented by Hermann Hollerith in 1890 and used for the 11th American census.
Four years earlier, Hollerith had developed a punch card which, compared to Jacquard's variant, contained significant innovations. Such punch cards were used to control the behavior of machines.

#### 2.1.1.2. Konrad Zuse and the dual number system

Despite all previous attempts, the real computer age did not begin until the 1930s. And it was also a German who made the decisive progress: In 1934 the engineer Konrad Zuse (1910-1995) had the trend-setting idea to use the still relatively unknown dual number system for calculating in mechanical systems instead of the previously used decimal number system . Zuse had recognized that the dual states 0 and 1 could be described with the help of relays, which means as much as on and off. Instead of the much more complicated mechanical constructions that were necessary to fill 10 different positions in the decimal system and where the pioneers of computer science such as Babbage had also failed, attempts were now made to build corresponding electronic calculating machines with the help of relays using the dual number system. In the middle of World War II in 1941, Zuse completed the first functional, program-controlled electromechanical calculating machine himself and went down in the history books of computer science under the name "Relay Calculator" (or Z3). Punched tape served as the input medium for the computer.
Unfortunately, this first relay computer was completely destroyed in a bomb attack on Berlin in 1944. A year later, Zuse presented the successor machine, the Z4, to the world. This computer (Z4), characterized by Zuse as the "Babbage Boolean Type", applied the principle of program control invented by Babbage to Boolean variables.
Further achievements by Konrad Zuse were the introduction of the floating point and the use of the basic logical operations "And", "Or" and "Not".

In the USA at that time (1944) a machine working similar to the Z3 was developed. The "Mark 1", which was still based on the decimal number system, contained another major innovation: Electron tubes known from radio technology were first used as switches, which reduced the required computing time (switching time) to a thousandth in contrast to relays.
The computer with the name ENIAC (Electronic Numerical Integrator and Calculator), first built in 1946, consisted of 18,000 electron tubes and 1,500 relays and was absolutely on a par with the Zuse computers in terms of performance. In contrast to these, the ENIAC used stretch boards for program storage, which were then used in telephone exchanges for manual switching. The 30-ton mainframe computer, which was still very unreliable due to its complexity, turned out to be a special computer that could only be reprogrammed with a great deal of effort.

#### 2.1.1.3. The von Neumann calculator

With the help of electron tubes and relays it was now possible to build memories in which intermediate results of more complex calculations could be stored. This created the prerequisites for the last step on the way to today's computer:
In June 1945 the Hungarian mathematician John von Neumann (1903-1957) joined the project planning group for a new computer. While working on the EDVAC (Electronic Discrete Variable Automatic Computer) he came up with the revolutionary idea of ​​replacing the rigid program control with an internal program control. The program sequence should be coded and stored in the memory of the computer. The program, which consisted of a sequence of individual instructions, contained conditional instructions that allowed forwards and backwards branches.
This principle led to a much faster way of working and program execution of the computer, since the program was read from a faster memory than the punch card. Data and intermediate results could also be stored there and the machine was able to change every program command itself.
This created the prerequisites for today's computer and nothing stood in the way of modern, flexible and sequential data processing. The first computer with a flexible memory program was designed by von-Neumann in 1952 and was named "MANIAC 1".

The computer architecture developed by J. v. Neumann was designed, promised little technical effort and universal application possibilities.
Accordingly, a computer should have the following properties3:

1. It has a memory for program and processing data, a controlling and an information processing unit, as well as facilities for the input and output of data
2. It works fully automatically, i.e. if there are program and processing data in the memory, no operator intervention is necessary other than starting processing
3. Program and processing data are coded in binary, the type of data is not marked. So they cannot be identified without external references. The references are made by address specifications in the commands, with the addresses pointing to memory locations.
4. The computer processes the programs command by command (sequentially) and normally assumes the natural sequence. In exceptional cases, it is possible to jump forwards and backwards in the program, both unconditionally and conditionally, depending on the processing results previously achieved.

The von Neumann architecture was thus the actual origin of programming in today's sense: the program as a link between logical statements stored in memory.

1 Quote from "The fascinating world of computer science, p. 8
2 see "Lectures on the History of Mathematics", p.301

3 see "Taschenbuch der Informatik p.58