Computer History

Site: Saylor Academy
Course: CS301: Computer Architecture
Book: Computer History
Printed by: Guest user
Date: Thursday, March 28, 2024, 1:40 PM

Description

Explore each of these articles, which focus on the early history of computers and give some insight into the early history of computers. They will introduce you to the powerful ideas that enabled computer architecture of today and that will influence computer architecture of tomorrow.

Charles Babbage and Howard Aiken

"In 1936, [Howard] Aiken had proposed his idea [to build a giant calculating machine] to the [Harvard University] Physics Department, … He was told by the chairman, Frederick Saunders, that a lab technician, Carmelo Lanza, had told him about a similar contraption already stored up in the Science Center attic.

Intrigued, Aiken had Lanza lead him to the machine, which turned out to be a set of brass wheels from English mathematician and philosopher Charles Babbage's unfinished "analytical engine" from nearly 100 years earlier.

Aiken immediately recognized that he and Babbage had the same mechanism in mind. Fortunately for Aiken, where lack of money and poor materials had left Babbage's dream incomplete, he would have much more success

Later, those brass wheels, along with a set of books that had been given to him by the grandson of Babbage, would occupy a prominent spot in Aiken's office. In an interview with I. Bernard Cohen '37, PhD '47, Victor S. Thomas Professor of the History of Science Emeritus, Aiken pointed to Babbage's books and said, "There's my education in computers, right there; this is the whole thing, everything I took out of a book."

-- The Harvard University Gazette. Howard Aiken: Makin' a Computer Wonder By Cassie Furguson

Charles Babbage's Difference Engine I Demo (front)

The quote is incorrect. The "brass wheels" were a small demonstration piece for the Difference Engine I not the Analytical Engine. They were one of six such pieces constructed by Babbage's son Henry after his fathers death. These demonstration pieces were distributed among various universities including Harvard. Aiken must have been sufficiently intrigued by the mechanism to investigate Babbage. In the course of this investigation he would have discovered Babbage's Analytical Engine and the similarities it bore to his own machine. It is not clear when Aiken was given Babbage's "books" or indeed what they contained. They did not contain plans of the Analytical Engine since the only plans have always been stored at the Science Museum at Kensington in London. Aiken may have been able to obtain some documents which together comprise the complete published account of the Analytical Engine. These documents along with Babbage's "books" would have given Aiken a high level description of Babbage's planned machine.

The pictures below show front and rear views of one of six demonstration pieces for the Difference Engine I created by Henry Babbage after his Fathers death. This piece is similar to the one shown to Howard Aiken in 1936.

Aiken may also have seen photographs of the largest test piece of the Difference Engine I held by the Science Museum, Kensington, London, UK.

Charles Babbage's Difference Engine Demo pieces held at the Science museum in London.

Two large fragments of the Analytical Engine were constructed by Babbage's son and Aiken may have seen photographs or otherwise become aware of their existence.

Charles Babbage's Analytical Engine pieces, constructed by his son.

In 1991 the Science Museum in London constructed the Difference Engine II, the printer was added in 2001. These pieces are on display in the Museum, which is well worth a visit. The construction of the Difference Engine II is documented by Doron Swade in his book The Difference Engine. The Difference Engine II was the last machine Babbage designed and employs lessons he learned from both the Difference Engine I and the Analytical Engine. For example the printer was designed for use by the Analytical Engine and Babbage reused it for the Difference Engine II. The similarity between the Difference Engine II and the machine that Aiken built is striking. Note the drive shaft running along the bottom of both machines and the general arrangement with printers at one end of a long tall frame. This may be the result of convergent evolution rather than direct influence but the similarity is still striking.

The Difference Engine II at the Science museum in London and Howard Aiken's Harvard Mk I, IBM Automatic Sequence Controlled Calculator under construction at Endicott

In the foreword to the manual for the operation of the Automatic Sequence Controlled Calculator (ASCC) Howard Aiken states that "The appendices were prepared by Lieutenant [Grace] Hopper" with the assistance of others and that "[She] acted as general editor, and more than any other person is responsible for the book." It seems safe to conclude that Howard Aiken and Grace Hopper were not only influenced by Charles Babbage but they and their team held him in high regard and considered themselves guardians of his reputation and inheritors of his quest.

"If, unwarned by my example, any man shall undertake and shall succeed in really constructing an engine embodying in itself the whole of the executive department of mathematical analysis upon different principles or by simpler mechanical means, I have no fear of leaving my reputation in his charge, for he alone will be fully able to appreciate the nature of my efforts and the value of their results."

