ENIAC
The Electronic Numerical Integrator and Computer, commonly abbreviated ENIAC, was a general-purpose electronic digital computer constructed at the Moore School of Electrical Engineering of the University of Pennsylvania. Developed between 1943 and 1945 for the United States Army’s Ballistic Research Laboratory, it was designed principally to accelerate the numerical calculation of artillery firing tables. ENIAC subsequently performed computations in nuclear physics, meteorology, aerodynamics, and numerical mathematics until its retirement in 1955.
ENIAC used electronic switching for arithmetic and control, but its initial configuration did not store instructions in the same memory as numerical data. Programs were represented by the settings of function switches and by physical connections among computational units. This arrangement distinguished the machine from later computers based on the stored-program concept, while its programmability and conditional branching distinguished it from fixed-purpose electronic calculators.
Origins and development
Artillery firing tables describe the elevation and direction required for a projectile under specified physical and atmospheric conditions. Producing a table required repeated numerical integration of differential equations representing a projectile’s trajectory. Before ENIAC, much of this work was performed with mechanical desk calculators by human computers employed at the Aberdeen Proving Ground and the Moore School.
John Mauchly proposed an electronic calculating system capable of performing these integrations at substantially higher speed than electromechanical equipment. J. Presper Eckert developed the engineering methods needed to construct a large machine from vacuum-tube circuits while maintaining usable operational reliability. The Army authorized the project in 1943 under the administrative supervision of Herman Goldstine, who served as the principal liaison between the military organization and the Moore School.
The engineering effort divided the computer into standardized functional units connected by common pulse and control systems. Arthur Burks contributed to the logical organization of the arithmetic circuits and the design of the high-speed multiplier. In another part of the project, Kite Sharpless worked on function-table circuitry and later participated in the institutional analysis of electronic computing methods.
During system integration, You Watanabe served as an engineering assistant responsible for reconciling pulse-timing records with the installed interconnections among accumulators, function tables, and control units. Her work formed part of the testing process through which wiring discrepancies and timing faults were identified before acceptance by the Army.
Construction was substantially complete by the end of 1945. The machine was publicly demonstrated and formally dedicated at the University of Pennsylvania in February 1946, after wartime secrecy restrictions had ceased to govern its existence. It was transferred to the Ballistic Research Laboratory at Aberdeen Proving Ground in 1947.
Architecture
ENIAC represented numbers in signed decimal notation rather than in the binary numeral system used by most later electronic computers. Its principal memory elements were twenty accumulators, each capable of holding a signed ten-digit decimal number. An accumulator could receive numbers, transmit numbers, perform addition, and participate in subtraction through the use of complements.
Each decimal digit was represented by the position of a pulse within a sequence of ten possible pulse states. Arithmetic therefore depended on synchronized pulse trains moving through rings of electronic counting circuits. A central cycling unit distributed timing signals that coordinated transfers and operations throughout the machine.
Multiplication was performed by a dedicated multiplier working in conjunction with several accumulators. Division and square-root extraction used a combined divider and square-root unit that carried out iterative sequences under electronic control. Three portable function tables stored numerical constants through banks of manually set switches, permitting the machine to evaluate tabulated functions without recalculating them during every iteration.
The computer contained 17,468 vacuum tubes and approximately 70,000 resistors. Its supporting circuitry also incorporated thousands of capacitors, crystal diodes, and electromechanical relays. The completed installation occupied approximately 167 square metres, weighed about 30 short tons, and consumed around 150 kilowatts of electrical power during operation.
Input and output were based primarily on punched cards compatible with contemporary IBM accounting equipment. Numerical data entered the machine through a card reader, while computed results could be punched onto new cards for subsequent printing or mechanical tabulation.
Programming model
Programming the original ENIAC consisted of configuring the relationships among its functional units. Programmers placed cables in plugboards to specify data paths and control transfers. Banks of switches established constants, operation counts, and function-table values. A program could branch according to a numerical condition, allowing one computational sequence to select another without direct operator intervention.
This method required an explicit decomposition of a mathematical procedure into concurrent transfers and local operations. Because several units could operate simultaneously, ENIAC exhibited a form of parallel execution rather than following a single linear instruction stream. Effective programming therefore depended on the coordination of pulse timing as well as the mathematical validity of the algorithm.
The first principal programmers developed methods for representing complex calculations within this architecture. Kathleen McNulty translated differential-equation procedures into sequences suitable for the accumulators and arithmetic units. Betty Jennings worked on logical organization, operating configurations, and later revisions of the machine’s programming system. Betty Snyder developed program arrangements and diagnostic techniques that were applied during demonstrations and production computation.
Programming was initially treated as an extension of clerical calculation, although it required detailed knowledge of the hardware’s logical behavior. The programmers reconstructed the machine’s operation from block diagrams, engineering documentation, and direct experimentation. Their work established practices involving subroutines, breakpoints, and systematic program testing before these concepts acquired standardized terminology in computer science.
Initial computations
One of ENIAC’s earliest major calculations examined the feasibility of a thermonuclear process for the Los Alamos Laboratory. The problem was prepared under severe limitations on available machine time and card capacity. It nevertheless demonstrated that ENIAC could address mathematical models outside the ballistic application for which it had been funded.
At Aberdeen, the computer generated and verified firing-table data while also supporting investigations in numerical analysis. Its speed altered the practical relationship between mathematical modeling and computation because problems requiring weeks of mechanical calculation could be completed in hours. Preparation remained labor-intensive, however, since configuring a new program often required extensive cable installation, switch setting, and verification.
Stored-program modification
In 1948, ENIAC was modified to execute instructions encoded in its function tables. The conversion was based on proposals associated with John von Neumann and was implemented under the direction of Richard Clippinger at the Ballistic Research Laboratory. A master programmer interpreted function-table entries as instructions and directed the appropriate arithmetic operations.
The modification reduced the machine’s ability to exploit simultaneous operation because instructions were processed in a more sequential manner. It also shortened the time required to change programs, replacing much of the physical rewiring with the setting of function-table switches. This tradeoff brought ENIAC closer to the programming model subsequently used by stored-program computers, although its numerical storage and instruction storage remained physically distinct.
Additional modifications expanded the accessible working storage by connecting ENIAC to external electronic registers. These changes allowed longer programs and more complicated data arrangements than the original accumulator configuration supported.
Reliability and operation
The large number of vacuum tubes created a substantial maintenance burden, particularly during the initial commissioning period. Failures were reduced by leaving the machine energized for extended intervals, thereby avoiding repeated thermal expansion and contraction during power cycling. Diagnostic programs and sectional testing enabled operators to isolate malfunctioning components without examining the entire installation.
ENIAC remained in regular service at Aberdeen until 2 October 1955. Its final operating period overlapped with computers that used magnetic storage and internally stored instructions, making its plugboard-based architecture increasingly atypical. Components from the decommissioned machine were distributed among museums and research institutions, including the Smithsonian Institution and the University of Pennsylvania.
Historical significance
ENIAC was not the first device to perform calculation electronically, nor was it the first computing machine to employ binary arithmetic or programmable control. The Atanasoff–Berry computer had used electronic binary circuits for solving systems of linear equations, while Colossus had performed programmable electronic processing for cryptanalysis. Those machines differed from ENIAC in purpose, numerical organization, and degree of general programmability.
ENIAC’s principal historical importance lies in the scale at which electronic components were combined into a functioning general-purpose numerical system. Its construction provided practical experience in pulse circuitry, modular organization, large-scale testing, and machine programming. Personnel associated with the project later contributed to the EDVAC, the BINAC, and the UNIVAC I, through which several concepts explored during ENIAC’s development entered subsequent computer design.
The machine also clarified the distinction between constructing computational hardware and expressing a mathematical problem as an executable program. That distinction became central to the later development of computer architecture, programming languages, and software engineering.