• Categories

  • Archives

Who Made the First Computer?

This question is not easy to answer, because what counts as the achievement makes a big difference.

  • Who first had the crucial ideas?
  • Who first published the crucial ideas?
  • Who first designed a computer based on these ideas?
  • Who first made it work well enough to deomstrate the principles?
  • Who first made it work well enough to be useful?

Then there are questions of what counts a computer.

  • Is a calculator a computer?
  • Is a programmable calculator a computer?
  • Do analogue computers count?
  • Does it have to be digital?
  • Does it have to be electronic?

Nor must it be forgotten that even the most outstanding individual starts with the vast and intricate cultural edifice erected by his predecessors. Those who can be named as his intellectual predecessors, are just the named visible peaks of large mountains of anonymous contributions.

Computers are now as ubiquitous as electric motors. Apart from my desk top machine with its windows and mouse, I know there’s one in my watch, calculator, washing machine, camera, TV remote, and so on. The computer in my watch, however, in not “really” a computer any longer, because it has been turned into a fixed special purpose device. I can’t program it, nor can I add programs to it. What are the essential features which a proper computer must have? These are usually summed up in the phrase general purpose programmable computer.

The Generality of the General Purpose Programmable Computer

It is remarkable that there is such a thing as the general purpose computer, a piece of hardware with a repertory of basic modular capabilities which can be programmed to do anything computable. It is by no means obvious that this should be possible. And even if it were theoretically possible, it is by no means obvious that it would be feasible. For example, special purpose applications, such as matrix algebra or language translation, might require for practical speed and economy to have their own special purpose computer hardware.

The surprising fact is that not only is a general purpose computer both possible and practical, but it is astonishingly simple, requiring no more than a handful of basic logical and control operations. Because it helps speed and simplifies programming, in the modern desk top computer this basic handful of instructions is usually extended to contain packaged mathematical, memory management, and image bit map functions, to name a few, but these are just go-faster goodies. They are not essential, because they can be constructed from more primitive instructions. In practice the basic instruction set of today’s computer processors, into which everything they can do is eventually translated, is somewhere between ten and a few hundred, the extra instructions being convenient packaged functions which could have been done more laboriously with simpler instructions.

Alan Turing was the genius who proved that the general purpose computer was possible and simple in 1937, although the hopeful suspicion that something like this might be the case had been held by many earlier thinkers, such as Liebniz.

The Programmability of the General Purpose Programmable Computer

What makes the general purpose computer general is that it can be programmed. Theoretically it can be programmed to do anything computable. In practice some things, like looking far ahead to all relevant ends of a game of chess to work out out the best first move, require an impossibly large computer, in the sense that our universe is not big enough to contain it. Other things, like cracking someone’s PGP encrypted message, require an inconveniently large and expensive computer. Some things, such as beating the world Go champion, while theoretically programmable, we haven’t worked out how to do yet. And finally, exactly where the boundaries between the computable and the non-computable lie, and whether more complicated things than computers (perhaps brains?) can do non-computable things, and how important this is, are all a matter of current debate.

A crucial aspect of general purpose programmability is that it must be possible to write and install large complex programs. In the early days of mainframe computers a program of several thousand bytes was enormous. Programs today are routinely hundreds and sometimes thousands of times larger than this. What makes that possible is the existence of software tools, programs which help you to write programs. And what makes software tools possible is the fact that the input data to a program can be another program, i.e., programs can read and write programs. That kind of very powerful recursive generality is made possible by a particular feature of computer architecture: storing the computer program in the same way as the data. This crucial feature is usually abbreviated to the phrase stored program.

