Glen Beck (agter) en Betty Snyder (voor) programmeer die ENIAC.
**ENIAC**, afkorting vir **Electronic Numerical Integrator And Computer**, was die eerste algemeendoelige elektroniese rekenaar. Dit was die eerste hoë-spoed, Turingvolledige, digitale rekenaar wat herprogrammeer kon word om 'n reeks rekenkundige probleme op te los, terwyl vroeëre masjiene net sekere van die eienskappe gehad het. Die ENIAC is ontwerp en gebou deur die Amerikaanse Leër om artillerievuur-tabelle te bereken.

Die ENIAC was van onmiddelike belang. Met sy bekendstelling in 1946 is dit die "Enorme Brein" deur die media gedoop. Dit was 'n duisend keer vinniger as elektro-meganiese masjiene, 'n sprong in rekenkundige krag wat geen enkele masjien nog kon bereik nie. Die wiskundige vermoëns, gepaard met algemeendoelige programmering, het wetenskaplikes en industrialiste baie opgewonde gehad. Die uitvinders het dié nuwe idees versprei deur 'n reeks lesings aan te bied oor rekenaarargitektuur.

Die ENIAC se ontwerp en konstruksie is deur die Amerikaanse Leër gefinansier gedurende die Tweede Wêreldoorlog. Die konstruksiekontrak is geteken op 5 Junie 1943, en werk op die rekenaar het die volgende maand in die geheim begin onder die skuilnaam "Projek PX" deur die Universiteit van Pennsilvanië se Moore Skool van Elektriese Ingenieurswese. Die volledige masjien is onthul op 14 Februarie 1946 by die Universiteit van Pennsilvanië, en het $500 000 gekos. Dit is formeel deur die V.S. Weermagartillerie in diens geneem in Julie 1946. ENIAC is afgeskakel op 9 November 1946 vir opknappings en 'n geheue-opgradering, en is toe verskuif na die Aberdeen-toetsgronde, Maryland in 1947. Daar, op 29 Julie 1947, is dit weer aangeskakel en was dit in voortdurende gebruik tot 11:45 nm op 2 Oktober 1955.

Programmeerders Betty Jean Jennings (links) en Fran Bilas (regs) besig op die ENIAC se hoofkontrolepaneel by die Moore Skool van Elektriese Ingenieurswese. (Amerikaanse Weermag-foto van die argiewe van die ARL Tegniese biblioteek)
Die ENIAC is bedink en ontwerp deur John Mauchly en J. Presper Eckert van die Universiteit van Pennsilvanië. Die span ontwerpingenieurs wat met die ontwikkeling behulpsaam was, sluit in Bob Shaw (funksietabelle), Chuan Chu (deler/vierkantswortelberekenaar), Kite Sharpless (meesterprogrammeerder), Arthur Burks (vermenigvuldiger), Harry Huskey (leser/drukker), Jack Davis (akkumulators) en Iredell Eachus Jr.

Beskrywing
----------

Die ENIAC was 'n modulêre rekenaar, saamgestel uit individuele panele om verskillende funksies te verrig. Twintig van hierdie modules was akkumulators, wat nie net kon optel en aftrek nie, maar ook 'n tiensyfer desimale getal in hulle geheue kon stoor. Getalle was aangegee tussen twee eenhede oor 'n aantal algemeendoelige busse, of borde, soos dit genoem was. Om die hoë spoed te bereik moes die panele die getalle ontvang en aanstuur, bereken, die antwoord stoor, en die volgende stap aktiveer - alles sonder bewegende onderdele. Die sleutel tot sy veelsydigheid was die vermoë om te vertak; dit kon verskillende bewerkings, wat afhanklik was van die berekende resultaat, aktiveer.

Naas die spoed, was die mees merkwaardige kenmerk omtrent die ENIAC, die grootte en kompleksiteit daarvan. ENIAC het 17 468 vakuumbuise, 7 200 kristal diodes, 1 500 aflossers, 70 000 resistors, 10 000 kapasitors en ongeveer 5 miljoen handgesoldeerde soldeerlasse gehad. Dit het 27 ton geweeg, was rofweg 2,6 m by 0,9 m by 26 m, het 63 m² opgeneem, en het 150 kW krag verbruik. Invoer was moontlik deur 'n IBM kaartleser, en 'n IBM kaartpons was gebruik vir die uitvoer. Hierdie kaarte kon gebruik word om 'n aflyngedrukte uitvoer te lewer deur 'n IBM berekeningsmasjien te gebruik, byvoorbeeld die IBM 405.

