Borrelpraat

The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.” — Edgser W. Dijkstra


“Proost!” – en toen begon iemand over de uitvinding van het getal 0, en hoe bizar het is dat er ooit een tijd is geweest dat er geen nul was.

Dit is de ultieme borrelpraatvraag: – is 0 ontdekt of uitgevonden?


*

Met de late Wittgenstein in het achterhoofd1 en een drie slokken lauwe pils achter de kiezen, meende ik: 0 is een concept, en concepten zijn mensenwerk, en dus is 0 uitgevonden.

Rekenen-zonder-nul is een taalspel en rekenen-met-nul is een extensie daarvan. Rekenen-zonder-nul is een spel dat op zichzelf staat, en is dus niet een incomplete versie van het “eigenlijke” rekenen-met-nul.

Die opvatting lijkt tegenintuïtief, omdat het gebruik van 0 voor ons zo vertrouwd is. Maar bedenk: er was ook een tijd vóór negatieve getallen, en een tijd vóór irrationele getallen. Naarmate de concepten nieuwer en minder vertrouwd worden voor ons niet-wiskundigen, komt hun “kunstmatigheid” steeds duidelijker naar voren.2

Concepten zijn gereedschappen – voor ons handelen en voor ons denken. Zoals een hamer ons in staat stelt om tafels en stoelen en kasten te bouwen, stelt 0 ons in staat om over de afwezigheid van appels of peren te praten.


*

Maar dat perspectief op de zaak impliceert niet dat het idee (de intuïtie) dat 0 ontdekt is, er helemaal naast zit. Het concept (de notatie en de rol die het in het taalspel speelt) mag dan een uitvinding zijn, zou je kunnen zeggen, maar dat was het concept uitdrukt is iets “echts” – dat blijkt uit het feit dat we er mee kunnen werken.

De uitdrukking “ontdekken” is interessant in deze context. Het concept stelt ons in staat om bepaalde aspecten van de werkelijkheid op te doen lichten of te ontsluieren.3 En het tegendeel is natuurlijk ook waar: het concept versluiert of bedekt (nota bene!) bepaalde aspecten van de werkelijkheid, bijvoorbeeld omdat ze binnen de context van het taalspel niet relevant zijn.

Toch voelt de formulering vreemd, “nul bestaat echt.” Dat wat de zin uit probeert te drukken, is ontegenzeggelijk waar. Maar of die woorden in die volgorde daar de juiste voor zijn, valt te betwisten.


*

Concepten zijn abstracties van de werkelijkheid. 0 is een abstractie van afwezigheid binnen het domein van getallen. 0 stelt ons in staat om het getalsmatig over afwezigheid te hebben.

Het stelt ons in staat om te rekenen (het taalspel rekenen te spelen) in contexten waarbinnen dat voorheen niet mogelijk was, namelijk binnen contexten waarin er niets te tellen valt.

We moesten een abstractie introduceren om het binnen deze context over afwezigheid te kunnen hebben. Vóórdat de abstractie was geformuleerd, was er natuurlijk al afwezigheid – er was alleen geen mogelijkheid om die getalsmatig uit te drukken.


*

Abstracties worden ontdekt, geformuleerd, geïntroduceerd, verfijnd – als softwareontwikkelaars doen we dan aan de lopende band. Een class drukt een idee (concept) uit, en een method op die class ook, en de constellatie van classes die een aggregaat vormt ook, en service die dat aggregaat consumeert ook.

Een goede abstractie drukt iets “echts” uit – dat blijkt uit het feit dat we er mee kunnen werken. Een goede abstractie stelt ons in staat om iets wat voorheen moeilijk of omslachtig was, nu eenvoudig voor elkaar te kunnen krijgen.

Een goede abstractie ont-dekt de aspecten van de werkelijkheid die voor onze huidige taak relevant zijn. – Of: Wij ontdekken de aspecten van de werkelijkheid die voor onze huidige taak relevant zijn door een abstractie te introduceren.


*

Abstracties zijn mensenwerk. Abstracties kunnen dus ook hun doel missen. Dat is eenvoudig om over het hoofd te zien, wanneer je je alleen op succesvolle abstracties als 0 richt.

Maar softwareontwikkeling zit vol verkeerde abstracties. Vaak zijn het zulke abstracties die legacy systemen legacy maken, dat wil zeggen: moeilijk om mee te werken.


*

Het getal 0 is uitgevonden – ja. Maar die uitvinding ont-dekte een voor ons relevant aspect van de werkelijkheid binnen het domein van de getallen (waar het tot dusver be-dekt was), en gaf haar een canonieke uitdrukking.

Wij ontdekten dat we dat aspect van de werkelijkheid met deze uitvinding op een voor ons nuttige manier konden behandelen. – Iemand nog pils?


  1. Ludwig Wittgenstein is mijn filosofische held, zijn portret hangt bij ons op de wc, samen met dat van Bob Dylan en David Lynch. Ik schrijf graag over hem in relatie tot softwareontwikkeling, bijvoorbeeld hier, hier, hier en hier. En hier. ↩︎

  2. Ik vermoed dat deze invalshoek eveneens geïnspireerd is door Douglas Hofstadters beschrijving van formele systemen in Gödel, Escher, Bach↩︎

  3. Heidegger schrijft daar onder andere over. ↩︎

abstracties · betekenis · filosofie · intentie van code · wittgenstein, ludwig