Oosthoek Encyclopedie

Oosthoek's Uitgevers Mij. N.V (1916-1925)

Gepubliceerd op 27-07-2019

Computer

betekenis & definitie

[Eng. Lat. computare, berekenen], m. (-s), apparaat dat een opeenvolging van aritmetische en logische handelingen kan verrichten.

Een computer is een rekenmachine die in staat is informatie te ontvangen, daarmee voorgeschreven bewerkingen uit te voeren en de resultaten weer te geven. Een computer kan beslissingen nemen, waardoor de volgorde van de nog te verrichten bewerkingen vaak afhankelijk is van vooraf niet bekende tussenresultaten. De procedure is wel van te voren bepaald en te volgen dooralgoritmen.

Een computer bestaat uit een Central Processing Unit (CPU, d.i. de eigenlijke rekeneenheid), een geheugen en in- en uitvoerapparatuur, periferie-apparatuur. De periferie- of randapparatuur vormt meestal het omvangrijkste en duurste deel van een computerinstallatie.

Men onderscheidt drie soorten computers:

1. de analoge rekenmachine;
2. de digitale computer (digitale techniek);
3. de hybride computer, een combinatie van de voorgaande twee.

Gewoonlijk wordt met computer de digitale computer bedoeld.

WERKING

De beschrijving van de werking van een computer (de zgn. architectuur) is in de eerste plaats van belang voor het ontwerp van de bijbehorende programmeertalen en bedrijfssystemen, omdat de uiteindelijke gebruiker de computer gewoonlijk alleen via deze software kent.

In de verwerkingseenheid van een computer kan men onderscheiden:

1. de aritmetische en logische bewerkingen, die door een opdracht kunnen worden gespecificeerd en
2. de besturing, die de volgorde van de opdrachten bepaalt. Deze besturing verwijst tevens opdrachten die op in- en uitvoer betrekking hebben naar de organen die het verkeer tussen randapparaten en geheugen verzorgen.

Van de aritmetiek kunnen doorgaans alleen de elementaire bewerkingen optellen, aftrekken, vermenigvuldigen en delen verricht worden. Soms ontbreekt de deling, en eventueel ook de vermenigvuldiging en worden deze door een vaste reeks opdrachten, een subroutine, uit de resterende bewerkingen verkregen. De voor een gegeven in het geheugen beschikbare ruimte is beperkt, zodat zowel aan de precisie als aan het bereik van de getallen aandacht moet worden geschonken. Ten behoeve van de precisie worden getallen veelal in het binair talstelsel weergegeven. Het bereik van de te gebruiken getallen kan aanzienlijk worden vergroot met behulp van de drijvende komma-notatie. Het teken van de gebruikte getallen wordt of door een afzonderlijke bit weergegeven, dan wel voor door complementnotatie aangeduid.

Voor logische bewerkingen is het vereiste opdrachtenrepertoire veel minder eenduidig bepaald dan bij de aritmetische bewerkingen. De elementaire logische verbindingen van twee veranderlijken, de functies ‘en’, ‘of’ en ‘exclusive of’ (logica) zijn doorgaans beschikbaar. Daarnaast komen bewerkingen voor die slechts één veranderlijke betreffen, en de code of de plaats van deze veranderlijke kunnen wijzigen. De taak van de logische bewerking is veelal de voorbereiding van de door de besturing te nemen beslissingen, in het bijzonder bij de vergelijkopdracht. Deze wordt vaak als aritmetische opdracht opgevat, daar zij eenvoudig uit de aftrekking kan worden verkregen door daarbij te letten op het teken van het verschil. Op grond van de vergelijking kan door de besturing de volgorde waarmee het programma wordt doorlopen, worden gewijzigd. Logische bewerkingen worden het meest uitgevoerd; alleen voor grote technische of wetenschappelijke berekeningen worden aritmetische bewerkingen veelvuldiger gebruikt.

