Profielfoto
Karl van Heijster

softwareontwikkelaar · filosoof · spreker

Oppervlakkige en diepe modules

Eén van de interessantste ideeën die John Ousterhout naar voren brengt in A Philosophy of Software Design, is de notie van oppervlakkige en diepe modules. Een module is oppervlakkig als deze veel (onnodige) complexiteit aan de gebruiker van de module openbaart. Ze is diep als ze die complexiteit juist verbergt.

Het geünificeerde domeinmodel, revisited

Binnen applicatie a is het zinvol om van conceptitems te spreken, binnen applicatie b niet. Binnen applicatie b is het zinvol om van de P-waarde (moeilijkheidsgraad) van een item te spreken, binnen applicatie a niet. Heeft het(zelfde) woord “item” dan dezelfde betekenis in binnen de context van beide applicaties, of niet? Moet het Item in het geünificeerde domeinmodel de property’s IsConcept of PValue bevatten?

Hoe heb je het volgehouden?

Software ontwikkelen is niet makkelijk, het is van zichzelf al niet makkelijk en het wordt nog moeilijker omdat je met mensen werkt en mensen zijn nooit makkelijk.

Borrelpraat #2

Hij dronk cola, ik een biertje – maar verder zitten we op één lijn. Het duurde niet lang voordat het over de zoekindex ging – altijd die verdomde zoekindex. “Dat is al vanaf het begin een pijnpunt,” bekende ik. “En ik ben zelf onderdeel van het probleem geweest.”

Wat vertelt de Turingtest ons?

Stel, een proefpersoon zou via een computerterminal twee gesprekken voeren: één met een mens, en één met een machine. Als hij niet zou kunnen onderscheiden welke van zijn gesprekspartners de menselijke is en welke de machine, dan kunnen we de machine redelijkerwijs “intelligent” noemen. Dit experiment is in de literatuur de Turingtest gaan heten, en wordt zowel geprezen als verguisd. Maar wat vertelt de Turingtest ons nu precies? Dat is het onderwerp van Bernardo Gonçalves’ essaybundel The Turing Test Argument.

Unittests vs. integratietests

Integratietests worden veelal gedefinieerd in contrast met unittests. Als we unittests beschouwen we als tests die (een eenheid van) gedrag testen, dan volgt daaruit dat integratietests niet het testen van gedrag als doel hebben. Integratietests verifiëren niet de inhoud van subsystemen, maar de interactie tussen subsystemen.

De vergeten tester

Twee dingen kunnen tegelijkertijd waar zijn. (1) Ik vind de tester de belangrijkste rol hebben in het team. (2) Ik wil geen tester in het team. – Ik wil haast zeggen: de rol van de tester is te belangrijk om bij een tester neer te leggen, maar die uitspraak is makkelijk te misinterpreteren en nodeloos provocerend. En toch…

(Kunstmatig) intelligent gedrag

Het immitatiespel van Alan Turing, ook wel bekend als de Turingtest, werd gedurende zijn eerste receptie als een behavioristisch argument geïnterpreteerd. Het gedachte-experiment werd opgevat als een voorstel om intelligentie te definiëren als het kunnen voeren van een gesprek.