Informatica als wiskundige discipline.

In het volgende is mijn visie op het vak “informatica” neergelegd, een visie die sterk medebepalend is zowel voor mijn opvattingen over gewenste onderwijsactiviteiten als over mijn opvattingen over gewenste researchactiviteiten.

Het is een werkterrein dat actueel geworden is door de komst van machtige rekenmachines en een ontwakende technologie om machines te maken die opgebouwd zullen zijn uit een hoeveelheid actieve elementen die een orde van grootte hoger ligt dan wat wij nu gewend zijn. De gebieden, die ik kortheidshalve aanduid as “machinegebruik” en “machineontwerp” werpen enorme problemen op, die met “schaalvergroting” passend gekarakteriseerd zijn, mits wij ons steeds voor ogen houden dat deze schaalvergroting onvoorstelbaar groot is en wij ons tevens realiseren, dat wanneer twee dingen in een of ander opzicht een factor verschillen, dit verschil, naarmate de factor groter wordt, minder als gradueel en meer als essentieel verschil ervaren wordt.

De nuchtere observatie is dat wij in het afgelopen decennium al met een dusdanige schaalvergroting te maken hebben gehad, dat zowel machineontwerp als machinegebruik ons met een uitdaging hebben geconfronteerd, waartegen onze huidige intellectuele vermogens nauwelijks of zelfs niet meer opgewassen zijn. De problemen om een ontwerp, hetzij hardware, hetzij software, vrij van logische fouten te krijgen, begint formidabel te worden, reeds nu manifesteert zich een duidelijke discrepantie tussen wat wij in elkaar kunnen denken en wat van ons gevraagd (en daardoor door ons geprobeerd) wordt in elkaar te denken. Men hoeft de huidige ontwikkeling maar met een half oog gade te slaan om ervan overtuigd te raken, dat deze discrepantie alleen maar heel veel schrijnender zal worden. Daarom acht ik het de hoofdtaak van het vak informatica als geestelijke discipline om alle zeilen bij te zetten opdat wij beter opgewassen raken tegen deze intellectuele uitdaging.

Hoe wij ooit de conceptuele klaarheid kunnen bereiken in wat zonder die klaarheid een onbeheerste chaos wordt, zou onvoorstelbaar zijn, ware het niet, dat er een eeuwenoude traditie bestaat van mensen, die zich als hoodtaak gesteld hebben in een bepaald gebied door een passend gebruik van hun abstractievermogen juist de grootst mogelijke klaarheid te bereiken. Deze mensen heten sinds eeuwen “wiskundigen” en het is daarom dat ik de informatica slechts zien kan als een nieuwe tak der wiskunde, met de nadruk op “nieuw” en op “wiskunde”. Het werk van de informaticus is het beheerst ontwerpen van “mechanismen”. Als iemand zegt “dat is nauwelijks wiskunde”, dan bedoelt hij daarmee, dat een groot gedeelte van de thans en vogue zijnde “bags of tricks” slechts beperkt hier bruikbaar zijn, dan bedoelt hij, dat traditioneel wiskundigen zich maar zijdelings met de studie van “mechanismen” hebben beziggehouden. Dat is waar, maar ik kan me niet anders voorstellen, dan dat deze traditie in het verleden gegroeid is omdat in dat verleden deze problemen zo weinig actueel waren; ik zie niet in waarom dat zo zou moeten blijven, sterker ik vind dat het riet zo hoort te blijven en als het aan mij ligt zal het ook niet zo blijven. Wie zegt “informatica is nauwelijks wiskunde” zegt voor mijn gevoel —en daar kan ik het dan wel mee eens zijn— “het is niet een van de traditionele takken der wiskunde”. Zoveel over de nadruk op het woordje “nieuw”. De nadruk op het woord “wiskunde“ komt omdat ik de wijze van werken van de competente informaticus ervaar als de wijze waarop de wiskundige werkt: er worden dezelfde eisen gesteld aan zijn vermogen tot abstractie en tot conceptvorming, aan rigot en elegance en —last but not least— het onderwerp is in wezen het abstracte mechanisme. Ik heb hier niemand minder dan Marvin Minsky aan mijn zijde —als je een beroemd man met instemming kunt citeren, vecht je zijn autoriteit niet aan!— die bij de bespreking van de relatie tussen (hardware) machine en manual ergens betoogt dat het manual niet een (eventueel onjuiste) beschrijving van de gegeven machine is, maar dat het manual de conceptuele machine beschrijft in termen waarvan de gebruiker denkt, terwijl de geassocieerde machine niet anders is dan een (naar wij hopen acceptabele) implementatie van deze conceptuele machine.