De besturing dient de in het geheugen geplaatste opdrachten van een programma in de door de programmeur bepaalde volgorde te doen verlopen. De opdrachten zijn volgens een vast patroon het opdrachtformaat - samengesteld. De twee belangrijkste gedeelten van dit formaat zijn de bewerkingscode en de adressen. De bewerkingscode geeft aan wat gedaan moet worden, de adressen geven de geheugenplaatsen aan van de data waarmee de bewerking gedaan moet worden. Alle aritmetische, logische, invoer-, uitvoeren besturingsbewerkingen die expliciet aan de computer opgedragen kunnen worden, hebben een eigen code. Het adresgedeelte van een opdracht kan één of meer adressen bevatten (adresseren).

Om een volledige bewerking te kunnen specificeren, moeten de plaats van twee gegevens en de plaats van het resultaat worden aangegeven, terwijl tevens de plaats van de volgende opdracht bekend moet zijn. Worden deze plaatsen elk expliciet door een adres aangegeven, dan heeft men de zgn. vier-adres-opdracht. Teneinde het geheugen zo efficiënt mogelijk te gebruiken, worden sommige adressen geïmpliceerd, d.w.z. ze behoeven niet te worden opgegeven. Zo wordt voor de plaats van de volgende opdracht de naastliggende plaats in het geheugen genomen. De plaats van het resultaat is veelal dezelfde als die van een van de gegevens, zodat in wezen één van de gegevens door het resultaat vervangen wordt. Op deze wijze ontstaat de twee-adres-opdracht, die vooral voor commercieel georiënterende toepassingen effectief is.

Het meest voorkomend is echter de één-adres-opdracht. In dit geval is een hulpregister (accumulator) aanwezig, dat zonder verdere aanduiding gebruikt kan worden. Vaak zijn terwille van grotere flexibiliteit diverse hulpregisters aanwezig. Daar deze zeer beknopt aangeduid kunnen worden, spreekt men nog steeds van een één-adres-opdracht. De term adres heeft hier dus betrekking op een plaats uit het hoofdgeheugen. Bij de één-adres-opdracht moeten sommige bewerkingen door een opeenvolging van opdrachten worden uitgevoerd. Zo vereist uitvoering van A + B = C de volgende serie opdrachten:

1. plaats A vanuit de geheugenplaats die door het adresgedeelte van de opdracht is aangegeven in de accumulator;
2. tel B vanuit zijn geheugenplaats op bij de inhoud in de accumulator;
3. plaats de inhoud van de accumulator in de geheugenplaats die voor C bestemd is.

De efficiëntie van de één-adres-opdracht blijkt vooral wanneer met het resultaat (A + B) verder gerekend moet worden. In dat geval kan de derde opdracht achterwege blijven en is (A + B) direct beschikbaar voor verdere bewerkingen. De volgorde waarin de opdrachten worden uitgevoerd is doorgaans eenduidig bepaald, maar kan ook afhangen van een beslissing. De eenduidige bepaling met behulp van een expliciet adres of door middel van de opeenvolging van de geheugenplaatsen is reeds genoemd. Is de impliciete volgorde wegens de indeling van de geheugenruimte op een bepaald moment ongewenst, dan kan een zgn. sprongopdracht gebruikt worden. Deze opdracht bevat een expliciet adres dat verwijst naar de geheugenplaats waar de volgende serie opdrachten begint.

Beslissingen in een programma kunnen door een beslissingsopdracht of door een interruptieprocedure worden verkregen. De gebruikelijke beslissingsopdracht is de voorwaardelijke sprong. Hierbij wordt de sprong alleen uitgevoerd, wanneer aan nader omschreven voorwaarden voldaan is. De som A + B = C zou b.v. als deler in een volgende bewerking gebruikt kunnen worden (tabel). Teneinde deling door nul te vermijden zou na het vormen van de som A + B een voorwaardelijke sprongopdracht geplaatst kunnen worden met als voorwaarde ‘laatste gevormde resultaat was nul’. Is aan die voorwaarde niet voldaan dan wordt de volgende opdracht, hier de deling, normaal uitgevoerd.

Is de som wel nul dan wordt de serie opdrachten, waar de sprong naar verwijst, uitgevoerd. Aan sommige voorwaarden wordt òf zelden voldaan of op een onbekend tijdstip. Zo is het moment waarop een randapparaat nieuwe gegevens ter beschikking heeft gesteld vaak moeilijk vooraf te bepalen. In zulk een geval kan het gebruik van een interruptie gewenst zijn. De interruptie is geen opdracht, maar een actie die een reeks opdrachten onderbreekt wanneer een tevoren gespecificeerde gebeurtenis optreedt, en een nieuwe serie opdrachten begint op een eveneens te voren vastgesteld adres. De toestand van de computer op het moment van interruptie wordt zodanig bewaard dat de onderbroken serie opdrachten, indien gewenst, zonder merkbaar verschil kan worden voortgezet.

