Wanneer iemand mij vraagt wat mijn werk is, antwoord ik: ik doe iets met computers. Ik houd het bewust vaag. Mensen vormen zich toch wel een beeld aan de hand van hun eigen gedachten en het bespaart mij de moeite uit te leggen wat ik er zo bijzonder aan vind, want dat is een heel verhaal en ik weet niet of dat altijd goed overkomt.
De eerste keer dat ik iets met een computer deed, was ik twaalf. Daar wordt nu niet meer van opgekeken, maar meer dan veertig jaar geleden was het de enige computer waarover de scholengemeenschap van vijftienhonderd leerlingen beschikte, bestemd voor de administratie en de jaarlijkse Sisyphus-klus van het opstellen van het rooster voor de hele organisatie.
In een donker en stoffig kantoortje met gesloten gordijnen naar de gang en een hek voor de ramen naar buiten zat ik hele pauzes achter het apparaat. Het was een TRS-80 III, een metallic grijs gespoten plastic moloch; zelfs de voorlopers van Windows en Windows PC’s bestonden nog niet. Het zagende geluid van de grote 5 1/4-inch floppy [1] waarmee het systeem opstartte, herinner ik me als de dag van gister. De bureaucomputer stond nog in de kinderschoenen, van computeronderwijs was nog geen sprake en dat ik op die computer mocht was voor de wiskundedocent net zo experimenteel als voor mij.
Ik leed nog niet aan imposter syndrome en dook blijmoedig elk digitale konijnenhol in dat zich aandiende
Ik leerde noch tekstverwerken noch spreadsheets te maken. Onderricht in de principes van computersystemen of in die van het programmeren kreeg ik al helemaal niet. Ik was er aan mijn lot overgelaten, zonder begeleiding en met alleen een paar vuistdikke handleidingen van DiskOS en BASIC. Dat er nog geen internet was om dingen op op te zoeken, spreekt voor zich. Wat ik zo vooral leerde was geen angst te hebben, ik leed toen nog niet aan imposter syndrome en dook blijmoedig elk digitale konijnenhol in dat zich aandiende. ‘Stuk’ kon het niet gaan: wanneer de computer vastliep zette ik hem uit en weer aan en begon ik met een schone lei. [2]
Van de matrix-printer [3] kon ik op zeker moment de puntjes individueel aansturen; heel veel uitzoekwerk en een ellenlange reeks aan opdrachten leverden echter niet meer op dan een zelfontworpen afdrukje ter grootte van een halve pinknagel in de uiterste linker bovenhoek van een printervel. Ik kon het apparaat op verschillende toonhoogtes laten piepen en experimenteerde met lange lijsten van steeds kortere piepjes om de klank te beïnvloeden, maar muziek werd het nooit. Programmeren als activiteit om de computer naar mijn hand te zetten, was - moest ik bekennen - even fascinerend als frustrerend.
‘Hé Siri. Zet een timer voor vijftien minuten.’ Wanneer ik dit hardop tegen mijn horloge zeg, gaat er een kwartier later een alarm. Dat is totaal onbegrijpelijk en tegelijk volstrekt natuurlijk. De logische relatie tussen de gesproken opdracht en het afgaan van het alarm voelt volstrekt natuurlijk aan, totaal onbegrijpelijk wordt het wanneer ik me een voorstelling probeer te maken van de miljoen maal miljoen keren dat een 0 een 1 wordt of omgekeerd, in onnavolgbare patronen in vele stukken hardware.
In het online essay What is code? [4] van de Amerikaanse schrijver en programmeur Paul Ford beschrijft hij de computer als ‘a clock with benefits’. Miljarden keren per seconde tikt de klok en telkens veranderen 0-en in 1-en of omgekeerd volgens niet veel meer dan een handvol regels; met pen en papier en een uitleg van hooguit vijf minuten zou je alles kunnen wat de computer kan. Je kan het alleen niet miljarden keren per seconde, ‘en dat telt op,’ voegt Paul Ford er aan toe, ‘die pure snelheid maakt het mogelijk om niet één, maar meerdere lagen van zinsbegoocheling toe te passen, kaarttruc op kaarttruc.’ Dus, terwijl hij niet meer doet dan 0-en en 1-en schuiven, líjkt het of mijn horloge mij begrijpt. De lijst aan individuele computerinstructies nodig om die schijn te wekken is, alleen al in dit voorbeeld, zo onvatbaar lang dat alle programmeurs in de wereld tezamen het niet zou lukken deze handmatig binnen een redelijke termijn op te stellen. Laat staan dat ze dat in zo’n goede samenspraak zouden kunnen doen dat het eindproduct ook echt zou werken.
Het echte wonder is niet dat een brok van kunststof, kristal, metaal doet alsof het mij begrijpt, dat is slechts de manifestatie. Het echte wonder is dat alle inspanningen die hier aan ten grondslag liggen zó samenwerken en in elkaar grijpen dat het product oneindig meer wordt dan de zielloze, samenstellende delen.
Wie informatica studeert, hoort vroeg of laat [5] van Edsger Dijkstra, die in tweede helft van de vorige eeuw hoogleraar informatica in Texas was en, zoals de naam al doet vermoeden, een Nederlander. Hij was meer dan zes decennia geleden een van de grondleggers van de informatica. Hij benaderde het programmeren vanuit de logica, het wiskundig model en volgens het aan hem gewijde Wikipedia-artikel verhief hij het vak ‘van aanmodderen tot wetenschap’. Een beschrijving die steekt omdat het de vinger op mijn onzekerheid legt. Ondanks mijn vroege start stroomde ik pas veel later zijdelings in het programmeren in en ben ik geen geschoold informaticus.
Wat Edsger Dijkstra de ICT heeft gegeven is het besef dat programmeren gestructureerd aangepakt moet worden, en hij heeft organiserende principes geformuleerd waarmee dat mogelijk is. De hele kathedraal van menselijk vernuft die de ICT naast al het andere óók is, rust op fundamenten waar hij aan gewerkt heeft.
Telkens wanneer een computer opstart, speelt die in zekere zin een stuk ICT-geschiedenis na
Een 1 wordt een 0 en die weer een 1 en een ander wordt dat niet, of misschien wat later. Om ook maar iets met computers te kunnen doen, moet het proces waarin die enorme aantallen 0-en en 1-en steeds maar wijzigen hanteerbaar worden. Dat gaat niet in één keer, maar stapsgewijs, gelaagd. Als eerste wordt die wereld van 0-en en 1-en aan het oog onttrokken: groepjes 0-en en 1-en worden weergegeven als getallen, wijzigingen daarin worden uitgedrukt in woord-labels als ADD, SUB, INC bijvoorbeeld, voor optellen, aftrekken en verhogen met 1. Labels die al iets herkenbaars hebben. Niet voor de computerchips die de opdrachten uitvoeren, natuurlijk, die zal het worst wezen, maar voor ons, mensen, programmeurs; door zo’n lijst met woord-labels te lezen, kunnen we een indruk krijgen wat er gebeurt. Een computerchip bundelt logische lijstjes van dit soort labels in een instructie. Een enorme waslijst aan basishandelingen kan zo al in een kortere lijst instructies uitgedrukt worden.
Ooit zijn er, zoals baron Von Münchhausen zich aan de eigen veters uit het moeras trok [6] , handmatig lijsten van dit soort instructies opgesteld, die in staat zijn om geautomatiseerd lijsten van instructies op te stellen. Deze programma’s worden gevoed met opdrachten uit een algemenere lijst, een programmeertaal. Als een wonderbaarlijke vermenigvuldiging worden enigszins begrijpelijke zinnen in zo’n programmeertaal automatisch omgezet in lijsten en lijsten aan instructies, die op hun beurt weer in waslijsten en waslijsten basale handelingen met enen en nullen omgezet worden.
Dit is de truc die mogelijk is door de formele basis van programmeren die Dijkstra formuleerde: een combinatie van een formele taal en een programma dat die formele taal geautomatiseerd vertaalt levert een computertalig Lego op, waarin elk nieuwe bouwlaag past op andere bouwlagen en het tegelijk mogelijk maakt er bovenop te bouwen.
Programmeren betekent: vertrouwen op wat anderen al hebben uitgeschreven
Paul Ford zegt hierover: ’Terwijl je over de schouder van een programmeur meekijkt, zou je kunnen denken dat programmeren complex en saai is, maar het onttrekt juist onvoorstelbaar uitgestrekte, repetitieve saaiheid aan het oog’. Programmeren is niet de dingen uitschrijven die allemaal precies moeten gebeuren, maar juist zo min mogelijk uitschrijven wat precies moet gebeuren. Programmeren betekent: vertrouwen op wat anderen al hebben uitgeschreven. Programmeren is ook: anderen dat vertrouwen geven over jouw programmeerwerk.
Onlangs is er bij ons thuis na bouw- en renovatiewerk een nieuwe ruimte gestuukt. Van al het achterliggende, water en elektriciteit, zowel oud als nieuw als omgelegd, oorspronkelijke buitenmuur, een stuk binnenmuur, houtskeletbouw, gipsplaten, gaten gevuld met mortel, en de ruwe beton van het originele pand, van al deze elementen kortom, netjes, slordig en aangelegd door verschillende mensen op verschillende tijdstippen, maakte de stukadoor een strak en uniform geheel dat de basis vormt voor ons interieur. Voor een deel lijkt het werk van een programmeur daarop: achterliggende concepten, programma’s en andere digitale bouwwerken aan het oog onttrekken en voorzien van een uniforme manier om daar gebruik van te maken.
De ICT is niet alleen een kathedraal van logica, van formele, mathematische principes, maar ook een van mensenwerk
Een andere Nederlander in de informatica met wereldwijde impact is Guido van Rossum. Hij stond aan de wieg van de programmeertaal Python, die is uitgegroeid tot een van de meest gebruikte programmeertalen. Hij werkte voorheen bij Google en nu voor Dropbox, platforms die op basis van zijn programmeertaal zijn ontwikkeld. Een van z’n uitgangspunten is dat je programmeert voor andere mensen, en niet voor de computer. De computer redt zich immers wel, het formele bouwwerk dat er aan ten grondslag ligt zorgt daar wel voor. ‘Programmeertalen zijn hoe programmeurs hun ideeën uitdrukken en overdragen — niet computers, maar andere programmeurs zijn hun publiek.’ Dat uitgangspunt leidt ertoe dat een van de belangrijkste kenmerken van Python de leesbaarheid is, niet zozeer voor de computer, dus, maar voor de mens. Voorbeeld daarvan zijn de nadrukkelijke regels voor het gebruik van inspringen, regellengte en regelval, en voor het toepassen van witregels, die maken dat de logische structuur van een stuk code in een oogopslag duidelijk is, je kan de programmeur zien denken.
Daarnaast is Python een programmeertaal die de toegang tot heel veel verschillende onderliggende bouwlagen verenigt en uniformeert. Dat maakt het een heel krachtige taal, niet omdat het de pure rekenkracht van een computer ten volle benut [8], maar omdat het de volledige Alexandrijnse bibliotheek van mogelijkheden, ideeën en producten van anderen ontsluit.
De ICT is niet alleen een kathedraal van logica, van formele, mathematische principes, maar ook een van mensenwerk. ‘Programmeertalen,’ volgens Paul Ford, ‘zijn grote, complexe, dynamische uitdrukkingen van menselijke cultuur’. Die cultuur leren kennen en leren gebruiken, je weg er in weten te vinden en er aan bij dragen maken programmeren ook tot een ambacht. Daardoor durf ik na vele jaren iets met computers doen te beweren dat ik een programmeur ben. Ja, het helpt als je het vak studeert en leert waarom en de manieren waarop het programmeren gestructureerd aangepakt wordt, maar het is maar een deel van dat ambacht.
Als zodanig had het in Jan Luykens Afbeelding der Menschelyke Bezigheden kunnen staan. Eén in de reeks gravures: Boekdrukker, Glasblazer, Metzelaar — vanwege de verbouwing bleef ik hier even bij hangen: De Metzelaar verzorgt de Muuren/Om grijze Jaaren te verduren/Hij werd van Slofheid overtuigd/Trekt hij een Zijmuur op die buigt — Boekbinder, Programmeur dus, Bierbrouwer, ook heel erg belangrijk, en — echt waar, het staat erin als ambacht — Koning.
Een gravure van een gebogen achter een bureau gebogen figuur, we kunnen vaag een vierkant apparaat, piepklein scherm en verduisterde ramen herkennen, met onder de gravure het kwatrijn:
De Programmeur temt de Machine
Opdat die den Menschen diene
Van die Menschen de verhaelen
Sal hij in ene digi Tael vertaelen.
[1] De enige vorm van opslag in die tijd voor bureaucomputers, 360kB op een kwetsbaar en slap magnetisch schijfje van ruim 13 cm in een flexibel plastic omhulsel.
[2] Ik bezat daartoe een eigen tegen overschrijven beveiligde floppy die ik van gedurende maanden opgespaard zakgeld gekocht had.
[3] Plaatje van een in puntjes geprinte letter.
[4] https://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/, een interactief essay met de lengte van een kloeke novelle, dat in 2016 de National Magazine Award won.
[5] Nou ja, geloof me: eerder vroeg.
[6] Ook de Engelse term voor het opstarten van de computer, booten, kort voor bootstrapping, vindt zijn oorsprong in deze Münchhausener mythe. [7]
[7] Telkens wanneer een computer opstart, speelt die in zekere zin een stuk ICT-geschiedenis na: eerst worden er basissets aan instructies geladen die gebruikt kunnen worden om complexere, meer samengestelde instructiesets mee uit te voeren, als laatste de laag aan instructiesets die de menselijke gebruiker in staat stellen een interactie met de computer aan te gaan.
[8] Dat doet het niet.
Dit essay kwam tot stand in samenwerking met De Nieuwe Garde. Bij de essays die De Nieuwe Garde voor begeleiding aanneemt, wordt de voor het stuk ideale mentor gezocht. Marten Hoekstra werkte samen met Heleen Oomen, die zijn essay namens Hard//hoofd redigeerde.

Marten Hoekstra is een schrijver die iets doet met computers. Verhalen en essays van hem verschenen eerder in onder andere De Revisor, Sintel en de bundel Straat!

Kazuma Eekman is een Rotterdamse kunstenaar. Hij heeft een passie voor schilderkunst en laat zich daar door inspireren in zijn illustraties. Voornamelijk werkt hij met acrylverf, maar hij is ook vaak te vinden in de zeefdruk werkplaats. Naast de vrije kunsten speelt hij graag video games en is een fanatiek hardloper.