In the early days when computer memory was small and expensive and software tools didn’t exist there was another important aspect provided by the stored program — random access to program code. This makes possible program branching, conditional jumps, subroutines, recursion, iteration, all of which are important features of structured programming. It also makes possible the control of one program by another, i.e., the concept of an operating systems and user programs. Turing’s concept of what we now call the Turing Machine exploited these ideas. However, when memory was limited to a few dozen words it was impractical to waste valuable memory on storing program code, so this was held in some other form, sometimes in physical connections, such as a plugboard, sometimes on paper tape. Such machines are therefore not stored program computers. However, in some cases the need for random access of program code was recognised, because it enabled these useful extra features of programmability such as iteration and branching, and so it was implemented by recirculating tape loops, as in the case of Colossus, where considerable expense and ingenuity was spent in making the tapes run at incredibly high speed. So although not strictly stored program computers, it can be argued that such machines recognised the importance of the concept, and found a way of implementing it within the technological constraints of the time without using the very expensive data memories of the time. And of course, a program which was held on paper tape could be output on paper tape by another program, so that software tools were also possible.

What we now think of as the computer revolution, cyberspace and all the rest of it, is impossible without this crucial feature of the stored program. Many of the early devices which are often claimed to be computers, such as ENIAC, definitely lacked this crucial element of the architecture. The mathematician John von Neumann, having joined the ENIAC team, published a paper describing the improved EDVAC architecture, and incorporating the crucial stored-program facility. For that reason the architecture of the modern computer is often called the “von Neumann architecture”.

When criticised by Mauchly, Von Neumann later acknowledged that he had failed to acknowledge the contributions of Eckert and Mauchly to the design ideas in this paper, and later published an amended version acknowledging them. However, in his 1937 paper, which von Neumann was familiar with, Turing had effectively described this stored-program idea as an essential feature of his Universal Turing machine, an idealised abstract general purpose computer. Von Neumann neglected to mention Turing in either version of his paper. And Zuse in Germany in 1936 made clear reference to the idea (which for practical reasons he did not propose to implement) in a computer patent application which the bemused patent authorities refused. It should be borne in mind, however, as mentioned above, that in the early days, when a single byte of memory was large and expensive, the idea was a rather impractical luxury. So it is arguable that machines which recognised the importance of the idea, and in effect implemented the stored program in random access backing store, such as Colossus’s high speed tape loops, should be counted as embodying the stored program design feature.

However close in other ways it might be to a modern computer, there is no way that a computer-like machine which lacked this stored program feature could be extended so that it could behave like a modern computer, able to develop and run systems of complex layered hierarchical structure. For that reason ENIAC, essentially a calculator which could be configured to run algorithms, is not a candidate for being the first computer. ENIAC was a precursor of the modern computer. In fact in its conceptual architecture the electronic valve (tube) based ENIAC was essentially the same as Babbage’s clockwork Analytical Engine of the 1830s.

[The Government eventually closed down funding for the construction of Babbage’s Analytical Engine before it was finished, on the grounds that either it wouldn’t work, or else that Babbage wasn’t going to be able to get it to work. Since then there has been debate about whether the design was feasible, and if so, whether the Victorian technology of the time was up to the job of making it. The Science Museum (Kensington, UK) has answered both those questions positively by building the arithmetic mill of the Analytical Engine according to Babbage’s design, and not using any methods not available to Babbage. It works very well.]

The first description of a general purpose programmable computer

There is no doubt that Turing was the first to publish this architecture, by way of his 1937 paper on “Computable Numbers” which proved the existence of an abstract general purpose computer (now known as the Universal Turing Machine). Although Zuse mentions the idea in his 1936 patent application, it is clear that Turing had a much better appreciation of the theoretical importance of the idea. When considering whether or not some kind of device or formal system has the power of the general purpose computer, mathematicians and computer scientists now use the term Turing-equivalent as shorthand for this capability.

The first implementation of a general purpose programmable computer

Who first built a machine with these essential architectural features? The second World War messed up the chronology a bit, concealing some developments, and postponing others. Should we count as the first machine one which didn’t work properly for an inessential technical reason? Do we take the date of completion of the design, or the date when it worked properly? Should we rule out working prototypes in the laboratory and insist on the first manufactured computer that could be bought? Given the many competing claims I shall briefly consider most of the candidates.

Atanasoff’s ABC?