De interruptie vermijdt het herhaaldelijk gebruik van een voorwaardelijke sprongopdracht. Zij is echter omslachtiger en wordt dus gewoonlijk alleen daar gebruikt waar de computer snel moet reageren op invloeden van buiten, of op uitzonderlijke omstandigheden die tijdens de uitvoering van een programma optreden.

UITRUSTING

De uitrusting van een computer dient de door de architectuur vereiste werking uit te voeren. Hiertoe wordt gebruikt gemaakt van registers, combinatorische eenheden (schakeltechniek) en de verbindingen tussen deze registers en eenheden. Voor een gegeven architectuur is een veelvoud van uitrustingen mogelijk, die verschillen in kostbaarheid en snelheid; een ontwerp kan dus worden aangepast aan de te verrichten hoeveelheid werk en het beschikbare budget.

Registers zijn sequentiële schakelingen die informatie zoals data of opdrachten kunnen ontvangen, bewaren en afgeven. Het zijn geheugens die klein in capaciteit zijn, maar snel kunnen reageren. Informatie wordt in gecodeerde vorm in een computer verwerkt. Elk cijfer, getal, letter of symbool wordt door een aantal bits weergegeven. De grootte van een register wordt dus bepaald door het maximale aantal bits dat onthouden moet worden. Zo kan een register van 24 bits b.v. 6 binair gecodeerde decimale cijfers (voor elk cijfer is een groepje van 4 bits nodig), 24 binaire cijfers of, al naar gelang van de codering, 4 of 3 letters bevatten.

Combinatorische eenheden kunnen de hun toegevoerde informatie in een andere vorm omzetten. De combinatorische eenheid kan de som, het verschil, de logische ‘en’, ‘of’ en ‘exclusive of’ van twee binnenkomende gegevens bepalen, waarbij de laatste functies door betrekkelijk geringe toevoegingen uit de eerste te verkrijgen zijn. Er zijn drie verbindingen waarvan twee bij de combinatorische eenheid binnenkomen en een hiervan uitgaat. De cirkeltjes in de verbindingen geven de poorten weer. Tevens zorgen twee van deze verbindingen voor informatietransport van en naar het geheugen, bovenaan weergegeven. Elke verbindingslijn geeft een veelvoud van draden weer. Over deze draden kan de gehele inhoud van een register, in parallel, aan de combinatorische eenheid worden toegevoerd.

Deze zal dan gehele getallen tegelijk moeten verwerken. Dit is een snelle procedure die veel componenten vereist. Het is echter ook mogelijk om de inhoud van de registers cijfer voor cijfer, dus in serie, aan de combinatorische eenheid toe te voegen. De combinatorische eenheid ontvangt over elke verbinding slechts één cijfer dat verwerkt moet worden en kan dus veel geringer in omvang zijn. Tevens bestaan de verbindingen zelf uit een geringer aantal draden. De bewerking duurt nu echter langer en het beheer van de bewerking, het op het juiste moment openen en sluiten van de poorten voor de individuele cijfers (hier niet getekend) is iets kostbaarder. Aritmetisch en logisch kan echter in beide gevallen exact hetzelfde resultaat worden verkregen.

Een soortgelijke keuze tussen veel componenten voor gelijktijdige verwerking en weinig componenten voor opeenvolgende verwerking kan op tal van plaatsen in de uitrusting van een computer worden gemaakt. Een voorbeeld hiervan zijn ook de ingewikkelde bewerkingen, zoals vermenigvuldiging en deling. Vaak worden deze uit een reeks optel- of aftrekbewerkingen samengesteld. In zeer snelle computers wordt echter een afzonderlijke vermenigvuldigingen deelapparatuur gebruikt. De combinatorische eenheid kan naast de dataverwerking nevenfuncties, zoals ophoging van het opdrachtadres, verrichten. Naast de drie hoofdverbindingen worden een aantal secundaire verbindingen gebruikt voor adresserings- en beheersdoeleinden.