-- Charles Babbage

The staff of the Computation Laboratory went on to have a considerable influence on the development of the modern computer. Not least of which was Grace Hooper, who developed the first compiler and several popular languages.

The influence of Howard Aiken and the IBM ASCC – Harvard Mk I machine on the later development of computers should not be over stated. The published notes from The Moore School Lectures (held in 1946) are rather scathing with respect to Aiken and his understanding of the direction in which the new electronic computing machines would lead.

"Hartree was very forward looking and was excited by the mathematical potential of the stored program computer. On the other hand, Aiken was absorbed in his own way of doing things and does not appear to have been aware of the significance of the new electronic machines."

-- The Moore School Lectures (Charles Babbage Institute Reprint)

Unlike Aiken and his machine, Grace Hopper and some of her colleagues went on to have a significant influence in the early development of compilers and language design. One wonders what if any influence Babbage and Ada Lovelace had on Grace Hopper's ideas. Unfortunately I can find no comments by Hopper regarding either Babbage or Lovelace.


Source: John R. Harris, http://virtualtravelog.net/
Creative Commons License This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License.

Source Code as History

When the history of early software development is written, it will be a travesty. Few historians will have the ability, and even fewer the inclination, to learn long dead programming languages. History will be derived from the documentation not the source code. Alan Turing's perplexed, hand written annotation "How did this happen?" on a cutting of Autocode taped into his notebook will remain a mystery.

How did this happen? Annotation of a program bug by Alan Turing

What kind of bug would stump Alan Turing? Was it merely a typo that took a few hours to find? a simple mistake maybe? Or did the discipline of the machine expose a fundamental misconception and thereby teach him a lesson? The only way to know would be to learn Autocode.

Page from Alan Turing's notebook showing an annotated program with a bug

The first stored program to be successfully executed was written by Tom Kilburn and executed on Monday June 21, 1948 at Manchester University, England. It is said that this was the first and last program that Kilburn ever wrote. The program found the highest factor of a number and took 1 minute to complete on its first run. A second run with a different number took 2 minutes and 52 seconds. Unfortunately, no one thought to document the program until Geoffrey C. Tootill wrote an amended version in his notebook a month later on July 18, 1948. The original has been lost. Below is a copy of Tootill's version.

Page from Geoffrey C. Tootill's notebook showing his amended version of the first, successfully executed, stored program

The Moore School Lectures

Some time between 1934 and 1950 the first modern computer was created. Pinning down exactly when that event occurred is not easy. It depends on how you define the term computer and what you think is more important: The concept, the design, the first successful test, or the first time the machine solved a real problem. In those early days it usually took years for a team to progress from concept through design to working machine. There were many such teams working mainly in the US and UK. These teams competed and cooperated sometimes they shared ideas and designs, and they sent representatives to visit each others laboratories. On one famous occasion in the summer of 1946 almost all the leaders in the field got together at the Moore School for an 8 week long series of lectures. In short the story of the emergence of the modern computer is a complex one that involves both direct and indirect contributions from many people.

In 1946 between July 8 and August 31, the Moore School of Electrical Engineering at the University of Pennsylvania held a special course entitled Theory and Techniques for Design of Electronic Digital Computers. The course was organized in response to interest generated by; the schools public announcement of the ENIAC, and the publication of the first draft of a report on the EDVAC by Jon von Neumann. Attendance was by invitation only and the "Students" were selected from the leading experts at the major institutions working on the development of computing devices in the US and UK. At the time of this event there were only three published designs for a stored program computer and it was expected that all those present were familiar with these documents:

  • The First Draft of a Report on the EDVAC, by Jon von Neumann (1945)
  • Proposed Electronic Calculator, by Alan Turing (1945)
  • Preliminary report on the proposal for an IAS machine, by A.W. Burks, H.H. Goldstine and John von Neumann (June 1946)

Within two years of these lectures, the first stored program computer was operational; within 3 years there were 5 operational machines; and within 5 years stored program machines were commercially available. The Moore School Lectures, as they became known, were responsible for focusing all the leading developers of computing devices on a single problem: how to design and build a stored program computer. It is interesting that despite being outnumbered and out-funded the British took, and held, the lead in this development effort between 1946 and 1953. In some areas such as business applications the British held the lead for much longer. How they were able to do this is not directly explained in any of the historical material available online, which tends to focus on individual development efforts and not on the larger picture.

 

Attendance at the Moore School Lectures