ENIAC het tien-posisie ringtellers gebruik om syfers te stoor; elke syfer het 36 vakuumbuise gebruik, 10 daarvan was tweevoudige triodes vir die flip-floppe van die ringteller. Rekenkunde was uitgevoer deur die impulse "te tel" met die ringtellers en genereer dan dra-impulse as die teller "rondspring", die idee was om in elektronika die bewerking van die syferwiele van 'n meganiese optelmasjien na te maak. ENIAC het twintig tien-syfer getekende akkumulator wat tien-komplement voorstelling gebruik en kon 5 000 eenvoudige optel- en aftrekbewerkings doen tussen enige van hulle aan 'n bron (bv, nog 'n akkumulator, of 'n konstante seintoestel) elke sekonde. Dit was moontlik om 'n paar akkumulators aanmekaar te koppel en gelyktydig te hardloop. Die topspoed van die bewerking was dus moontlik baie hoër weens die parallelle verwerkings.

Kpl. Herman Goldstein (voorgrond) stel die skakelaars op een van ENIAC se funksie-eenhede by die Moore Skool van Elektriese Ingenieurswese. (Foto: Amerikaanse Leër)
Dit was moontlik om die oordrag van een akkumulator na 'n ander akkumulator te bedraad om met dubbele presisie rekenkundige bewerkings te doen, maar die akkumulator se draerstroombaan se tydsberekening het die bedrading van drie of meer akkumulators (vir hoër akkuraatheid) verhoed. Die ENIAC het vier van die akkumulators, wat deur 'n spesiale vermenigvuldiger-eenheid beheer is, gebruik om tot 385 vermenigvuldigingsbewerkings per sekonde te verrig. Die ENIAC het ook vyf van die akkumulators, wat deur 'n spesiale deler/magswortel-eenheid beheer is, gebruik om tot veertig deelbewerkings per sekonde of drie vierkantswortel-bewerkings per sekonde uit te voer.

Die ander nege eenhede in ENIAC was die aanskakeleenheid (wat die masjien begin en gestop het), die sirkulasieeenheid (wat gebruik word om die ander eenhede te sinchroniseer), die meesterprogrameerder (wat die lusvolgorde beheer), die leser (wat 'n IBM-ponskaartleser beheer), die drukker (wat 'n IBM-ponskaartdrukker beheer het), die voortdurende uitsaaier, en drie funksietafels.

Die verwysings deur Rojas en Hashagen gee meer besonderhede oor die tydverloop van operasies, wat ietwat van dié hierbo uiteengesit verskil. Die basiese masjien siklus was 200 mikrosekondes (20 siklusse van die 100 kHz in die sikluseenheid), of 5 000 siklusse per sekonde vir bedrywighede op die 10-syfer getalle. In een van hierdie siklusse kan ENIAC 'n getal na 'n register skryf, 'n getal van 'n register lees, of twee getalle byvoeg/aftrek. 'n Vermenigvuldiging van 'n 10-syfer getal deur 'n *d*-syfer getal (vir *d* tot 10) het *d* + 4 siklusse, so 'n 10-by-10-syfer vermenigvuldiging het 14 siklusse, of 2800 mikrosekondes geneem — 'n tempo van 357 per sekonde. As een van die getalle minder as 10-syfers gehad het, was die berekening vinniger. Deling en vierkantige wortels het 13 (*d* + 1) siklusse, waar *d* die aantal syfers is in die resultaat (kwosiënt of vierkantige wortel). So 'n deling of vierkantige wortel het tot 143 siklusse, of 28 600 mikrosekondes, 'n tempo van 35 per sekonde. p.20 bepaal dat 'n deling met 'n 10 syfer kwosiënt benodig 6 millisekondes. As die resultaat minder as tien syfers gehad het, is dit selfs vinniger bereken.