Zo geven de gestreepte lijnen in het schema (afb.) aan dat het opdrachtadres en het adresgedeelte van de opdracht gebruikt kunnen worden om het geheugen te adresseren. De dun getrokken lijn geeft aan dat de opdrachtcode gebruikt wordt in de combinatorische eenheid om de te verrichten bewerking te bepalen. De signalen die de poorten openen en sluiten zijn niet getekend. Zij zijn afkomstig van de beheerseenheid, rechts in het schema. Deze beheerseenheid wordt beïnvloed door de opdrachtcode, maar krijgt ook andere signalen binnen, die voor de te verrichten opdracht van belang zijn. De beheerseenheid kan worden uitgevoerd als een geheel van sequentiële en combinatorische schakelingen.

Soms heeft deze eenheid de gedaante van een primitieve computer met een programma, het microprogramma, bepaalt in welke volgorde de poorten geopend moeten worden. Betrouwbaarheid is in de loop der jaren een steeds belangrijker vereiste voor een computer geworden. De vastestof-elektronika heeft elektronische componenten zodanig betrouwbaar gemaakt dat de voornaamste bron van storing nu in de randapparatuur gezocht moet worden. De onderhoudsmethoden worden geholpen door in het ontwerp opgenomen foutdetectie met behulp van speciale schakelingen die een interrupt genereren als een fout geconstateerd wordt. Hierbij wordt getracht zowel de tijd voor het vinden van een fout te verkorten als het optreden van fouten te voorkomen. [prof.dr.G.A.Blaauw]

TOEPASSINGEN

Een computer is zeer geschikt om de menselijke activiteit te ondersteunen en aan te vullen, omdat mens en machine juist complementaire talenten hebben. Zo is de mens in staat relevante en nie-trelevante gegevens te onderscheiden, onvolledige gegevens aan te vullen en patronen te herkennen, terwijl de computer snel grote hoeveelheden gegevens vast kan leggen en foutloos bewerken.

Vanwege de hoge snelheid heeft gebruik van een computer alleen zin als bij de opeenvolgende stappen geen menselijke ingreep nodig is. Dit houdt in dat de gebruiker het probleem geheel geformuleerd moet hebben; het vakgebied waarop men zich met deze problemen bezighoudt, noemt men de informatica. Het toepassingsgebied van de computer is te groot om in dit bestek uitputtend behandeld te worden. De volgende selectie is echter wel illustratief: wetenschap. Wiskundige berekeningen van allerlei aard worden met computers uitgevoerd, waarbij gebruik wordt gemaakt van algoritmen uit de numerieke analyse. Problemen op het gebied van de radio-astronomie, de kernfysica, de theoretische chemie, de meteorologie, de geofysica, enz. verlangen veelal het oplossen van uitgebreide stelsels vergelijkingen en/of het verwerken van grote hoeveelheden waarnemingen.

Van belang is de computer ook voor het uitwerken van statistische problemen, die zich b.v. bij sociologisch en politicologisch onderzoek voordoen. Een bijzondere taak kan een computer vervullen door zeer snel de consequenties van bepaalde aannamen door te rekenen, op grond waarvan ‘trial-and-error’-benaderingen voor moeilijk te bepalen uitdrukkingen en functies gevonden kunnen worden.

techniek. Ook bij het toepassen van wetenschappelijke kennis doet zich vaak de situatie voor dat men omvangrijke wiskundige berekeningen moet maken. Het meest extreem geldt dat bij de ruimtevaart, die zonder computerbesturing niet mogelijk is. Verder worden computers toegepast bij het besturen van metaalbewerkende machines, die automatisch ingewikkelde vormen kunnen uitfrezen, en bij het regelen van industriële processen (procesregelsysteem), waarbij waarnemingen aan stromen, drukken, temperaturen e.d. de basis vormen voor continue of semi-continue correctiemaatregelen. Bij een procesregelsysteem is er sprake van directe verwerking (‘real time processing’). Speciale toepassingen, die weer gebruik maken van interactief werk met een terminal, vindt men bij het ontwerpen in de vliegtuigbouw, de architectuur, e.d.