During 1937-42 Atanasoff designed, and with aid of his student Berry, built the ABC (Atanasoff Berry Computer) at Iowa State College (now University). Mauchly spent many days with Atanasoff in 1940 studying this machine. Essentially a powerful configurable calculator, it was in some aspects of design more advanced technically than Mauchly’s ENIAC, but (like ENIAC) lacked the crucial stored program concept. This was the first computer to use electronic valves (tubes) to perform arithmetic. Atanasoff stopped developing this with the advent of war, and never returned to it.

Flower’s Colossus?

In 1943 Flowers in Bletchley Park built the first Colossus machine, a programmable computer specially designed to crack the German Enigma military cypher machines. It was built in the novel electronic valve technology which had been brought to the Bletchley code-breaking effort by Flowers from the GPO. Too specialised really to deserve the title of a “general purpose computer”, it nevertheless contained all the elements of the modern general purpose computer except the crucial stored program in strict literal terms, although it is arguable that its high speed tape loops were a recognition and implementation of the idea in random access backing store. British Government secrecy about code-breaking kept this and subsequent work very little known outside those directly connected with British computer design until recently. At the end of the war the Bletchley Colossus machines were carefully smashed up into small pieces.

Britain took over the rights to the German Enigma cypher machines as spoils of war, and for the next few decades manufactured and sold them to her allies as supremely safe completely uncrackable cypher machines. British ownership of a machine which could easily crack the Enigma codes would have been extremely useful, and also necessarily kept a very closely guarded secret. I’m therefore sure that the capability was retained, by the construction of a Colossus-like machine elsewhere (or the failure to destroy all the Bletchley machines).

So Colossus was not quite the first modern computer, although closer than anything else at the time.

Aiken’s Harvard Mk1?

In 1943 The Harvard Mark 1 (also known as the IBM automatic sequence controlled calculator) was built from relays, rotating shafts, and clutches. It was essentially a Babbage Analytical Engine in relay technology, and lacked the important stored-program feature. Unlike Zuse’s earlier Z1-Z3 machines, it employed the rather wasteful decimal representation of numbers, natural for Babbage’s gears, but rather silly for relays.

Zuse’s computers?

Zuse’s earlier machines (Z1[1938]-Z3[1941]) were very elegant, economical, and sophisticated in design, for example using the much more economical binary representation of numbers. The Z1 was mechanical, but Zuse’s use of binary was much more economical and faster than Babbage’s decimal clockwork. The memory was constructed from thin strips of slotted metal and small pins, and proved faster, smaller, and more reliable, than relays. The Z2 used the mechanical memory of the Z1, but used relay-based arithmetic. The Z3 was experimentally built entirely of relays. The Z4 was the first attempt at a commercial computer, reverting to the faster and more economical mechanical slotted metal strip memory, with relay processing, of the Z2, but the war interrupted the Z4 development.

For a long time Zuse doubted the utility of conditional branching since it did not feature in the kinds of calculations he was interested in. Zuse had tried to interest Hitler in the possibilities of his computers, but, perhaps fortunately, Hitler wasn’t much impressed, and Zuse’s war time machines largely earned their keep doing aircraft wing design calculations. When after the war he managed to resume his computing work and a company (Zuse KG) making and selling computers it was 1957 before he actually built a stored program computer, the Z22. The first commercial successes of Zuse KG were the rebuilt Z4, sold to Zurich Polytechnic for mathematical research, and its faster successor, the Z5, sold to Leitz for optical work.

Although Zuse’s designs were elegant, unique, and very advanced for the time, and he did recognise the utility of the stored program concept, for various reasons he did not actually implement a machine embodying this concept until well after other pioneers had done so. Annoyingly, it is clear that he probably *could* have done so before anyone else. That in the early days he got so far ahead of the game despite working almost alone, in ignorance of developments elsewhere, including earlier work such as Babbage’s, and with little external support is very impressive indeed.

In 1964 ownership of the company passed over to Siemens AG, who later recognised Zuse’s achievements and funded him to reconstruct some of his earliest machines for museum purposes.

