Programabilitatea

ENIAC putea fi programat să efectueze secvențe complexe de operații, inclusiv bucle, ramificări și subrutine. Misiunea de a lua o problemă și de a programa mașina să o rezolve era complexă, și de regulă dura câteva săptămâni. După ce programul era dezvoltat pe hârtie, urma procesul de a introduce programul în ENIAC prin manevrarea cablurilor și comutatoarelor acestuia, etapă care mai dura câteva zile. După aceasta, urma o perioadă de verificare și de debugging, cu ajutorul capabilității de rulare „single step” a mașinii.
Cele șase femei care se ocupau de programarea ENIAC au fost introduse în 1997 în Women in Technology International Hall of Fame. În 1946, ele se numeau Kay McNulty⁠(d), Betty Jennings⁠(d), Betty Snyder⁠(d), Marlyn Wescoff⁠(d), Fran Bilas⁠(d) și Ruth Lichterman⁠(d).
ENIAC a fost un proiect unicat și nu a mai fost repetat. Înghețarea designului în 1943 a avut drept consecință mai multe lipsuri care nu făceau parte din proiect, mai ales inabilitatea de a stoca un program. Eckert și Mauchly au demarat lucru la un nou proiect, care ulterior a fost denumit EDVAC, care avea să fie și mai simplu și mai puternic. În particular, în 1944, Eckert a scris descrierea unei unități de memorie (linia de întârziere cu mercur) care avea să stocheze atât datele cât și programul. John von Neumann, care era consultant pentru Școala Moore pe proiectul EDVAC a luat parte la ședințele de la Școala Moore în care s-a dezvoltat conceptul de program stocat, și a scris un set de notițe (First Draft of a Report on the EDVAC⁠(d)—Prima schiță de raport asupra EDVAC) cu intenția de a-l folosi ca memorandum intern prin care se descrie și se elaborează în limbaj logic formal ideile dezvoltate în ședințe. Herman Goldstine a distribuit copii ale acestui raport mai multor instituții guvernamentale și educaționale, declanșând un interes larg privind construcția unei noi generații de mașini electronice de calcul, inclusiv EDSAC și SEAC⁠(d).
După 1948 mașinii ENIAC i s-au adus mai multe îmbunătățiri, printre care un mecanism de stocare read-only a programelor utilizând tablourile funcționale ca ROM de program, o idee inclusă în patentul ENIAC și propusă independent de Dr. Richard Clippinger de la BRL. Dick Clippinger s-a consultat cu John von Neumann asupra setului de instrucțiuni. Clippinger gândea o arhitectură cu 3 adrese în vreme ce von Neumann o arhitectură cu o adresă, mai simplu de implementat. Trei cifre ale unui acumulator (6) erau utilizate drept contor program, un alt acumulator (15)era cel principal, un al treilea (8) era utilizat ca pointer de adresă pentru citirea datelor din tablourile funcționale, și majoritatea celorlalte acumulatoare (1-5, 7, 9-14, 17-19) erau utilizate pentru stocarea datelor. Introducerea programului stocat pentru ENIAC era efectuată de Betty Jennings, Dick Clippinger și Adele Goldstine. Prima rulare a lui ENIAC cu program stocat a avut loc la 16 septembrie 1948, cu execuția unui program scris de Adele Goldstine⁠(d) pentru John von Neumann. Această modificare a redus viteza lui ENIAC de șase ori și a eliminat capabilitatea de calcul paralel, dar a redus și timpul de reprogramare de la ordinul zilelor la cel al orelor, și astfel pierderea de performanță a fost considerată acceptabilă. Datorită diferențelor între viteza electronicii de calcul și cea a dispozitivelor electromecanice de intrare/ieșire, aproape orice problemă practică din lumea reală era complet dependentă de timpul de intrare/ieșire, chiar dacă nu se utiliza paralelismul inițial al mașinii și chiar în condițiile vitezei reduse. La începutul lui 1952, s-a adăugat un registru rapid cu deplasare, care a îmbunătățit viteza deplasărilor de cinci ori. În iulie 1953, s-a adăugat o extensie de 100 de cuvinte de memorie principală, folosind reprezentarea BBCD⁠(d), excess-3⁠(d). Pentru a suporta această extensie, ENIAC a fost echipat cu un selector ale tablourilor funcționale, un selector de adrese de memorie, circuite de formare a impulsurilor.