Veelal gebruikt men daarbij een elektronische tekentafel, met een eraan verbonden lichtpen. Op het scherm verschijnt een exacte afbeelding, waarin men door aanwijzingen met de lichtpen veranderingen kan aanbrengen. Ook kan men, uitgaande van één aanzicht, b.v. van opzij, een perspectivisch beeld uit andere hoeken laten verschijnen, een eerder bepaalde omgeving erbij laten projecteren e.d. Men noemt dit ‘computer graphics’. Het besturen van organisaties gaat vaak gepaard met grote administraties (loon-, personeel-, voorraadadministratie, de boekhouding e.d.). Deze wordt vaak door een computer uitgevoerd.

Bovendien kunnen in dergelijke administraties verborgen gegevens door groepering zichtbaar gemaakt worden en dan als beleidsinformatie voor de leiding van grote betekenis zijn. Een logisch uitvloeisel van deze benadering is om de organisatie als één samenhangend geheel te beschouwen, waarbij de gegevensstromen en de daarvoor benodigde verwerking samen het -informatiesysteem vormen, b.v. een produktieplanning, waarvoor grondstoffen en een personeelstoewijzing nodig zijn; de grondstoffen en de geproduceerde goederen vallen onder een voorraadadministratie, maar ook onder een financiële administratie; de personeelsleden moeten betaald worden, maar betaling is ook vereist bij het aanschaffen, resp. vervangen van machines, voertuigen, enz. In theorie biedt de computer de mogelijkheid de achtergrondgegevens voor al deze activiteiten op een samenhangende manier te beheren en te verwerken. De aanwezigheid van het totaal der gegevens vormt dan de basis voor verder strekkende beleidsinformatie dan uit de afzonderlijke administraties verkregen had kunnen worden. Om een groot informatiesysteem op te zetten, moet men echter eerst een systeemanalyse maken; terwijl het bij de opbouw van belang is kleinere, op elkaar afgestemde, delen en niet één ondeelbaar geheel te creëren. Verder moet men bedenken dat volledige automatisering van een mechanisch systeem, zoals een fabriek, wel mogelijk is (procesregelsysteem), maar dat het nemen van beslissingen in een organisatie uiteindelijk veel efficiënter door mensen gedaan kan worden.

Het informatiesysteem dient daarom als ondersteuning, niet voor het nemen van alle beslissingen. Het verzorgt de routinezaken, daarbij iedere situatie signalerend die uitzonderlijk is en speciale aandacht behoeft (‘management by exception’) en is verder belast met de beleidsvoorbereiding.

Bijzondere hulp heeft men van de computer bij het onderling afstemmen van produktie-, beheer- en verkoopactiviteiten, waar de gegevensstromen anders veelal te traag zijn om diverse acties, zoals inkopen, produktieopdrachten geven en afleveren, op het juiste moment en in de juiste mate te initiëren. Bij ingewikkelde processen, waarbij veel componenten en produkten een rol spelen (zoals in een olieraffinaderij) kan men met succes van lineaire programmeringsmethoden gebruik maken, terwijl transportproblemen betreffende vrachtwagenparken of spoorwagons op soortgelijke wijze op een computer kunnen worden doorgerekend. Bij het plannen en begeleiden van samengestelde procedures, zoals bij het onderhoud van fabrieken en het uitvoeren van bouwprojecten, bedient men zich van de PERT-methode of aanverwante technieken, die met behulp van een computer toepasbaar zijn. Ook zijn er diverse administratieve systemen die van directe verwerking gebruik kunnen maken. Het eerst werd dit toegepast bij luchtvaartreservering, waarbij de over de wereld verspreide agenten van een maatschappij verbonden zijn met een centrale computer die plaatsen reserveert, doorverbindingen verzorgt, wachtlijsten samenstelt en afwerkt, enz. Door de computers van verschillende maatschappijen onderling te verbinden is het mogelijk de informatieoverdracht tussen maatschappijen te mechaniseren (externe integratie).

In het bankwezen worden computers op grote schaal gebruikt, waarbij men zal overgaan tot directe verwerking aan de balie. De daar opgestelde terminals zijn in eerste instantie aan een kleine (lokale) computer verbonden, waarin de gegevens over de daar geregistreerde rekeninghouders zijn opgeslagen. Dit maakt snelle controle mogelijk. Na voorlopige opslag in deze lokale computer worden blokken van gegevens dan later naar de centrale (grote) computer doorgezonden, om overboekingen en andere administratieve handelingen te doen plaatsvinden.