Eckert and Mauchly’s ENIAC?

In 1945 ENIAC was working in the US. It was programmed by a plug board which wired up the different calculation units in the right configuration to evaluate a particular polynomial. In architecture it was essentially a Babbage machine translated into valve (tube) technology. Eckert & Mauchly, the designers, at this time patented a digital computing device, and are often claimed to be the inventors of the computer. It was later proven in a 1973 US court battle between Honeywell and Sperry Rand that while spending five days at Atanastoff’s lab, Mauchly observed the ABC and read its 35 page manual. Later it was proven that Mauchly had used this information in constructing the ENIAC. Therefore, John Vincent Atanasoff is now (by some US histories) heralded as the inventor of the first electronic computer.

In our terms both ENIAC and the ABC lacked the crucial stored program feature. If, however, ENIAC and Atanasoff’s ABC are regarded as having the essential features of the modern computer, then we should also consider the prior claims of Zuse in Germany, whose Z1 (1938) and Z2 (1939) designs and implementations preceded ENIAC, not to mention Babbage’s Analytical Engine design of 1834, variants of which were successfully made by later engineers, such as Scheutz (1843) and Wiberg (1860). In other words, I argue that it is difficult to find a way to change the definition of computer so as to make either ENIAC or the ABC the first.

In 1945 John von Neumann published the EDVAC report, a critical review of the design of the ENIAC, and a proposal for the superior design of EDVAC. This is widely regarded as the origin of the idea of the modern computer, containing the crucial idea of the stored program. However, this idea was contained in the Universal Turing Machine idea of Turing’s 1937 paper, which von Neumann was undoubtedly familiar with (he knew Turing as a professional colleague), but neglected to mention.

In 1946 The ENIAC team finished the design of the EDVAC based on von Neumann’s suggestions. This was a true stored program computer, but didn’t get working until 1952. This made it too late to be the first true computer.

Although von Neumann has been suspected of trying to claim too much originality in his first publications of the essential ideas of modern computer architecture, it must be recognised that he selflessly did a great deal to advance computing research and development by refusing to try to profit from these ideas, and instead made all his ideas and designs as widely available as possible, thus creating as quickly as possible a large well equipped colloborative research community.

Turing’s ACE?

In 1946 The National Physical Laboratory appointed Turing, who had been developing ideas of implementing his Turing Machine concept of general purpose computation in electronic form, to a rival British project intended to outclass EDVAC, known as the ACE. Turing proposed the much more economical logic-based arithmetic. This proposal is the first time that the idea of software-assisted programming, i.e., software tools, was put forward in some detail. Although by 1946 Zuse had also finished development of the ideas of the Plankalkul programming language (having started in 1942), he was too busy running his computer company by then to get it published until 1972.

However, the NPL proved incompetent or unwilling to manage the engineering side, and Manchester and Cambridge computing work took the lead. However, Turing’s 1946 ACE design was at the time the most advanced and most detailed computer design in existence. He resigned from the NPL in disgust at their incompetence in 1948. however, in 1950 they did finally complete the Pilot ACE, and later its successor the DEUCE.

It has been suggested that Turing was badly treated by the ACE project as a deliberate policy instigated by the security services to squeeze Turing out of British computer development. As they saw it, with the hindsight of the extraordinary success of Colossus at Bletchley Park in cracking German military cyphers, computers were red hot military and intelligence technology. Turing had no respect for authority, knew too many secrets from his war-time work, and as a homosexual was considered a high security risk. They had had no choice but to use him, as the best man for the job, during the emergency of the war. Once the war was over his face did not fit.

It is difficult to estimate the amount of damage this treatment of Turing, and wrapping Britain’s then world leading computer expertise up in the Official Secrets Act, did to British Computer Science and the development of British computer technology. The openness of US developments, deliberately fostered by von Neumann, was a stark contrast.

Note that in 1946 Eckert and Mauchly in the US, Turing in the UK, and Zuse in Germany, all had detailed designs for modern stored-program computers.