40 lectures were delivered 5 days a week over 8 weeks. Most days a formal morning lecture lasting up to 3 hours was followed by an unstructured afternoon seminar.

Hartree was very forward looking and was excited by the mathematical potential of the stored program computer. On the other hand, Aiken was absorbed in his own way of doing things and does not appear to have been aware of the significance of the new electronic machines. The excellent review by John H. Curtis gave a very clear picture of contemporary computer development in the United States. But for most of the Students the real value was gained from the informal afternoon seminars.

 

Analysis and Speculation

What follows is mostly speculation, I would be interested in evidence that supports or refutes these ideas.

I suspect the British were able to take the lead in computing in 1946 because the main challenge had become the rapid construction of a machine while solving the one remaining major technical problem – storing a program in memory. This problem was well understood in concept but the practical solution was more challenging than it appeared. As a result of their experience in the war the British were approximately 2 to 3 years in advance of the Americans in the crucial area of rapid prototyping and evolution of complex electronic devices. It was this ability that enabled them to take the lead from America.

During the War the British had developed RADAR further than any of the other combatants. This work occurred in secret at the Telecommunication Research Establishment TRE in Malvern. Meanwhile at Bletchley Park, they had secretly built and operated 10 Colossus Mk II code breaking machines. These machines were complex special purpose computing devices, they matched ENIAC in complexity and capability if not in size and generality. At the end of the war Britain had the largest concentration of electronic computing devices in the World and a significant number of engineers with practical skills in rapidly building complex electronics. The British centers of electrical engineering excellence which included; Bletchley Park, the Telecommunications Research Establishment (TRE) at Malvern, and The General Post Office Research Station at Dollis Hill, had all been driven by desperation to work with great speed and had each developed similar evolutionary prototyping approaches. The Colossus Mk I, and Mk II were constructed by Tommy Flowers in a matter of months at Dollis Hill, and the development of RADAR at the TRE had been similarly rapid. Americas leading center of excellence in the field of electronic computing – The Moore School – had become used to working at a slow pace. The ENIAC had taken 5 years to construct and was not completed until after the war ended.

In 1946 the Moore School's leading experts left the school and went to other institutions. John von Neumann went with Herman Goldstine to the Institute for Advanced Study in Princeton and Mauchly and Eckert also left to setup their own company which was later purchased by Remington Rand. Both these groups lost valuable time in these reorganizations, however this was not the cause of the lead in computing passing to the UK. Similar reorganizations had happened already in the UK and other countries, as military programs were wound down and research expertise returned to civilian institutions.

By 1946 the conceptual architecture for a stored program computer was well understood by those interested in the field of electronic computing. Both John von Neumann and Alan Turing had developed and published designs. While these designs were revolutionary they were not particularly complex conceptually. As has been pointed out elsewhere a competent electrical engineer can grasp the main features of von Neumanns' design in a day. Maurice Wilkes was famously given only one night to read the First Draft and decided there and then that this was the correct approach and that he would develop a machine along these lines – the EDSAC, generally accepted as the second operational stored program computer and the first machine to actually perform useful work. By the time the Moore School lectures had finished there were many people who understood exactly what needed to be done.

Two basic types of stored memory were under investigation, Serial Access Memory (SAM) and Random Access Memory (RAM). SAM could only be read in the order it was written while RAM was much faster as it could be read in any order. SAM devices in the form of mercury acoustic delay lines were already available as a result of RADAR development which need memory devices to improve image quality. RAM devices such as the Selectron were still under development but at the time of the Moore school lectures they were expected to be ready within a year.

In the UK all three centers of computer development hired people from either TRE Malvern, Bletchley Park or both to fill Senior positions. These men combined their expertise and rapidly developed plans for building stored program computers.

At Manchester University Max Neumann, who had directed efforts to break the Lorenz Cypher at Bletchley Park, became Fielden Professor of Pure Mathematics. He recruited, I.J. Good and D. Rees both from Bletchley. Meanwhile the Electrical Engineering Department recruited Freddie Williams from the TRE Malvern. Williams brought Tom Kilburn and later Geoff Tootill also from TRE to continue the development of a memory device based on the Cathode Ray Tubes CRT. Once at Manchester Williams and Kilburn rapidly perfected a working RAM based on the cathode ray tube. The Williams-Kilburn tube was working by March 1947 just over a year later The Baby, the first stored program computer was operational. The speed of this development must be compared with the ill-fated development of the Selectron which was running into difficulty in the US and was still not operational in the middle of 1948 when The Baby became operational. It was not used in a computer until the Johniac in 1953.