Een groot toepassingsgebied ligt bij het ziekenhuiswezen. Patiëntenadministraties, met alle afgeleiden daarvan, zoals ziekenhuisplanning en statistische analyses, kunnen tot een verbetering van de medische zorg leiden. Reeds nu kan men diagnoses met computers ondersteunen, waarbij in enkele speciale gevallen de arts door meetapparatuur via het telefoonnet aan een verwerkende computer gegevens kan laten aanbieden, om terstond een globaal resultaat te krijgen (elektrocardiogrammen en encefalogrammen) . Een bijzondere plaats neemt de computer bij de overheid in. Immers haast meer, en zeker op grotere schaal dan bij ondernemingen heeft deze met grote administraties te maken. Aangezien die vaak persoonlijke gegevens zullen moeten bevatten (b.v. bevolkingsadministraties) doet het ‘privacy’-probleem zich daarbij voor (databank). Naast administratieve problemen zijn er ook bij het openbaar bestuur zeer veel planningproblemen die alleen op grote computers uitgewerkt kunnen worden (milieuzaken, onderwijsplanning, waterstaat, enz.).

INFORMATIEBEHEER EN DOCUMENTATIE

De ontwikkeling van zeer grote computergeheugens maakt het mogelijk en zinvol grote hoeveelheden informatie permanent in een computer op te slaan. Een dergelijke opzet, waarbij men via een terminal met de gegevensverzameling kan ‘converseren’, is vooral interessant omdat gecombineerde vragen (‘welke Azijn tevens B, maar niet C ?’, enz.) en vragen aan gecombineerde verzamelingen tot de mogelijkheden zijn gaan behoren. Het behoeft geen betoog dat het bijhouden en aanvullen van zulke bestanden een omvangrijke taak is, die voor een belangrijk deel mensenwerk blijft. Overigens kunnen grote verzamelingen vaak minstens even doeltreffend gebruikt worden door selectieve uittreksels in gedrukte vorm (eventueel op magneetband) te verstrekken, b.v. citatenlijsten.

KUNSTMATIGE INTELLIGENTIE

De vraag of een computer kan ‘denken’ is open. Natuurlijk doet hij niet wat een mens doet bij het denken. Het deterministisch karakter van de (geprogrammeerde) computer sluit een vrije wil als zodanig uit. Toch is het niet goed mogelijk de verschillen exact te definiëren, omdat het menselijk denkproces onvoldoende bekend is en de computer tot een steeds hoger vermogen van abstractie gevoerd wordt. Dit studiegebied noemt men kunstmatige intelligentie. Toepassingen ervan zijn o.a. machinaal schaken, componeren en het ontwerpen van artistieke patronen (computerkunst), heuristische programmering, informatica. [prof.dr.A.A.Verrijn Stuart]

Litt. B.V.Bowden, Faster than thought(1953);E. A.Feigenbaum en J.Feldman (red.). Computers and thought (1963); Computers and computation, Readings from Scientific American (1971); A.Ralston, Introduction to programming and computer Science (1971); M.Euwe en I.D.Albarda, Bedrijfsvoering met de computer (2e dr., 1972); S.C.Blumenthal, Informatiesystemen voor ondernemingen (1974).

GESCHIEDENIS

De voorloper van de computer bestond reeds ca. 400 v.C. in China, de abacus. In 1642 bouwde de Franse wiskundige B. Pascal de eerste rekenmachine, die getallen van acht cijfers kon optellen of aftrekken. De volgende belangrijke stap in de ontwikkeling van de computer werd gezet door de. Engelse uitvinder C. Babbage.

Hij ontwierp in 1834 zijn ‘analytical engine’, die reeds vele principes van de moderne computer bevatte. De ‘analytical engine’ kon getallen opbergen in een geheugen en ze vergelijken en aan de hand daarvan beslissen welke groep instructies hij moest uitvoeren, bovendien kon hij aan de hand van voorgaande resultaten voorgaande getallen of instructies wijzigen.