The Manchester SSEM (“Baby”)

On 21st June 1948 the first stored program ran on the Small-Scale Experimental Machine (SSEM), the precursor of the Manchester Mk 1. This SSEM was the first machine that had all the components now classically regarded as characteristic of the basic computer, most importantly program storage in the same form as data.

So the Manchester SSEM was the first to work. Others followed rapidly.

The Manchester MU1

By April 1949 the Manchester Mark 1 had been finished and was generally available for scientific computation in the University. With the integration of a high speed magnetic drum by the autumn (the ancestor of today’s disc) this was the first machine with a fast electronic and magnetic two-level store (i.e. the capability for virtual memory). It in turn was the basis of the first commercially available computer, the Ferranti Mark 1, the first machine off the production line being delivered in February 1951.

The Cambridge EDSAC

In May 1949 the EDSAC British computer at Cambridge started work, another real stored-program computer, this one based on the EDVAC design, and the project supported by Lyons, the teahouse company which later developed the LEO commercial computer. The EDSAC was a much larger and faster machine than the MU1, and could be considered the first stored program computer of more than experimental prototype size, capable of substantial real work.

Harvard Mk 3

Aiken’s team complete the Harvard Mk 3, a large stored-program computer.

NPL Pilot ACE

Turing had now left the NPL group, but this NPL Pilot ACE was based on his design, and was finished in May 1950.

SEAC

In May 1950 the Washington (Eastern) National Bureau of Standards finished a simple stored program computer of their own rather than wait for a commercial computer to arrive.

SWAC

In July 1950 the Western National Bureau of Standards group completed their own stored-program computer, at this time the fastest in the world, being able to do an addition in 64 microseconds.

Z4-Z5

In 1951 the repair and reconstruction of Zuse’s interrupted war time Z4 development, was finally completed and started work in the Federal Polytechnic Institute of Zurich, which thanks to its computing power soon became one of the foremost centres in numerical analysis. By this time Germany was interested in developing computers too, but didn’t like what they saw as Zuse’s idiosyncratic old-fashioned technology, compared with the American designs. Ironically, although the American designs used later technology, their computer architecture was not as advanced or as elegant as Zuse’s, or as reliable. The Z4 was the last Zuse computer to use Zuse’s unique layered metal strip mechanical memory. The Z5 (1952) was a faster development of the Z4 using relays, and was used by Leitz for optical calculations.

Note by the way that the Remington Rand M9, a calculating punch, of which 30 were made and sold between 1951 and 1955, were Zuse Z7s, made to order for Remington.

The Ferranti Mk 1

In February of 1951 The Ferranti Mark 1, developed from the Manchester Mark 1, delivered its first machine off the production line. This is claimed to be the first commercially available computer, just beating the US UNIVAC.

UNIVAC

In the same year the UNIVAC 1 commercial computer was produced in US, based on the EDVAC design, and made by Eckert and Mauchly, who by this time had sold their UNIVAC company to Remington Rand. It employed decimal arithmetic, using an underlying representation of number known as “excess three’s notation”. When the basic elements of computer technology were so large, expensive, and short-lived (electronic valves or tubes) this was a very wasteful way of doing things compared to the the elegant simplicity of binary. These early computer pioneers often boasted of the large size of their computers in terms of the number of tubes (valves) they contained, but this was often due to very wasteful design.

LEO

In the spring of 1951 the first British commercial LEO computer, derived from EDSAC, was running demonstrations. By the autumn it was installed and running commercial work. It was called “LEO” because it was developed by Lyons Tea Houses to handle their stock control, salaries, etc.. This remarkably far-sighted company invested in the research and development effort to produce what was a very advanced machine for the time, and better suited to commercial computation than the scientifically flavoured Ferranti. The LEO company was subsequently absorbed into the English-Electric-Leo-Marconi consortium, one of Britain’s two large computer companies, which Tony Benn as minister for industry in 1968 amalgamated with the other, ICT, to form ICL in an attempt to continue to withstand the marketing might of IBM.