There is some dispute over who actually led the effort to build the Baby at Manchester the mathematics department or the Electrical Engineering departments. But what is clear is that men from TRE Malvern were able to solve the technical problems that were slowing efforts elsewhere and by employing a rapid evolutionary prototyping approach the Manchester University team was able to beat all the other teams in the UK and US to build a working stored program computer. The Baby ran its first successful program on June 21, 1948.

At Cambridge University, Maurice Wilkes who had also been involved in Radar Development at TRE Malvern took a different approach. He chose to build a machine of modest capabilities from stock parts, or as near to stock as he could get – he chose mercury delay lines for the memory. The machine was called EDSACit was the second operational stored program computer after the Baby in Manchester and ran its first successful program on May 6, 1949. Wilkes was funded in part by the J. Lyons Company a forward thinking British teashop chain similar to today's Starbucks. Lyons decided to build a computer of their own based on the EDSAC designed. Lyons hired John Pinkerton also of TRE who seconded two of his staff to Wilkes to help build EDSAC. In 1951, Lyons built their machine and called it LEO. It was the first business computer every used and was rapidly commercialized. IBMs first computer the Defense Calculator was not available until March 1953.

At the National Physics Laboratory (NPL) Alan Turing of Bletchley Park was leading efforts to build a computer of his own design called the Pilot ACE. Both Max Neumann and Alan Turing tried to recruit Tommy Flowers to help with development in 1946. Both failed, sadly he stayed at the Post Office. Alan Turing continued to use the Post Office research center at Dollis Hill to build mercury delay lines but Flowers and W. M. Combs another Bletchley man were being pulled onto other "more important" work and progress was delayed. Eventually Turing was persuaded to go to Manchester by Max Neumann. The Pilot ACE was constructed without him and was operational in 1951.

Meanwhile in America the situation was not improving. The Eckert Mauchly Computer Corporation built the BINAC for the Northrup Aircraft Corporation for a classified airborne application. It was tested and ran successfully for 44 hours in April 1949. It was then dismantled and delivered to Northrop in California were it was never successfully rebuilt. The IAS team led by von Neumann at Princeton was struggling with the Selectron and switched to the Williams-Kilburn tube soon after the Manchester team announced the Baby.

In Australia yet another alumni of TRE Malvern was having more luck. Trevor Pearcey had moved from the UK to Australia in 1945 where he decided to design and build a computer. In 1948 he visited England and confirmed the soundness of his design. By November 1949 the CSIR Mk I was operational.

With 50+ year hindsight and knowledge of the secret British activities at TRE Malvern and Bletchley Park the Moore school lectures can be seen in a different light – one that raises many questions. To what extent did the hosts at the Moore School know about their British guests experience and skills? Had they known the truth would they have been so open with their information?. What would have happened if the British had been able to share their knowledge? One fact seems undeniable, only four stored program computers were operational before 1950 and three of these were built by people who had worked at TRE Malvern during the Second World War. The one exception, the BINAC, worked for 40 hours and was then dismantled never to work again. At the beginning of 1950 there were three working stored program computers in the world and none of them were in America. The expertise developed at Telecommunications Research Establishment (TRE) Malvern placed its engineers 2 to 3 years ahead of anyone else. How the British lost this lead is much less clear. The post war Austerity measures contributed and the failure of the UK government to make adequate investments may have been a factor. There was no direct equivalent to the US ARPA and the agencies that did exist were not well funded. Industry and universities failed to partner well in the way J. Lyons and Cambridge University had done. Whatever the case between 1950 and 1960 the British lost a 2 to 3 year lead in computing to America. But it may be fairer to say that the Americans took the lead back from the British.

Finally consider the case of David Rees of Manchester University. He must have had a uniquely interesting and frustrating experience at the Moore school in 1946. He had been sent by Max Neumann from Manchester University to the lectures as a "student" and yet he was the only person present who had first hand knowledge of Bletchley Park – the largest computing facility in the world, but, in the interests of British national security he was not allowed to talk about it.

The First Modern Computer – The Case for Baby, the Manchester Mk I Prototype

Finding an authoritative history of the Computer's invention is almost impossible. There are several reasons for this problem: People disagree on the meaning of the word "invent", they also disagree on the meaning of the word "computer". Finally significant parts of the history were either lost or deliberately concealed and only came to light again in the 1960′s and 70′s. The United States Army was the first organization to stake a claim to the invention of the computer with the 1946 public announcement of the ENIAC (Electronic Numerical Integrator and Computer). It has since become commonly accepted that ENIAC was the worlds first computer when in fact it was not a computer, in the modern sense, at all, and was not even the first of its class.