De ‘analytical engine’ is door technische problemen nooit gerealiseerd. Het werk van Babbage werd pas in 1937 herontdekt en op zijn juiste waarde geschat. Mede door de behoefte aan ballistische tafels leidde dit in 1944 tot de constructie van de eerste computer, de ‘Automatic Sequence Controlled Calculator, Mark I’; deze maakte gebruik van elektromechanische onderdelen. De volgende revolutionaire ontwikkeling werd gerealiseerd in de ENIAC (Electrical Numerical Integrator and Calculator, 1946), die in ontwerp primitiever was dan de Mark i, maar waarin voor het eerst de elektronenbuis als schakelelement gebruikt werd. Ca. 1955 werd de elektronenbuis vervangen door de transistor die goedkoper, kleiner en betrouwbaarder was en ook veel minder koelingsproblemen gaf. Omdat de snelheid van een computer mede bepaald wordt door de tijd die de signalen onderweg zijn in en tussen de elektronische componenten, is men overgegaan tot miniaturisering; d.w.z. men begon de elektronica microscopisch klein te maken.

Door toepassing van integratietechnieken kon men steeds grotere logische eenheden als één component (microprocessor) realiseren. Ca. 1974 was men zover gevorderd met deze miniaturisering, dat op een siliciumplaatje (chip) van 15 mm2 meer dan 2000 elektronische componenten geplaatst konden worden. Het kerntjesgeheugen bracht in 1951 de oplossing van de problemen rond het geheugen, o.a. de benodigde tijd voor het in- en uitlezen en de afmetingen. In de loop der jaren zijn de kerntjes steeds kleiner gemaakt en het geheugen steeds sneller. Ca. 1970 is men naast het kerntjesgeheugen ook halfgeleider geheugens gaan gebruiken die opgebouwd zijn uit veldeffect-transistoren (FETt) en die nog weer vele malen sneller zijn. Verder is men overgegaan tot het toepassen van externe geheugens naast het betrekkelijk kleine, maar snelle interne geheugen.

Hoewel ook de ontwikkelingen op het gebied van de I/o-apparatuur niet stilgestaan hebben, bleven deze toch veel trager dan de CPU, die in 1974 ca. 100 mln. instructies per seconde kon uitvoeren; daarom is men verscheidene i/o-apparaten aan één computer gaan koppelen (multiprocessing). Naast de invoer via ponskaarten en ponsbanden, is sinds 1960 ook invoer mogelijk vanaf kathodebuizen met behulp van lichtpennen. De nieuwste ontwikkelingen op dit gebied zijn de optische tekenlezers, apparaten die rechtstreeks getypte teksten, en in zekere mate met de hand geschreven tekst, kunnen lezen.

De wiskundige J. von Neumann had reeds in 1945 voorgesteld hetzelfde interne geheugen te gebruiken voor opdrachten en data. Hierdoor wordt het mogelijk opdrachten als data te manipuleren; dit is een essentiële voorwaarde voor het gebruik van programmeertalen. Bij de eerste programmeertalen werden de opdrachten, net als de data, in binaire code ingevoerd in de machine. Dit waren machinetalen. Nadat ca.1950 aangetoond was dat een goed werkende computer mogelijk was, werd in de navolgende jaren de bruikbaarheid van de computer vergroot. Hierbij werd vooral aandacht aan de programmeerbaarheid geschonken.

Het was namelijk gebleken dat door de toename van de grootte van de computers, het schrijven van programma’s in machinetaal een ondoenlijke taak werd. Dit probleem werd gedeeltelijk opgelost door de ontwikkeling van de assemblertaal, een machine-afhankelijke symbolentaal, die de opdrachten in korte woorden formuleert. Voor deze talen bestaan vertaalprogramma’s die de symbolen omzetten in machinecode (de zgn. assembler). Voor speciale doeleinden worden de assemblertalen nog wel toegepast, maar de meeste computergebruikers maken gebruik van een hogere programmeertaal, zoals algol, cobol en fortran, die niet machine-afhankelijk zijn (compileren). Erg belangrijk voor het programmeren is de ontwikkeling van subroutine-bibliotheken; dit zijn verzamelingen van programma’s voor veel voorkomende handelingen, die met één enkel woord in het hoofdprogramma te activeren zijn.