EDVAC

In 1952 EDVAC itself worked for the first time. It is EDVAC and UNIVAC on which the US could properly lay claim to having originated the first modern stored program “von Neumann” computer. However, both of the British MU1 (in 1948) and the British Cambridge EDSAC (in 1949) were running well before this. If one decides to shift the definition of computer back to the first programmed sequence calculators (essentially Babbage machines) then the US ENIAC of 1945 was beaten to it in 1943 by the British Colossus of Flowers at Bletchely Park, and Zuse’s Z1/Z3 (1938/1941) in Germany. It is also arguable that Colossus was too specialised towards code-breaking and so didn’t count.

Manchester University Mark 2

In 1954 the Manchester University Mark 2 started work, an improved version of the MU1, with hardware supported floating point. This became marketed as the Ferranti Mercury computer.

Computer Generations

It can be argued that although the von Neumann/Turing architecture contained the crucial features of the modern computer, the implementations of these in electronic valve (tube) technology were too severely limited in reliability and size to exploit these features properly. Good reliability required the invention and use of the transistor. To make transistors small enough that computers could run at megaherz instruction rates with megabytes of fast random access memory required the miniaturisation techniques first developed in LSI (large scale integration), and soon much extended in VLSI (very large scale integration), otherwise known as “silicon chips”. The first computer to be based on transistors was finished at Manchester University in 1953. This permitted computers for the first time to become reliable and small enough to be widely saleable for general business and scientific use, and is often referred to as the Second Generation of computer, the First being based on electronic valves (vacuum tubes). We have now got to the Fourth Generation, or perhaps the Fifth, as the list below explains. Since the first stored-program computer was built using electronic valves (US tubes) we don’t need to consider the “zeroth generation” of relays, or the “minus first generation” of clockwork.

The generations are separated by changes in technology which were sufficiently radical to permit considerable improvements in performance which led to new architectures, uses, and markets.

  • First Generation (c1950): These were built from electronic valve (vacuum tube) technology. Consequently they were large, consumed a great deal of electrical power, and were not reliable enough for continuous operation for days at a stretch. They were only suitable for enthusiasts and people who had to have them.
  • Second Generation (c1960): These were built from transistors. These were so much smaller, consumed so much less power, and were so long-lived compared to valves, that these were the first computers which could be successfully marketed.
  • Third Generation (c1970): These were built from Large Scale Integration (LSI) of many transistors onto a single chip. This permitted the diversification of the computer market into two distinct areas. The first used the technology to build much more powerful computers at the same size and price as before, still called “mainframes”. The second used the technology to build small cheap computers which offered the power of the previous generation of mainframes at a fraction of the size and cost. These were called minicomputers.
  • Fourth Generation (c1980): These were built from Very Large Scale Integration (VLSI) of many thousands of transistors onto a single chip. This permitted the diversification of the computer market into two distinct areas. The first used the technology to build much more powerful computers at the same size and price as before, still called “mainframes” and “minicomputers”. The second used the technology to build small cheap computers which offered the power of the previous generation of minicomputers at a fraction of the size and cost. These were called microcomputers. These were personal computers, since they were small and cheap enough that being idle when the owners weren’t using them didn’t matter.
  • Fifth Generation (c1990): The Japanese caused some alarm in the US and UK by announcing their intention to develop the Fifth Generation based on ideas developed in Artificial Intelligence research. Unlike previous generations this was not based on a clear hardware discontinuity, and the project in the end partly fell short of its original goals, and was partly overtaken by events. No really good candidate for the label of Fifth Generation has turned up yet, although one possibility is the linking of computers via the Internet and the World Wide Web, so that they have become participants in a very large and rapidly growing world-wide global information store. While the ideas and early implementations are decades old (the Internet began as the DARPA Defence Research net in the US and as JANet [Joint Academic Network] in the UK), it was only in the 1990s that large numbers of the general public acquired their own personal computers with Internet and Web capability as a standard feature.

Leave a comment