What is Invention?

In the 1840′s after working on a mechanical calculating device called the difference engine Charles Babbage conceived of the Analytical Engine. Its detailed plans describe a brass and steel steam-powered machine that comprised a central processor called the mill, a memory called the store, an input device that read problem data and processing instructions from punched cards, a printer for data output, and a mechanism to pass information between these various elements. Had it ever been built the Analytical Engine would have been the first general purpose, externally programmed, computer.

Invention is the art of changing paradigms by successfully realizing new concepts. Babbage did not invent the computer just as Leonardo did not invent the flying machine, the tank, or the parachute. Inventors are held in high regard precisely because they make the concept real. The Wright brothers are rightly recognized as the inventors of manned flight but they did not conceive of the idea nor were they the first to attempt the construction of a winged flying machine. They were not even the first to make a working heavier than air flying machine. But they were the first to solve all the major problems associated with manned flight in a single machine and thereby created a new paradigm. I believe this is the essence of invention.

Part of the problem with the History of the computer is that it took 100 years from concept to working prototype. There were several distinct development efforts and it is not clear which of these informed the work of later pioneers and which were dead ends. The leading actors in the invention saga were a mixture of academics, and engineers of various types. They often had different concepts of invention and placed different value on theoretical discovery vs. practical realization. When all this is considered in the light of; extreme military secrecy, rampant homophobia, chauvinistic patriotism, and entrenched legend it becomes very difficult to discern the truth.

 

What is a Computer?

The word "computer" has a complex etymology. Its meaning has evolved considerably. Originally (1646), the word computer referred to a person who performed mathematical calculations. Maintaining accuracy was obviously a problem for a person performing thousands of calculations by hand. To reduce the likelihood of error various devices were designed to assist, or automate, the job of the human computer. The word computer gradually changed its meaning and began to refer to the devices themselves. By 1892 the Second Edition of the Oxford English Dictionary (OED) records that one sense of the word was a mechanical calculating device. By 1946 various qualifiers had to be introduced, The OED of that year records electronic, digital and analogue as qualifiers needed to differentiate between the various types of computer. It is clear that the computer rapidly evolved through several forms that eventually resulted in the first modern computer – a device that, like the Wright brothers plane, had all the important features of its contemporary descendants.

To clearly identify the exact time and place where the first modern computer emerged it is worthwhile identifying the various types of machine that gave rise to computers. Simon H. Lavington, author of Early British Computers, classifies early calculating machines of the 1930s into three types:

  • Mechanical and electro-mechanical hand calculators: These Machines could add, subtract, multiply and divide and were used by human computers to simplify their task.
  • Electro mechanical Punched Card Tabulators: These machines were used in commerce and government statistics to sort and count large quantities of data.
  • Differential Analyzers: These machines could solve differential equations considerably faster than other methods.

 

What is Programming?

