Van de homo universalis wordt vaak beweerd dat ‘ie tegenwoordig is uitgestorven. Hetzelfde gaat in ieder geval niet op voor de universele machine, die is springlevend. ‘Universele machine’ is namelijk een ander woord voor ‘computer’. Zo’n drie decennia terug waren computers nog vooral groot, log, mysterieus en ver weg. Intussen hebben ze een plek gevonden in praktisch ieder huishouden en kantoor, van waaruit ze ook nog eens allemaal met elkaar in verbinding staan via het Internet. We nemen ze op schoot in de trein, en dragen ze in de vorm van allerlei handige kleine apparaatjes overal met ons mee naar toe.
Ongeveer 70 jaar terug beschreef de Britse wiskundige Alan Turing een denkbeeldig apparaat, bestaande uit een lees- en schrijfkop, heen en weer bewegend over een oneindige rij symbolen. Een van zijn uitgangspunten hierbij was een heel bepaalde aanpak voor het vatten van de essentie van een machine. Deze aanpak komt er op neer dat je eerst een onderscheid maakt tussen de verschillende toestanden waarin een gegeven machine kan verkeren, om vervolgens te beschrijven op welke manieren deze in elkaar kunnen overgaan. Bij een auto bijvoorbeeld zou je onderscheid kunnen maken tussen toestanden als ‘eerste versnelling’ en ‘tweede versnelling’ met ieder hun eigen symbool (bijvoorbeeld ‘1’ en ‘2’) om vervolgens de mogelijke overgangen tussen deze toestanden te beschrijven, afhankelijk van de invoer (‘de versnellingspook wordt vooruit bewogen’).
Turing paste deze denktrant toe op de (met potlood en papier) rekenende mens. De lees- en schrijfkop van zijn machine verkeert net als de auto hierboven in een bepaalde toestand, leest telkens één enkel symbool uit de rij in, en raadpleegt dan een vantevoren vastgelegd voorschrift. Domweg het voorschrift volgend vervangt de kop het net gelezen symbool door een nieuw symbool, beweegt hoogstens één stap naar links of rechts in de reeks en gaat tenslotte zelf ook over in een nieuwe toestand. Op dat moment kan het hele verhaal weer van voren af aan beginnen, en net zo lang doorgaan tot – als alles goed gaat – de kop in de ‘eindtoestand’ belandt en het resultaat kan worden afgelezen, als het getransformeerde rijtje symbolen.
Dit soort machines zit dus niet heel ingewikkeld in elkaar, en het is goed voorstelbaar dat je er een zou kunnen maken die iets simpels kan zoals twee getallen bij elkaar optellen. Bijvoorbeeld door ‘m reeksen sterretjes aan elkaar te laten schuiven (zodat *+* veranderd wordt in **). Of je zou de symbolen van het alfabet kunnen gebruiken en een machine maken die woorden omdraait (‘sterretje’ wordt ‘ejterrets’). In feite is het zelfs zo, dat je een apparaat kunt maken voor iedere berekening die we maar op enige manier denkbaar achten. Turing en anderen lieten dit zien, in wat later de ‘Church-Turing these’ is gaan heten.
En omdat de toestanden en overgangen van hierboven zelf ook weer worden beschreven met symbolen, kun je ook een super-Turingmachine bedenken die zowel de invoer als de complete beschrijving van andere Turingmachines inleest, om ze vervolgens perfect te imiteren. Dit is de Universele Turingmachine, die getallen kan optellen, woorden kan omdraaien, en alles wat er verder te berekenen valt.
Het is deze machine die we in het dagelijks leven terugzien in de ontelbare computers om ons heen. Voor de kracht van het idee maakt het daarbij niet uit dat we een door stroom aangedreven printplaat vol met microscopisch bewerkte plaatjes silicium gebruiken. Het had ook een door stoom aangedreven raderwerk van reusachtige proporties mogen zijn (zoals een eeuw vóór Turing werd voorgesteld door een andere Brit, Charles Babbage). En het zou ook een futuristisch apparaat kunnen zijn waarin losse fotonen op mysterieuze wijze tegelijk wel én niet door half doorschijnende spiegeltjes kaatsen. Of, een druppel water vol DNA-moleculen.
Wat hoe dan ook blijft, is dat aan de gebruikte symbolen en bewerkingen door de mens een betekenis moet worden gegeven. Hoe koppelen we symbolen aan fysieke gebeurtenissen, en hoe interpreteren we dat vervolgens? Een heel simpel symbool als een bit (‘1’ of ‘0’) kan bijvoorbeeld een lichtpunt op een beeldscherm zijn, wat wij vervolgens weer interpreteren als het puntje op een letter ‘i’. Een bit kan op een getal duiden, of een letter, een klok die verspringt, een bepaalde kleur blauw, een vinger die een knop indrukt, een raket die wordt afgevuurd. Met het bit als atoom van informatie heeft de computer zo intussen briefpost, bureaublad en boekhoudpapier, kaartenbakken, krant en radio, fotografie en film, telefonie en televisie, en natuurlijk ook muziek doordrongen. Al deze dingen kunnen nu met één machine, en zo beschouwd wordt de wereld er een stuk simpeler op.
Hiertegen kan wel worden ingebracht dat we in het echt geen machines bouwen die zoals Turing’s machine met oneindige rijen symbolen kunnen werken, en dat is natuurlijk waar. Maar zelfs met een geheugen van heel beperkte omvang is het goed mogelijk ideeën uit te voeren die de eindigheid tarten. Stel dat iemand nieuwsgierig is naar alle mogelijke geluiden van één seconde lang. Als CD-kwaliteit goed genoeg is, volstaat het om ruimte te hebben voor 705.600 bits. Een computer kan vervolgens, aan de hand van een paar instructies, alle mogelijkheden één voor één genereren en afspelen op een speaker. Het afluisteren van alle geluiden blijkt dan absurd veel langer te duren dan de huidige leeftijd van het heelal, maar je kunt het apparaat wel hier en nu bouwen.
De betekenis die we toekennen aan symbolen en bewerkingen leert ons ook dingen over wat het is om een mens te zijn. Bijvoorbeeld, puur het goed zijn in schaken werd lange tijd beschouwd als een van de kenmerken van menselijke intelligentie. Maar in de zaak ‘Deep Blue versus Kasparov’ heeft brute (en niet heel ‘intelligente’) rekenkracht het pleit intussen al lang gewonnen van de beste menselijke grootmeester, en dit werpt toch een ander licht op de zaak.
Aan de andere kant kunnen we de computer ook gebruiken om de werkelijkheid om ons heen na te bootsen. Wetenschappers willen graag weten hoe die werkelijkheid in elkaar zit, en hun numerieke simulaties van melkwegstelsels en microscopische structuren in levende cellen leiden tot meer begrip, en nieuwe vragen. Ook kunstenaars zijn de computer gaan zien als gereedschap en medium om op hun manier te spelen met de werkelijkheid. En om terug te komen op spellen, dagelijks delen hordes mensen via computers en wereldwijde netwerken allerlei fictieve varianten van de werkelijkheid, om daar hun fantasie in uit te leven.
Die wereldwijde netwerken verdienen trouwens een verhaal apart, alleen al vanwege de manier waarop ze samengaan in het Internet. In tegenstelling tot bijvoorbeeld het vroegere telefoonnetwerk hoeft er in dit netwerk niet eerst een aparte verbinding te worden opgezet tussen twee punten vóór er kan worden gecommuniceerd. Een link naar de dichtstbijzijnde netwerkcomputer (‘router’) is voldoende om meteen alle andere bestemmingen op het netwerk te kunnen bereiken. De kennis om dat te doen wordt namelijk niet van een centraal punt gehaald, maar is verspreid aanwezig in het netwerk zelf: ieder knooppunt kan en moet zelf beslissen met welke van zijn buren het op dat moment het handigst is te communiceren om een willekeurig stuk data dichter naar de eindbestemming te krijgen. Eenmaal aangesloten kun je simpelweg een pakket symbolen met een IP-adres uitsturen (mogelijk aan de andere kant van de aarde) en als er een weg is, zal die gevonden worden.
De vraag is natuurlijk hoe je met symbolen en instructiereeksen (‘algoritmes’) al dit en meer voor elkaar krijgt. Het kan in ieder geval enorm helpen als je precies doet wat je wilt uitproberen, op een manier die simpel, helder en mooi is. Dit heet elegant programmeren. (Een prominent voorstander ervan was de Nederlandse informatica-pionier Edsger Dijkstra, die ooit de Turing Award won, wat in de informatica de Nobelprijs is.) Een algoritme met deze eigenschap is als een bevroren gedachte waarin de symbolen en bewerkingen met een tijdloze vanzelfsprekendheid perfect in elkaar grijpen. Het maakt dan niet meer zo veel uit op welke specifieke machine het algoritme draait – net zoals in muziek de partituur op een bepaalde manier los staat van het orkest dat de noten tot uitdrukking brengt. Het maakt zeker een verschil of je Mozart’s 38e symphonie gespeeld hoort worden door het Moskous Kamerorkest onder leiding van Rudolf Barshai, of door het Weens Filharmonisch Orkest onder leiding van Karl Böhm; toch merken we eenzelfde onderliggende schoonheid.
We eindigen nu bij de paradox, dat we enerzijds al weten wat een computer is (en hopelijk is het gelukt dat hierboven te schetsen) maar dat anderzijds wat een computer allemaal kan zijn nog elke dag verder ontdekt wordt. De enige echte begrenzingen lijken het menselijk voorstellingsvermogen en vernuft.
Tekst: Staas de Jong
Relevante boeken
Worden in de loop van 2020-2021 toegevoegd (3 september 2020)
Homepage Bètacanon
(zondag 28 oktober 2007)