Istoria mașinilor de calcul

Istoria mașinilor de calcul cuprinde evoluția diverselor tehnici folosite de oameni pentru a efectua calcule matematice și a mașinilor și aparatelor fizice de care s-au folosit pentru acest scop. Multă vreme, aceste calcule se efectuau mintal, eventual cu ajutorul unor dispozitive simple, cum ar fi abacul și, din secolul al XVII-lea, rigla de calcul.
Primele mașini de calcul erau aparate mecanice, care efectuau calcule analogice. Un plan îndrăzneț pentru o astfel de mașină a fost cel al inginerului englez Charles Babbage, în anii 1820. Proiectul său pentru o mașină mecanică era însă mult mai complex decât orice alt dispozitiv realizat la acea vreme, și nu s-au putut realiza piese cu o precizie suficient de mare, și proiectul său a fost în cele din urmă abandonat. În acea perioadă a fost preluată o tehnologie folosită deja la mașinile muzicale și la războaiele de țesut, tehnologia cartelelor perforate, adaptată pentru mașinile de calcul, ca tehnică principală de programare. Tot atunci, au apărut primele mașini de calcul electrice, bazate pe simularea, cu ajutorul elementelor de circuit electric, a proprietăților sistemelor în care se efectuau calculele.
În prima jumătate a secolului al XX-lea, s-au răspândit diverse mărci de calculatoare de birou, cum ar fi Curta sau Friden și s-a început dezvoltarea primelor calculatoare electronice, cu ajutorul tuburilor electronice.
Bazele calculatoarelor moderne s-au pus, însă, în preajma celui de-al doilea război mondial. Alan Turing a descris în 1936 un model matematic care astăzi îi poartă numele și care rezumă funcționarea unei mașini de calcul programabile, iar Claude Shannon a arătat că orice funcție din algebra booleană poate fi implementată mecanic cu ajutorul unor circuite logice electronice. John von Neumann a descris și el, pe când lucra la proiectul EDVAC, arhitectura von Neumann, o schemă structurală de bază a calculatoarelor. Aproape toate calculatoarele moderne sunt construite din circuite logice, se bazează pe arhitectura von Neumann și implementează funcțional modelul mașinii Turing. În timpul celui de-al doilea război mondial, s-au construit calculatoare primitive pentru a calcula traiectoriile balistice și pentru a decripta comunicațiile inamicului și proiectele realizate au fost continuate și după război. Mai multe calculatoare din această primă generație candidează la titlul de „primul calculator modern”, printre care mașina Atanasoff-Berry (primul calculator electronic), calculatorul britanic Colossus (primul calculator electronic programabil), mașinile inginerului german Zuse (prima mașină Turing-completă) și mainframe-ul ENIAC (primul calculator generic). Primul calculator cu program stocat, funcționând în sistemul binar, Turing-complet și construit exclusiv din componente electronice a fost Manchester Small-Scale Experimental Machine, pornit în iunie 1948.
Inventarea tranzistorului a declanșat o perioadă în care calculatoarele, la început uriașe, scumpe și dificil de utilizat, au început să evolueze în sensul miniaturizării, al reducerii costurilor de producție și utilizare și al simplificării programării; în paralel cu unitățile de efectuare a calculelor matematice, s-au dezvoltat și noi tehnologii pentru stocarea datelor. Calculatoarele cu circuite semiconductoare din a doua generație au fost urmate de calculatoarele din a treia generație (cu circuite logice integrate) și din a patra generație (cu microprocesor integrat). Ulterior, mai multe calculatoare din centre universitare și de cercetare au fost interconectate într-o rețea care s-a dezvoltat apoi într-un Internet global. La începutul secolului al XXI-lea, calculatoarele sunt omniprezente, de la telefoane mobile până la sonde spațiale. Majoritatea calculatoarelor moderne sunt calculatoare electronice cu arhitectură von Neumann bazată pe electronică digitală, ca urmare a invenției tranzistorului.
La început, calculele dificile sau complexe erau efectuate de oameni al căror unic rol era acesta. Acești calculatori se ocupau de regulă de efectuarea calculelor unei expresii matematice, de exemplu pentru efemeride în astronomie, pentru navigație sau pentru tabelele de tragere în artilerie. Calculele acelor vremuri erau foarte specializate și costisitoare și necesitau ani de pregătire matematică.
De mii de ani s-a apelat la diverse invenții, pentru a face calculele mai simple, începând prin corespondența unu-la-unu cu degetele. Primul dispozitiv a fost probabil sub forma bețelor de numărat. Alte dispozitive pentru înregistrarea numerelor folosite în Cornul Abundenței erau formele de lut, care reprezentau numărul unor lucruri, probabil animale sau produse agricole, ținute în vase.
Abacul era folosit pentru calcule aritmetice încă din 2400 î.e.n.
Mai multe variante de calculatoare analogice au fost construite în antichitate și în evul mediu pentrua efectuarea de calcule astronomice. Printre acestea se numără mecanismul Antikythera și astrolabul din Grecia antică (c. 150–100 î.e.n.), acestea fiind considerate primele calculatoare analogice mecanice. Alte versiuni vechi de aparate mecanice utilizate pentru calcule au fost planisfera și invențiile lui Abū Rayhān al-Bīrūnī (c. 1000 e.n.); equatoriumul și astrolabul universal, independent de latitudine al lui Abū Ishāq Ibrāhīm al-Zarqālī (c. 1015 e.n.); calculatoarele analogice astronomice ale altor astronomi și ingineri din lumea arabă medievală; și turnul cu ceasul astronomic al lui Su Song (c. 1090 e.n.) din timpul dinastiei Song.
„Ceasul din castel”, un ceas astronomic inventat de Al-Jazari în 1206, este considerat a fi primul calculator analogic programabil. El afișa zodiacul, orbitele Lunii și Soarelui, un arătător în formă de semilună ce se deplasa de-a lungul unei porți determinând deschiderea automată a ușilor la fiecare oră, și cinci cântăreți sculptați care cântau când erau loviți cu o pârghie declanșată de un arbore cu came atașat unei roți cu apă. Durata zilei și a nopții putea fi reprogramată în fiecare zi pentru a trata schimbarea duratei zilei și nopții de-a lungul anului.
Matematicianul și fizicianul scoțian John Napier a notat că înmulțirea și împărțirea numerelor se pot efectua prin adăugarea, respectiv prin scăderea logaritmilor acestor numere. La generarea primelor tabele de logaritmi, Napier a avut nevoie să efectueze multe înmulțiri și în acest punct a proiectat oasele lui Napier, un dispozitiv similar abacului, utilizat pentru înmulțire și împărțire. Întrucât numerele reale pot fi reprezentate ca distanțe sau intervale pe o dreaptă, în anii 1620 a fost inventată rigla de calcul, pentru a mări semnificativ viteza de efectuare a operațiilor de înmulțire și împărțire. Riglele de calcul au fost utilizate de generații întregi de ingineri și de profesioniști în domeniile științelor exacte, până la inventarea calculatorului de buzunar. Inginerii ce lucrau la programul Apollo, proiectul de a trimite oameni pe lună, au efectuat multe din calculele lor cu ajutorul riglelor de calcul, care aveau o precizie de trei sau patru cifre semnificative.
Omul de știință german Wilhelm Schickard a construit primul calculator numeric mecanic în 1623. Întrucât calculatorul său folosea tehnici cum ar fi roțile dințate, dezvoltate inițial pentru ceasuri, acest calculator a fost denumit „ceas calculator”. A fost utilizat de prietenul lui Schickard, Johannes Kepler, care a revoluționat astronomia, formulând legile mișcării planetelor. La muzeul Zwinger se păstrează un calculator original al lui Pascal (1640). Au urmat mașinile lui Blaise Pascal (Pascaline, 1642) și Gottfried Wilhelm von Leibniz (1671). Leibniz a spus odată că „este nedemn de un om excelent să irosească ceasuri întregi trudind ca un sclav efectuând calcule pe care le-ar putea liniștit lăsa în seama altora dacă s-ar folosi mașini”
Pe la 1820, Charles Xavier Thomas a creat primul calculator mecanic produs în serie, aritmometrul Thomas, care putea efectua adunări, scăderi, înmulțiri și împărțiri. Calculatoarele mecanice, ca Addiator (zecimal), comptometrul, calculatoarele Monroe, Curta și Addo-X au continuat să fie folosite până în anii 1970. Leibniz a fost cel care a descris sistemul de numerație binar, principiu central al tuturor calculatoarelor moderne. Până în anii 1940, multe proiecte ulterioare (inclusiv mașinile lui Charles Babbage din anii 1800 și chiar ENIAC din 1945) s-au bazat pe sistemul zecimal; numărătoarele ENIAC emulau operarea roților cu cifre ale unei mașini mecanice de adunat.
În Japonia, Ryoichi Yazu a brevetat un calculator mecanic denumit aritmometru Yazu în 1903. Acesta consta dintr-un singur cilindru și 22 de roți dințate, și folosea sistemele mixte în bază 2 și 5, bine cunoscute de utilizatorii sorobanului (abacul japonez). Transportul și sfârșitul calculului se determinau automat. Acesta s-a vândut în peste 200 de exemplare, mai ales către agențiile guvernamentale cum ar fi Ministerul de Răzoi și stațiilor experimentale agricole. Yazu a investit profitul într-o fabrică ce urma să producă primul avion cu elice din Japonia, dar proiectul a fost abandonat după ce Yazu a murit la 31 de ani.
Încă din 1725, Basile Bouchon a folosit o buclă de hârtie perforată într-un război de țesut pentru a stabili șablonul reprodus pe materialele textile, iar în 1726 colaboratorul său Jean-Baptiste Falcon a îmbunătățit proiectul acestuia, utilizând cartele de hârtie perforate prinse una de alta pentru eficiență în adaptarea și modificarea programului. Războiul de țesut Bouchon-Falcon era semiautomat și necesita introducerea manuală a programului. În 1801, Joseph-Marie Jacquard a dezvoltat un război în care șablonul de țesut era controlat de cartele perforate. Seria de cartele putea fi schimbată fără schimbarea designului mecanic al războiului.
În 1833, Charles Babbage a trecut de la mașina diferențială la dezvoltarea unui model mai complet, motorul analitic, care se baza direct pe cartelele perforate ale lui Jacquard pentru programare. În 1835, Babbage și-a descris motorul analitic. Acesta era schița unui calculator generic programabil, care primea intrarea pe cartele perforate și era alimentat cu ajutorul unui motor cu aburi. O invenție importantă au reprezentat-o roțile dințate, ca înlocuitor al mărgelelor de la un abac. Ideea inițială a fost cea de a utiliza cartelele perforate pentru a controla o mașină care să calculeze și să tipărească tabele logaritmice cu o precizie foarte mare. Deși proiectul lui Babbage pentru motorul său analitic era unul riguros și planurile erau probabil corecte, sau cel puțin perfectibile, dezvoltarea a fost încetinită din mai multe motive. Babbage era o personalitate dificilă și intra în conflict cu oricine nu-i respecta ideile. Toate componentele mașinii analitice ar fi trebuit realizate manual. Toate micile erori de la fiecare piesă, cumulate, duceau la mari discrepanțe la o mașină cu mii de componente, complexitate ce impunea toleranță mult mai mică decât se practica la acea vreme. Proiectul s-a destrămat în dispute cu producătorii de piese și s-a încheiat fără succes după epuizarea fondurilor guvenamentale.
O replică a motorului diferențial II, un proiect anterior și mai limitat, este operațional din 1991 la London Science Museum. Cu câteva modificări triviale, el funcționează așa cum l-a proiectat Babbage și arată că acesta avea dreptate în teorie. Muzeul a utilizat mașini-unelte operate de calculator pentru a construi componentele necesare, respectând toleranțe pe care un mașinist al secolului al XIX-lea nu ar fi putut să le obțină. Nereușita lui Babbage poate fi atribuită dificultăților legate nu doar de finanțe și de politică, ci și de dorința lui permanentă de a adăuga noi și noi caracteristici în proiect. Pe urmele lui Babbage, deși fără cunoștință de munca acestuia, a călcat Percy Ludgate, un contabil din Dublin, Irlanda. El a proiectat separat un calculator mecanic programabil, pe care l-a descris într-o lucrare publicată în 1909.
Spre sfârșitul anilor 1880, Herman Hollerith a inventat o tehnică de înregistrare a datelor pe un mediu de pe care să fie ulterior citite de o mașină. Anterior, mașini care citesc medii de stocare fuseseră folosite pentru diferite automate, războaie de țesut sau mașini muzicale, dar nu pentru date. Hollerith a ajuns să folosească cartele peforate după ce a observat cum înregistrează conductorii de tren caracteristicile personale ale fiecărui pasager pe biletele acestora. Pentru prelucrarea acestor cartele perforate, cunoscute drept „cartele Hollerith”, el a inventat tabulatorul și mașina perforatoare. Aceste trei invenții au format bazele industriei moderne de prelucrarea informației. Mașinile lui foloseau relee mecanice (și solenoizi) pentru incrementarea numărătoarelor mecanice. Metoda lui Hollerith a fost utilizată cu ocazia recensământului din 1890 din Statele Unite, iar rezultatele finale au fost „... definitivate cu mai multe luni înainte de termen, cu costuri mult mai mici decât cele estimate”. Compania lui Hollerith a stat la baza IBM. IBM a transformat tehnologia de perforare a cartelelor într-o unealtă puternică pentru prelucrarea de date și a produs o linie extinsă de unit record equipment. Până la 1950, cartelele IBM erau omniprezente în industrie și în instituțiile publice. Pe majoritatea cartelelor ce trebuia să circule ca documente era scris avertismentul Do not fold, spindle or mutilate, (Nu împăturiți, nu înțepați și nu mutilați), care a devenit un motto al perioadei de după al Doilea Război Mondial.
Articolele lui Leslie Comrie despre metodele cu cartele perforate și articolul Punched Card Methods in Scientific Computation de W.J. Eckert din 1940 descriau tehnici suficient de avansate pentru a rezolva și ecuații diferențiale sau pentru a efectua înmulțiri și împărțiri cu reprezentări în virgulă mobilă, toate pe cartele perforate.
Programarea calculatoarelor în era cartelelor perforate avea ca element principal centrele de calcul. Utilizatorii, de exemplu, studenți la facultățile tehnice și științifice, își depuneau temele la centrul de calcul sub formă de cartele perforate, fiecare cartelă reprezentând o linie de cod. După aceea, ei trebuiau să aștepte rândul programului lor să fie prelucrat, compilat și executat. După un timp, rezultatele tipărite, marcate cu datele de identificare ale autorului, se depuneau la un ghișeu al centrului de calcul. În multe cazuri, aceste rezultate erau compuse doar dintr-un mesaj de eroare, privind sintaxa limbajului etc., obligând autorul să efectueze un nou ciclu de editare-compilare-rulare. Cartele perforate se mai utilizează încă, iar dimensiunile lor distinctive (Hollerith a gândit dimensiunea cartelelor perforate pentru ca ele să încapă în cutiile metalice în care se țineau bancnote de un dolar din acea perioadă, mai mari decât cele de astăzi) mai pot fi recunoscute în formulare, date vechi și în programe din toată lumea.
Până în secolul al XX-lea, calculatoarele mecanice, casele de marcat, mașinile contabile, au fost reproiectate în sensul utilizării motoarelor electrice, poziția roților dințate reprezentând starea unei variabile. În preajma anilor 1920, interesul lui Lewis Fry Richardson pentru prognozarea vremii l-a făcut să propună utilizarea analizei numerice de către calculatori pentru modelarea fenomenelor meteorologice; la începutul secolului al XXI-lea, sunt necesare cele mai puternice calculatoare de pe Pământ pentru o modelare adecvată a atmosferei cu ajutorul ecuațiilor Navier-Stokes. Începând cu anii 1930, mai multe companii, precum Friden, Marchant Calculator și Monroe au realizat calculatoare de birou capabile să efectueze adunări, scăderi, înmulțiri și împărțiri. În timpul proiectului Manhattan, viitorul laureat al premiului Nobel Richard Feynman a supervizat o echipă de matematicieni calculatori, printre care multe femei, care înțelegeau ecuațiile diferențiale ce trebuiau rezolvate. Chiar și renumitul Stanisław Ulam a fost forțat muncească la transformarea formulelor matematice în aproximații calculabile pentru bomba cu hidrogen, după război.
În 1948, a fost introdus Curta, un calculator mecanic mic, portabil de dimensiunea unei râșnițe de piper. În anii 1950 și 1960 au apărut pe piață mai multe mărci de mașini de calcul. Primul calculator de birou electronic a fost calculatorul de fabricație britanică ANITA Mk.VII, care utiliza un afișaj cu tuburi Nixie și 177 de tiratroane miniaturizate. În iunie 1963, Friden a introdus mașina EC-130 cu patru funcții. Aceasta costa 2200 de dolari și fusese proiectată folosind numai tranzistoare, avea o capacitate de 13 digiți și un afișaj CRT de 130 mm, și a introdus forma poloneză inversă. Modelul ulterior EC-132 a adăugat funcționalitatea de calcul a rădăcinii pătrate și cea a inversării funcțiilor. În 1965, Laboratoarele Wang au produs LOCI-2, un calculator de birou cu 10 digiți care utiliza un afișaj cu tuburi Nixie și putea calcula logaritmi.
Înaintea celui de-al doilea război mondial, calculatoarele analogice mecanice și electrice erau considerate state of the art. Calculatoarele analogice profită de similitudinile dintre matematica proprietăților microscopice—poziția și mișcarea roților sau potențialul și curentul electric—și matematica altor fenomene fizice, de exemplu, traiectoriile balistice, inerția, rezonanța, transferul de energie, impulsul. Ele modelează fenomene fizice cu ajutorul tensiunilor electrice și al curenților electrici drept cantități analogice.
În esență, aceste sisteme analogice funcționează prin crearea unor circuite electrice corespondente ale altor sisteme, ceea ce permite utilizatorilor să prezică comportamentul acelor sisteme de interes prin observarea corespondentelor lor analogice. Cea mai utilă dintre aceste analogii a fost modul în care comportamentul la scară microscopică se poate reprezenta prin ecuații diferențiale și integrale, și ar putea fi astfel utilizat pentru a rezolva acele ecuații. Un exemplu de astfel de mașină, care folosea apa drept cantitate analogică, a fost integratorul cu apă construit în 1928; un exemplu electric îl constituie mașina Mallock, construită în 1941. Un planimetru este un dispozitiv ce calculează integrale, folosind distanța drept cantitate analogică. Până în anii 1980, sistemele HVAC au utilizat aer atât drept cantitate analogică, cât și ca element de control. Spre deosebire de calculatoarele numerice moderne, calculatoarele analogice nu sunt foarte flexibile, și trebuie reconfigurate (reprogramate) manual pentru a le trece de la rezolvarea unei probleme la alta. Calculatoarele analogice aveau, față de primele calculatoare numerice, avantajul că puteau fi utilizate pentru a rezolva probleme complexe folosind analogii comportamentale, pe când primele tentative pe calculatoarele numerice au fost foarte limitate.
Deoarece calculatoarele erau ceva rar în acea perioadă, soluțiile erau adesea hardcodate în forme de hârtie cum ar fi nomogramele, care puteau produce soluții analoage ale acestor probleme, cum ar fi distribuția presiunilor si temperaturilor într-un sistem de încălzire. Unele dintre cele mai larg utilizate calculatoare analogice conțineau dispozitive pentru țintire, cum ar fi sistemul de ghidare a bombardamentelor Norden și sistemele de control al tragerilor. Unele au continuat să fie folosite zeci de ani după al doilea război mondial; calculatorul de control al tragerilor Mark I a fost folosit de marina Statelor Unite pe mai multe nave de la distrugătoare la cuirasate. Printre alte calculatoare analogice s-a numărat Heathkit EC-1, și calculatorul hidraulic MONIAC, folosit pentru modelarea fluxurilor econometrice.
Știința calculatoarelor analogice a atins apogeul cu analizorul diferențial, inventat în 1876 de către James Thomson și construit de H. W. Nieman și Vannevar Bush la MIT începând cu 1927. S-au fabricat doar câteva astfel de dispozitive; cel mai puternic dintre ele a fost construit la Școala Moore de Inginerie Electrică de la Universitatea Pennsylvania, unde s-a construit ulterior și ENIAC. Calculatoarele electronice numerice, cum ar fi ENIAC au reprezentat sfârșitul majorității mașinilor analogice de calcul, deși s-a continuat să se mai folosească în aplicații specializate unele calculatoare analogice hibride, controlate de electronică digitală, de-a lungul anilor 1950 și 1960.
Era modernă a mașinilor de calcul a început cu o frenezie a dezvoltării în perioada dinainte de și după al doilea război mondial, când componentele electronice (la acea vreme, relee, rezistoare, condensatoare, bobine, și tuburi electronice) au înlocuit echivalentele lor mecanice, și calculul digital a înlocuit calculul analogic. Mașini cum ar fi Z3, calculatorul Atanasoff–Berry, calculatoarele Colossus și ENIAC au fost construite manual cu ajutorul circuitelor ce conțineau relee sau tuburi electronice, și adesea foloseau cartelele sau benzile perforate ca dispozitiv de intrare și ca mediu de stocare.
În această perioadă, s-au produs mai multe mașini cu capabilități din ce în ce mai vaste. La început, nu exista nimic care să semene măcar cu un calculator modern, în afara planurilor pierdute ale lui Charles Babbage și în afara ideilor teoretice ale lui Alan Turing. La sfârșitul acestei perioade, s-au construit dispozitive cum ar fi calculatoarele Colossus și EDSAC, unele din primele calculatoare electronice numerice, dar niciun moment nu este unanim considerat a fi momentul nașterii calculatoarelor numerice.
Lucrarea lui Alan Turing din 1936 s-a dovedit extrem de influentă în domeniile informaticii și științei calculatoarelor. Scopul principal a fost cel de a demonstra că există probleme (și anume problema opririi) care nu pot fi rezolvate de niciun proces secvențial. Prin aceasta, Turing a dat o definiție a calculatorului universal care execută un program stocat pe o bandă. Această construcție a ajuns să fie denumită mașina Turing; ea a înlocuit limbajul universal, mult mai complex și bazat pe aritmetică, al lui Kurt Gödel. În afara limitarilor impuse de spațiul finit de stocare, calculatoarele moderne sunt denumite Turing-complete, adică au o capabilitate de a executa algoritmi echivalentă cu cea a mașinii Turing universale.
Pentru ca o mașină de calcul să fie un calculator universal, trebuie să existe un mecanism convenabilde citire-scriere, cum ar fi banda perforată. Cunoscând modelul teoretic al mașinii universale de calcul a lui Alan Turing, John von Neumann a definit o arhitectură ce utilizează aceeași memorie atât pentru stocarea programelor cât și a datelor: practic toate calculatoarele moderne utilizează această arhitectură (sau una derivată din ea). Deși, din punct de vedere teoretic, după cum a arătat și proiectul lui Babbage, se poate implementa un calculator complet mecanic, electronica a făcut posibilă viteza și gradul de miniaturizare ce caracterizează calculatoarele moderne.
În perioada celui de-al doilea război mondial, au existat trei fluxuri paralele de dezvoltare a tehnologiei calculatoarelor, din care unul a fost complet ignorat, iar al doilea a fost ținut secret în mod deliberat. Cel ignorat a fost reprezentat de munca germanului Konrad Zuse. Cel de-al doilea a fost dezvoltarea secretă a calculatoarelor Colossus în Regatul Unit. Niciuna dintre acestea nu a avut o influență deosebită asupra diverselor proiecte similare din Statele Unite. Al treilea flux de dezvoltare a fost și cel mai mediatizat, și a fost reprezenta de mașinile ENIAC și EDVAC ale lui Eckert și Mauchly.
În timp ce lucra la Laboratoarele Bell în noiembrie 1937, George Stibitz a inventat și a construit un calculator cu relee, denumit „Model K” (de la kitchen table–masă de bucătărie, pe care a efectuat asamblarea), care a fost primul care a efectuat calcule în formă binară.
Izolat, în Germania, Konrad Zuse a demarat în 1936 construcția primului calculator din seria Z, calculatoare cu memorie și programabile (inițial, programabilitatea era foarte restrânsă). Calculatorul Z1, pur mecanic, dar care lucra în binar, a fost finalizat în 1938 și nu a funcționat niciodată corect din cauza unor probleme în ce privește precizia unor piese.
Mașina ulterioară a lui Zuse, Z3, a fost terminată în 1941. Ea se baza pe relee telefonice și nici ea nu funcționa satisfăcător. Totuși, structura lui era întrucâtva similară mașinilor moderne, putând efectua și operații în virgulă mobilă. Înlocuirea sistemului zecimal folosit anterior de Babbage, și dificil de implementat cu sistemul binar a avut ca efect simplificarea construcției mașinii și creșterea fiabilității în condițiile tehnologiilor disponibile la acea dată.
Programele erau introduse în calculatorul Z3 pe filme perforate. Saltul condiționat lipsea, dar în anii 1990 s-a demonstrat teoretic că Z3 era totuși o implementare de mașină Turing. Prin două cereri de patentare, în 1936, Konrad Zuse a anticipat și că instrucțiunile mașinii vor putea fi stocate în același spațiu cu datele – amănunt-cheie în ceea ce ulterior a devenit arhitectura von Neumann care a fost implementată pentru prima oară în mașina britanică EDSAC (1949). Zuse a susținut și că a proiectat primul limbaj de programare de nivel înalt, (Plankalkül), în 1945 (publicat în 1948) deși acesta a fost implementat pentru prima oară în 2000 de o echipă condusă de Raúl Rojas de la Universitatea Liberă Berlin – la cinci ani după moartea lui Zuse.
Zuse a întâmpinat dificultăți în timpul celui de-al doilea război mondial, când unele dintre mașinile sale au fost distruse de campaniile de bombardamente ale Aliaților. Munca sa a fost multă vreme necunoscută de inginerii din Regatul Unit și din SUA, deși IBM avea informații despre ea, și a finanțat compania lui Zuse în 1946, în schimbul unei opțiuni pentru patentele obținute de acesta.
În timpul celui de-al doilea război mondial, la Bletchley Park (la 64 km nord de Londra) britanicii au repurtat mai multe succese în descifrarea comunicațiilor militare criptate ale Germaniei. Mașina germană de criptare, Enigma, a fost atacată cu ajutorul unor mașini electromecanice denumite Bombe. Mașinile Bombe, proiectate de Alan Turing și Gordon Welchman, după mașina criptografică poloneză Bomba a lui Marian Rejewski (1938) au început să fie utilizate în 1941. Acestea eliminau din setările posibile ale mașinii Enigma efectuând serii de deducții logice implementate electric. Majoritatea posibilităților conduceau la contradicții, iar cele puține care mai rămâneau puteau fi verificate manual.
Germanii au dezvoltat și alte sisteme de criptare diferite de Enigma. Mașina Lorenz SZ 40/42 a fost utilizată pentru comunicații militare la nivel înalt, denumite de către britanici Tunny. Primele interceptări de mesaje Lorenz au avut loc în 1941. Ca parte dintr-un atac asupra cifrurilor Tunny, profesorul Max Newman și colegii săi au ajutat la scrierea specificațiilor calculatorului Colossus. Colossus Mk I a fost construit între martie și decembrie 1943 de Tommy Flowers și colegii săi de la Post Office Research Station de la Dollis Hill din Londra și a fost livrat la Bletchley Park în ianuarie 1944.
Colossus a fost prima mașină de calcul complet electronică. Ea utiliza un număr foarte mare de tuburi electronice. Primea datele de intrare pe bandă de hârtie și putea fi configurată să efectueze diferite operații din logica booleană, nefiind însă Turing-completă. S-au construit nouă exemplare de Colossus Mk II și singurul exemplar de Mk I a fost îmbunătățit și transformat și el într-un Mk II. Detaliile despre existența, proiectarea, și utilizarea lor au fost păstrate secret până în anii 1970. Winston Churchill personal a ordonat ca ele să fie dezmembrate în componente nu mai mari decât mâna unui om. Din cauza acestor constrângeri, calculatoarele Colossus nu au apărut în multe istorii ale calculatoarelor. O copie reconstruită a unei mașini Colossus este expusă la Bletchley Park.
În 1937, Claude Shannon a arătat că există o corespondență unu-la-unu între conceptele logicii booleene și anumite circuite electrice, care astăzi poartă numele de porți logice, și sunt omniprezente în calculatoarele numerice. În lucrarea sa de masterat de la MIT, pentru prima dată în istorie, Shannon a arătat că releele și comutatoarele electronice pot calcula expresii de algebră booleană. Intituată A Symbolic Analysis of Relay and Switching Circuits (O analiză simbolică a releelor și circuitelor de comutație), teza lui Shannon a pus bazele proiectării practice a circuitelor numerice. George Stibitz a realizat un calculator pe bază de relee, denumit de el Model K pentru Laboratoarele Bell în noiembrie 1937. Laboratoarele Bell au autorizat un program complet de cercetare condus de Stibitz spre sfârșitul lui 1938. Proiectul Complex Number Calculator, terminat la 8 ianuarie 1940, putea face calcule cu numere complexe. Într-o demonstrație la conferința American Mathematical Society de la Dartmouth College în ziua de 11 septembrie 1940, Stibitz a reușit să trimită comenzi la distanță mașinii Complex Number Calculator prin liniile telefonice cu ajutorul unui teletype. A fost prima mașină de calcul folosită vreodată la distanță. Printre participanții la conferință care au fost de față la demonstrație s-au numărat John von Neumann, John Mauchly și Norbert Wiener, care au scris despre aceasta în memoriile lor.
În 1939, John Vincent Atanasoff și Clifford E. Berry de la Iowa State University au dezvoltat Calculatorul Atanasoff–Berry (Atanasoff–Berry Computer, ABC), Proiectul a folosit peste 300 de tuburi electronice cu vid și folosea condensatoare fixate într-un tambur mecanic rotativ pe post de memorie. Deși mașina ABC nu era programabilă, a fost prima care a avut un sumator cu tuburi electronice. ABC a rămas un proiect uitat până când a devenit motivul procesului Honeywell v. Sperry Rand, care a invalidat patentul ENIAC (și câteva altele), printre altele, pentru că lucrările lui Atanasoff l-au precedat.
În 1939, a început, în laboratoarele Endicott de la IBM, dezvoltarea mașinii Harvard Mark I. Cunoscut oficial sub numele de Automatic Sequence Controlled Calculator (Calculator Controlat cu Secvență Automată), Mark I a fost un calculator electromecanic construit cu finanțare de la IBM și cu asistență din partea personalului IBM, sub conducerea matematicianului Howard Aiken de la Harvard. Proiectul său a fost influențat de mașina analitică a lui Babbage, folosea aritmetică în baza 10 și avea roți de stocare și comutatoare rotitoare în plus față de releele electromagnetice. Se putea programa cu o bandă de hârtie perforată, și conținea mai multe unități de calcul ce lucrau în paralel. Versiunile ulterioare conțineau mai mult ecititoare de bandă perforată, iar mașina putea comuta între dispozitivele de intrare pe baza unei condiții. Cu toate acestea, mașina nu era chiar Turing-completă. Mark I a fost mutat la Universitatea Harvard și a început să funcționeze în mai 1944.
ENIAC (Electronic Numerical Integrator and Computer–Calculator Și Integrator Electronic Numeric), construit în SUA, a fost primul calculator electronic generic. El combina, pentru prima dată, viteza mare a componentelor electronice cu posibilitatea programării pentru probleme mai complexe. Putea efectua 5000 de operații de adunare și scădere pe secundă, fiind de o mie de ori mai rapid decât alte mașini care efectuau aceste operații. Avea și module pentru înmulțire, împărțire și rădăcină pătrată. Memoria de mare viteză era limitată la 20 de cuvinte (aproximativ 80 de octeți.) Construit sub conducerea lui John Mauchly și J. Presper Eckert la Universitatea Pennsylvania, dezvoltarea și construcția lui ENIAC au durat din 1943 până la sfârșitul lui 1945. Mașina era uriașă, cântărea 30 de tone, și conținea peste 18.000 de tuburi. Una dintre marile realizări inginerești ale mașinii era minimizarea arderii tuburilor, problemă comună la acea vreme. Mașina a fost utilizată aproape permanent de-a lungul următorilor zece ani.
ENIAC era în mod clar un dispozitiv Turing-complet. Putea calcula orice problemă care putea încăpea în memorie. Un „program” de pe ENIAC, însă, era definit prin conexiunile cablurilor și prin comutatoare sale, fiind foarte departe de mașinile electronice cu program stocat care au evoluat din el. Odată scris un program, el trebuia să fie introdus manual.
Chiar înainte de finalizarea lui ENIAC, Eckert și Mauchly au recunscut limitările acestuia și au demarat proiectul unui calculator cu program stocat, EDVAC. John von Neumann este autorul unui raport care descria proiectul EDVAC în care atât programul cât și datele de lucru aveau să fie stocate într-un singur spațiu unificat. Acest proiect simplu, denumit arhitectura von Neumann, avea să constituie baza dezvoltării tuturor succesoarelor lui ENIAC din toată lumea. În cadrul acestei generații, spațiul temporar de stocare consta din linii cu întârziere, care foloseau timpul de propagare a sunetului printr-un mediu, cum ar fi mercurul lichid (sau un cablu) pentru a stoca datele temporar. O serie de impulsuri acustice sunt trimise de-a lungul unui tub; după un timp, când impulsul ajunge la capătul tubului, circuitele electronice detectau dacă acel impuls reprezintă un 1 sau un 0 și determinau oscilatorul să-l retransmită. Alte mașini foloseau tuburi Williams, care se bazau pe proprietatea unui tub catodic de a stoca și accesa date. Până în 1954, memoriile cu ferite începuseră să înlocuiască alte forme de mecanisme de stocare temporară, și au dominat acest domeniu până spre jumătatea anilor 1970.
EDVAC a fost primul calculator cu program stocat care a fost proiectat, dar nu a fost primul care a funcționat. Eckert și Mauchly au părăsit proiectul, iar construcția acestuia a întârziat. Prima mașină von Neumann funcțională a fost Manchester „Baby” sau Small-Scale Experimental Machine, dezvoltată de Frederic C. Williams și Tom Kilburn la Universitatea Manchester în 1948; Ea a fost urmată în 1949 de calculatorul Manchester Mark 1, un sistem complet, cu tuburi Williams și memorie cu tambur magnetic, și care a introdus registrele index. Alt pretendent la titlul de „primul calculator numeric cu program stocat” a fost EDSAC, proiectat și construit la Universitatea Cambridge. Pus în funcțiune la mai puțin de un după Manchester „Baby”, EDSAC era inspirat din planurile lui EDVAC (Electronic Discrete Variable Automatic Computer), succesorul lui ENIAC; aceste planuri erau deja întocmite în momentul când a fost realizat ENIAC. Spre deosebire de ENIAC, care folosea prelucrarea paralelă, EDVAC utiliza o singura unitate de prelucrare. Acest design era mai simplu și a fost primul implementat în fiecare etapă de miniaturizare care a urmat. Mașina Universității din Manchester University a devenit prototipul pentru Ferranti Mark I. Prima mașină Ferranti Mark I a fost livrată Universității în luna februarie 1951 și, între 1951 și 1957 s-au mai vândut încă cel puțin nouă.
Primul calculator programabil universal din URSS a fost creat de o echipă de oameni de știință sub conducerea lui Serghei Alexeievici Lebedev de la Institutul de Electrotehnologie Kiev. Calculatorul, denumit MESM (МЭСМ, Mică Mașină Electronică de Calcul) a devenit operațional în 1950. El avea aproximativ 6000 de tuburi electronice și un consum de 25 kW. Putea efectua aproximativ 3000 de operații pe secundă. Printre primele calculatoare s-a numărat și CSIRAC, un proiect australian care și-a rulat primul program de test în 1949. CSIRAC este cel mai vechi calculator care încă mai funcționează și a fost primul care a fost utilizat pentru ascultarea de muzică în format digital.
În octombrie 1947, directorii J. Lyons & Company, o companie britanică de catering celebră pentru cafenelele sale și interesată în tehnicile noi de gestiune, a decis să se implice activ în promovarea dezvoltării comerciale a calculatoarelor. Până în 1951, calculatorul LEO I era operațional și a rulat primul job de rutină al unui calculator comercial. La 17 noiembrie 1951, compania J. Lyons a demarat rularea săptămânală a unei operațiuni de evaluări financiare pe piața produselor de brutărie pe LEO (Lyons Electronic Office). Aceasta a fost prima aplicație comercială funcțională bazată pe un calculator cu program stocat.
În iunie 1951, UNIVAC I (Universal Automatic Computer) a fost livrat Biroului de Recensăminte al Statelor Unite. Remington Rand a vândut 46 de mașini la prețuri de peste 1 milion de dolari bucata. UNIVAC a fost astfel primul calculator produs în serie; toate predecesoarele sale fuseseră unicate, sau în serii extrem de limitate. El utiliza 5200 de tuburi electronice și avea un consum de 125 kW. Folosea o memorie cu linii de întârziere cu mercur capabilă să stocheze 1000 de cuvinte de câte 11 cifre zecimale plus semn (lungime echivalentă în binar cu 72 biți. O caracteristică esențială a sistemului UNIVAC a fost un nou tip de bandă magnetică metalică, și o unitate de bandă de mare viteză, pentru stocare pe mediu nevolatil.
În 1952, IBM a anunțat public mașina electronică de prelucrare a datelor IBM 701, prima din seria IBM 700/7000 și primul calculator IBM mainframe. IBM 704, introdus în 1954, utiliza memorie cu ferite, care a devenit standard la mașinile mari. Primul limbaj de programare generic de nivel înalt care a fost implementat vreodată, Fortran, era dezvoltat și la IBM pentru 704 în 1955–1956 și a fost lansat la începutul lui 1957. În 1955 s-a format un grup de utilizatori voluntari pentru a face schimb de experiență și de software pentru IBM 701; acest grup, care există și în anii 2000, a fost un precursor al comunităților open source.
IBM a introdus în 1954 un calculator mai mic și mai ieftin care s-a dovedit foarte popular. IBM 650 cântărea peste 900 kg, sursa de alimentare atașată cântarea aproximativ 1350 kg și cele două părți stăteau în două dulapuri separate, de aproximativ 1 , 5 × 0 , 9 × 1 , 8 {\displaystyle 1,5\times 0,9\times 1,8} metri. Costa 500.000 de dolari și putea fi închiriat pentru 3500 de dolari pe lună. Memoria sa cu tamburi putea stoca inițial doar 2000 de cuvinte de zece cifre, iar programarea sa era extrem de dificilă și importantă pentru o utilizare eficientă. Astfel de limitări de memorie aveau să domine programarea timp de zeci de ani după aceea, până când capabilitățile hardware au evoluat și au permis un model de programare mai simplu.
În 1955, Maurice Wilkes a inventat microprogramarea, care permite definirea unui set de instrucțiuni de bază ce poate fi extins prin unele programe denumite astăzi firmware sau microcod. Acest concept a fost utilizat în procesoarele și în unitățile de virgulă mobilă ale mainframe-urilor și ale altor calculatoare, cum ar fi cele din seria IBM 360.
În 1956, IBM a vândut primul sistem de stocare pe disc magnetic, RAMAC (Random Access Method of Accounting and Control). Acesta utiliza 50 de discuri metalice de 610 mm, cu 100 de piste pe fiecare față. Acesta putea stoca 5 megaocteți de date și costa 10.000 de dolari pe megaoctet. La nivelul anului 2008, unitățile de stocare pe suport magnetic, sub formă de hard diskuri, costau mai puțin de o cincizecime de cent pe megaoctet.
În a doua jumătate a anilor 1950, tranzistoarele bipolare (TBIP) au înlocuit tuburile electronice. Utilizarea lor a dat naștere calculatoarelor de a doua generație. Inițial, se credea că se vor produce și se vor utiliza foarte puține calculatoare la nivel mondial. Aceasta se datora dimensiunilor, costurilor, și priceperii necesare pentru a le folosi și pentru a interpreta rezultatele. Tranzistoarele au redus masiv dimensiunea calculatoarelor, costul inițial și cel de operare. Tranzistoarele bipolare au fost inventate în 1947 și americanii John Bardeen, Walter Brattain și William Shockley au primit în 1956 Premiul Nobel pentru Fizică pentru această realizare. Dacă prin joncțiunea emitor-bază a unui tranzistor bipolar nu circulă curent, atunci nu circulă curent nici între colector și emitor (iar tranzistorul este blocat). Dacă circulă un curent suficient de mare prin joncțiunea bază-emitor, trece curent și între emitor și colector (tranzistorul fiind saturat). Saturația sau blocarea unui tranzistor reprezintă cifrele binare 0 și 1. Prin comparație cu tuburile electronice, tranzistoarele prezintă numeroase avantaje: au costuri de fabricație mult mai mici și sunt mult mai rapide, comutarea între stările de 1 și 0 consumând un timp de ordinul micro- sau nanosecundelor. Volumul tranzistoarelor era de ordinul milimetrilor cubi, prin comparație cu tuburile electronice de ordinul centimetrilor cubi. Temperatura mai joasă de funcționare a tranzistoarelor le conferă o fiabilitate mai mare, prin comparație cu tuburile electronice. Calculatoarele cu tranzistoare puteau acum să fie dotate cu zeci de mii de circuite logice binare într-un spațiu relativ compact.
Calculatoarele de a doua generație erau compuse dintr-un mare număr de plăci cu cablaje imprimate, cum ar fi IBM Standard Modular System fiecare cu 1–4 porți logice sau bistabili. Un calculator din a doua generație, IBM 1401, a reușit să câștige aproape o treime din piața mondială de tehnică de calcul. IBM a instalat peste o sută de mii de 1401 între 1960 și 1964.
Electronica cu tranzistoare a dus la îmbunătățirea nu doar a procesoarelor, ci și a dispozitivelor periferice. IBM 350 RAMAC a fost introdus în 1956 și a fost primul hard-disk din lume. Unitățile de stocare pe disc magnetic din a doua generație de calculatoare puteau stoca zeci de milioane de litere și cifre. La procesor se puteau conecta mai multe periferice, capacitatea totală de memorare crescând la ordinul sutelor de milioane de caractere. Pe lângă unitățile fixe de stocare, conectate la procesor prin legături de mare viteză, au apărut și unități de disc deconectabil. Astfel, o stivă de discuri se putea înlocui în câteva secunde cu o alta. Deși capacitatea unui disc deconectabil este mai mică decât cea a unui disc fix, interșanjabilitatea lor garantează disponibilitatea unei cantități cvasinelimitate de date. Pe de altă parte, banda magnetică a continuat să furnizeze capabilități de arhivare a datelor cu costuri mai reduse decât discurile.
Mai multe procesoare din a doua generație delegau comunicațiile periferice unui procesor secundar. Astfel, în timp ce procesorul de comunicație controla, de exemplu citirea și perforarea de cartele, procesorul principal executa calcule și instrucțiuni de ramificație. O magistrală de date ducea datele de la procesorul principal și memoria principală cu viteza ciclului de fetch-execute a procesorului, iar celelalte magistrale de date deserveau dispozitivele periferice. Pe PDP-1, ciclul memoriei era de 5 microsecunde; astfel, majoritatea instrucțiunilor aritmetice durau 10 microsecunde (100.000 de operații pe secundă) deoarece majoritatea operațiilor durau cel puțin două cicluri de memorie: unul pentru aducerea instrucțiunii, celălalt pentru aducerea operanzilor.
În timpul celei de-a doua generații, au început să fie folosite din ce în ce mai mult terminalele la distanță, adesea sub formă de mașini teletype. Conexiunile telefonice furnizau viteză suficientă pentru primele terminale la distanță și permiteau o separare între centrul de calcul și stațiile de lucru de sute de kilometri.
Explozia gradului de utilizare a calculatoarelor a început cu cele din a treia generație. Acestea se bazau pe invenția circuitului integrat de către Jack St. Clair Kilby și independent de Robert Noyce, tehnologie care a condus mai târziu la inventarea microprocesorului, de către Ted Hoff, Federico Faggin, și Stanley Mazor de la Intel. Primul procesor integrat, Intel 4004 (1971) avea 12 mm², și era compus din 2300 tranzistoare; prin comparație, procesorul Pentium Pro avea 306 mm² și 5,5 milioane de tranzistoare. Circuitul integrat din imaginea din dreapta, un Intel 8742, este un microcontroller pe opt biți care conține o unitate centrală de procesare ce rulează la 12 MHz, are 128 de octeți de RAM, 2048 de octeți de EPROM, și porturi de intrare/ieșire, toate pe același cip.
În anii 1960, utilizarea calculatoarelor din generațiile a doua și a treia s-au suprapus considerabil. IBM și-a implementat modulele IBM Solid Logic Technology în circuitele hibride pentru IBM System/360 în 1964. Până în 1975, Sperry Univac a continuat să fabrice mașini din a doua generație, cum ar fi UNIVAC 494. Sistemele mari Burroughs, cum ar fi B5000 erau mașini cu stivă, simplu de programat. Aceste automate cu stivă erau implementate și în minicalculatoarele și microprocesoarele de mai târziu, care au influențat proiectarea limbajelor de programare. Minicalculatoarele serveau drept centre de calcul ieftine pentru industrie și universități. Microprocesorul a condus la dezvoltarea microcalculatoarelor, calculatoare mici și ieftine ce puteau fi vândute firmelor mici și persoanelor private. Microcalculatoarele, care au apărut în anii 1970, au devenit omniprezente după anii 1980. Steve Wozniak, cofondatorul companiei Apple Computer, este considerat a fi dezvoltatorul primului calculator personal produs în serie. Primul calculator al acestuia, Apple I, a apărut însă după MOS Technology KIM-1 și Altair 8800, iar primul calculator Apple cu capabilități grafice și de sunet a apărut după Commodore PET.
Sisteme de complexitatea calculatoarelor aveau nevoie de fiabilitate mare. ENIAC a rămas pornit, în continuu între 1947 și 1955, opt ani fără să fie oprit. Deși tuburile electronice se mai defectau, ele se înlocuiau fără a opri sistemul. Prin simpla strategie de a nu opri ENIAC, s-au redus drastic defectările majore. Hard diskurile hot-pluggable, care puteau fi cuplate sau decuplate de la o mașină fără oprirea acesteia, continuă tradiția reparațiilor efectuate în timpul funcționării. Memoriile cu semiconductori operează fără erori, fiind garantate de producători pe viață, deși unele sisteme de operare, cum ar fi Unix oferă posibilitatea rulării de teste de memorie pentru verificarea funcționalității hardware. În secolul al XXI-lea, nevoia de fiabilitate este și mai stringentă, ferme de servere fiind platformă de bază. Google utilizează software tolerant la defecte pentru a trata elegant defecțiunile hardware, și lucrează la conceptul de ferme de servere decuplabile.
În secolul al XXI-lea, au apărut pe piață microprocesoarele multinucleu. Tablourile de celule de memorare din semiconductori sunt des întâlnite. După ce memoriile cu semiconductoare au devenit omniprezente, dezvoltarea de software s-a simplificat și codurile sursă ale programelor au devenit mai ușor de înțeles. Programarea unei memorii cu tamburi impunea programatorului să fie conștient de poziția în timp real a capului de citire, de-a lungul rotațiilor tamburului. Când porțile logice bazate pe tranzistoare cu efect de câmp CMOS au înlocuit tranzistoarele bipolare, consumul de energie al calculatoarelor a putut scădea drastic și astfel utilizarea puterii de calcul a devenit foarte ieftină și s-a răspândit în toată lumea, sub multe forme, de la felicitări și telefoane mobile la sateliți artificiali și sonde spațiale.
Cel mai rapid supercomputer din top 500 este IBM Roadrunner, mai rapid decât Blue Gene/L la 25 mai 2008.