Many early computing devices and advanced calculating devices were programmable to some degree. This increased their utility by changing them from single purpose devices into devices that could solve a variety of problems. There were two main methods of programming; Physical reconfiguration, and Symbolic Programming. Symbolic Programs can be further broken down into those which are stored externally (outside the machine) and internally (inside the machine's memory) this distinction is important and will be covered in detail later.

Physically programmed devices required reconfiguration before they could solve a new problem. For mechanical and electro-mechanical devices this involved setting cogs and wheels in the correct starting positions and for electrical devices this was accomplished by reconfiguring some form of switchboard or even rebuilding or reconnecting parts of the machine. This process often took days and sometimes weeks to complete.

Symbolically programmed devices did not need to be physically reconfigured instead they were programmed by entering a sequence of instructions through an input device, usually some type of a punched card or tape reader. The holes in the cards or tape represented symbols that coded specific instructions that the machine could interpret and execute. The set of symbols was finite but it could be combined in many ways that allowed for great variety.

 

What is a General-Purpose Computer?

Just because a machine is programmable does not automatically make it General-Purpose. The term General-Purpose has a very specific meaning when applied to computers. In 1936 Alan Turing wrote a paper called On Computable Numbers with an Application to the Entscheidungs-problem. In this paper he described a simple computing machine and showed how this device could be programmed to calculate any computable number (given enough time and a large enough memory). This machine has since become known as a Turing Machine.

A Turing Machine consists of:

  • A tape, divided into squares each of which contains one of two possible symbols (for example 1 and 0). The tape moves through the machine one square at a time in either direction.
  • A device that can read and write symbols to the tape.
  • A simple table of rules that governs the behavior of the machine. Each rule instructs the machine which symbol to write to the tape and the direction in which it should then move .
  • A record of the current condition or "state" of the machine.

The machine reads the contents of the current square on the tape. It looks up the rule to execute in the rule table. The table is arranged by state and symbol. Each state and symbol combination has only one possible rule. There can be any number of states so the rule table can be very long, but it must be finite. The machine then overwrites the current square with the symbol indicated by the rule and moves the tape in the direction indicated by the rule. This cycle is repeated until the machine stops.

In his paper, Turing defined a table of instructions that allowed a Turing machine to emulate any other Turning machine. This special class of Turing machine was called a Universal Machine.

It is possible to invent a single machine which can be used to compute any computable sequence. If this machine is supplied with a tape on the beginning of which is written the Standard Description [A Logical representation of a Turing Machine's table of instructions] of some computing machine M then It will compute the same sequence as M.

Turing proved that a Universal Turing Machine can be used to calculate any computable number, in other words a Universal Turing Machine is a General-Purpose computer and is said to be Turing Complete. In this case General-Purpose is used in its mathematical sense, it means a Universal Turing Machine is capable of imitating any formally describable system (given enough memory). Furthermore, A Universal Turing Machine is symbolically programmable and stores its program in the same "memory" (the tape) it uses for its input data and intermediate data store. This, as we shall see later, is a crucial feature of the von Neumann Architecture. For the first time in 100 years the theory of machine computation had advanced beyond the vision of Charles Babbage.

Between 1936 and 1938, after he had written his paper on computability, Alan Turing became a graduate student at Princeton. He was invited to stay by John von Neumann who was in the Department of Mathematics there. Turing declined and returned to Cambridge. This event Is worthy of note because John von Neumann was to play a crucial role In later developments.

 

Stored Program Computers and the von Neumann Architecture

In 1944 John von Neumann was head of computing on the Los Alamos Project. He visited the US Army Ballistics Research Laboratory at the University of Pennsylvania's Moore School of Electrical Engineering in search of computing devices. There he found the design for the ENIAC complete and the design for the EDVAC just beginning. ENIAC had been designed to compute World War II ballistic firing tables. He spent the next year and a half as a consultant on the EDVAC project and he wrote the First Draft of a Report on the EDVAC. In this document, he defined the Conceptual Architecture of almost every computer built since then. Although von Neumann was the sole named author, J. Presper Eckert and John W. Mauchly who designed ENIAC claim they devised the fundamentally revolutionary stored program aspect of EDVAC's architecture.

The von Neumann Architecture describes the roles, responsibilities, and interactions of the following major components of a computer:

  • Arithmetic-logic unit (ALU) Implements elemental functional capabilities such as mathematical and logical functions (+ – / x AND OR)
  • Control unit Receives and interprets program instructions and either carries them out directly or causes another component (such as the ALU) to carry them out
  • Memory Retains data so they can be used at some later time. This data includes the program.
  • Input/Output A mechanism to input and output data
  • Bus Provides communication between all the components

The First Draft is remarkable in many respects.

  • As an example of a well defined conceptual architecture, it is worthy of study. It anticipates many modern design techniques such as practice of defining a system metaphor – von Neumann draws parallels with the brain throughout the paper. The clear description of the roles and responsibilities of the various architectural components without referencing implementation details shows von Neumann knew the dangers of getting into details too soon.
  • The similarities between this paper and other works are remarkable. When read in parallel with the description of Charles Babbage's Analytical Engine Sketch of the Analytical Engine and Alan Turing's 1936 paper On Computable Numbers with an Application to the Entscheidungs-problem many parallels are immediately apparent.
  • The Architecture itself demonstrates that it's authors had a firm grasp of practical problem solving. The inclusion of the ALU discards the theoretical simplicity of a Turing Machine but reduces the complexity of the software needed to operate the machine – a brilliant compromise. And finally the most significant innovation was the ability to store the program in memory

In an externally programmed machine the tape or cards were read one symbol at a time and the machine immediately performed the action indicated by the symbol. If the machine needed to change the sequence of instruction execution the tape had to be reversed or advanced to the correct position. The process of advancing and reversing the tape was not implemented in many externally programmed machines. In those that did implement it the process was cumbersome at best and so slow that it's use was kept to a minimum.

With an internally stored program the machine read the entire program into it's own memory and then began to execute the program. Intermediate calculations could be stored in the same memory as the program. This approach gave the machine much greater flexibility Program instructions could be executed in various sequences as control could jump from one position to another at very little cost. Furthermore the program could even be re-written in memory as it was executing. As any programmer will tell you this is a double edge sword. Memory management has been the bane of programmers lives ever since. The problems associated with making an externally programmed machine with these same capabilities were such that while it was attempted to some degree it was never successfully realized.

If Turing's paper and von Neumann's First Draft are compared it is clear that the von Neumann Architecture is a conceptual model for the implementation of Turing's theoretical Universal Machine. The similarities are striking. However, this does not mean von Neumann was influenced by Turing. The history of computing is replete with rediscovered concepts and ideas so I suppose it is possible that von Neumann was not aware of Turing's work on computability, but not very likely given the fact that he had asked Turing to stay on at Princeton in the 1930s. What is more possible is that J. Presper Eckert and John W. Mauchly had independently come up with the idea of stored memory program, but had not grasped its fundamental importance. Neither man was Turing's equal when it came to Mathematics although von Neumann was in the same league and would definitely have understood the implications of the Universal Turing Machine.

 

Classification of Computing Machines

It is clear that the calculating machines of the early 1930s were not computers however, within 20 year innovations in the theory of computability, and advances in electronics, would lead to the modern computer. With hindsight it is possible to identify four different classes of machine that have all been called computers. These classes did not develop in strict chronological order but they do represent an evolutionary trend that resulted in the first modern computer. These classes are defined below.

  • Single purpose Computers were able to solve simple mathematical problems such as addition, subtraction, and multiplication, of two numbers, or model a single complex system such as the solar system. Most of the Mechanical and electro-mechanical hand calculators described by Lavington fall into this category as do Orrereys and even the Antikythera Mechanism of ancient Rhodes.
  • Special-Purpose Computers. were able to solve a specific set of problems anticipated by their designers. These machines required physical reconfiguration before each calculating run. Charles Babbage's Difference Engine I and II were early examples of this type of machine, Later examples were the differential analyzers of the 1930′s. The early code breaking machines of the Second World War (the Bombes and the Colossus Mk I) and the ABC were also in this class.
  • General-Purpose Externally Programmed Computers were able to solve a large set of problems many of which may not have been anticipated by their designers. Charles Babbage's Analytical Engine, ENIAC , the Collosus Mk II machines, and the Zuse Z3 where all examples of this type of machine. These machines relied on external programs or physical reconfiguration. Theoretically these machines were General-Purpose. However, from a practical point of view they were only ever operated as multi-purpose machines. They were just too slow and cumbersome to be used as real general-purpose machines.
  • General-Purpose Internal Stored Program Computers. were able to solve any computable problem, given enough memory. These machines followed the von Neumann architecture and stored their program in their own memory along with the data it operated upon. This is the crucial differentiating feature the modern general-purpose machines. The machines included Baby, EDSAC, BINAC EDVAC and many others

Almost every computer built since 1950 has been a General-Purpose, Stored Program machine. Furthermore the term Computer now refers exclusively to this category. General-Purpose, Externally Programmed machines are extinct. Special Purpose machines exist only inside other devices; automobile ignition systems, cell phones, smart cards, scientific digital calculators etc. Single purpose machines rarely exist in physical form at all. Today they usually take the form of software applications that run inside general purpose computers. From these facts we can conclude that the first computer, in the modern sense of the word, was the first General-Purpose, Stored Program Machine.

A slightly more formal definition:

A modern computer is a General-Purpose, Stored Program machine. It implements all the components of the von Neumann Architecture and is therefore able to efficiently take full advantage of the fact that it is Turing Complete, within the constraints of it's finite memory.

It should be noted that there are people who will dispute this definition. I believe their dispute is based on the belief, or desire to believe, that ENIAC, the Colossus II, the Zuse Z3, or some other General-Purpose Externally Programmed computer was the first modern computer. I believe they are wrong. In theory these devices were General-Purpose computers (see the demonstration that the Zuse Z3 was a Universal Computer) but in practice they were multi-purpose at best. This is the crux of the debate. I believe a truly modern computer requires a memory to store a program internally as this is the only practical way of building a General-Purpose machine. While Externally Programmed computers may have been General-Purpose in theory they were a long way form General-Purpose in practice.

 

The First General Purpose Stored Program Computer

In the Late 1940′s the challenge for those involved in the development of advanced computing devices became the construction of a reliable memory in which a program and data could be stored. In 1947 F. C. Williams and Tom Kilburn working at Manchester University in the UK developed a novel Cathode-Ray tube memory device called the Williams tube or more properly the Williams-Kilburn Tube. Together with G.C. Tootill they built a small prototype stored memory computer to thoroughly test their invention. The first machine to successfully implement the von Neumann Architecture was, Baby, The Small Scale Experimental Machine (SSEM), also known as the Manchester Mk I Prototype. This machine ran the first stored program in the morning of the 21st June 1948. It took 52 minutes to execute. This was the first operational computer in the modern sense of the word.

Williams-Kilburn Tube

The diagram below shows a reconstruction of the original program as best as Tom Kilburn and G.C. Tootill could remember it in 1996. It found the highest proper factor of a number by using repetitive subtraction simulate division.

The first program

 

General-Purpose Externally Programmed Computers

General-Purpose Externally Programmed Computers began to appear in the late 1930′s and became extinct in the 1950′s. They were a short-lived stage in the evolution of computers – Not quite a computer and more than a calculating machine.

ENIAC is often described as the first General-Purpose ComputerI believe this is incorrect. It is not clear that ENIAC, was Turing Complete. In it's original format ENIAC was programmed by physical reconfiguration and this was a complex time consuming task. There were definable computational tasks that ENIAC could not perform.

In programming the ENIAC by plugging cables, its users were literally rewiring the machine each time, transforming it into a special-purpose computer that solved a particular problem. In a sense this is what happens whenever one programs a modern computer; only with the ENIAC, as with the Differential Analyzer from which the concept was derived, the changes were made by a person rather than automatically by the computer itself.

The important point is that however time-consuming the setup period was, it allowed the ENIAC to solve a wide range of mathematical problems, including many that its designers never anticipated. It was not fully a "general-purpose computer" – for example, it could not solve large systems of linear equations as Atanasoff's machine was designed to do. But its ability to be reconfigured to perform an almost limitless sequence of steps, including iterative loops of operations, sets the ENIAC apart from the other electronic calculators described thus far, and places it astride the categories of "calculator" and "computer."

-- Computing Before Computers

ENIAC's status as the first computer is largely due to two factors. The, American claim was made in 1946 before the revolutionary significance of stored program computing was widely understood and before knowledge of other earlier devices was widely available.

Only America, was prepared to admit it had developed a General-Purpose computer in the immediate post war years. For 30 years after the War's end the United Kingdom did not mention the crucial role Bletchley Park played in winning the battle of the North Atlantic and significantly shortening the war. They did not mention Alan Turing's vital contributions and therefore, conveniently, did not have to mention how they had driven him to suicide by mercilessly persecuting him for his homosexuality. In particular they did not mention the ten Colossus Mk II machines and the people who built and operated them. These machines were developed to break the German code named Fish produced by the Lorenz cipher machine. Like ENIAC, the Colossus MK II machines were General-Purpose, Externally Programmable machines that supported conditional branching. The first Colossus Mk II was operational on June 1st 1944 in time for the D-day invasion. By contrast ENIAC became operational in the fall of 1945 after the war ended.

Another claim made by the pro-ENIAC lobby is that only ENIAC had any direct decedents. In effect they claim that the secrecy surrounding Colossus Mk II and the obscurity of other machines prevented any of the knowledge gained from being reused. This of course is nonsense. Both Max Neumann and Alan Turing had direct knowledge of Colossus Mk II machines and both were involved in the development of the Manchester Mk I Prototype. Many others from Bletchley Park went on to work on in the fledgling UK computer industry were they were free to use their skills and knowledge of electronic computing even though they remained bound never to speak of Bletchley Park.

An even earlier machine that also lacked publicity but not influence was the one constructed by John Vincent Atanasoff and Clifford Berry at Iowa State University. Together they built a prototype machine in 1939 and a full-scale model in 1942. The Atanasoff-Berry Computer, or ABC as it was also known did not operate for long and was much slower and simpler than ENIAC. It was dismantled during the second world war but not before John W. Mauchly had seen it and quizzed Atanasoff about Its operation. The inventors of ENIAC certainly had knowledge of the ABC and even lost a patent infringement court case over patents filed in relation to the ABC.

But the ABC and Colossus Mk II machines were not the first operational General-Purpose, Externally Programmed machines either. Konrad Zuse was almost completely ignored in his native Germany. During the Second World War he struggled with inadequate funding but still managed to build the Zuse Z3. This was the third in a series of machines that he started in 1934. The Z3 was operational in 1941 and was program controlled by an external program coded on punched movie film, it had a memory and was constructed of relays.