vrijdag 23 september 2011

De kunst van het elegant programmeren.

Een paar weken geleden ontmoette ik iemand die een bedrijfje in maritieme automatisering had en kwam ik in gesprek over de stabiliteit van software. Alhoewel ik zeer geƫrgerd kan zijn over (en soms wel eens schade heb opgelopen door) niet functionerende of vastlopende software, is het nooit rampzalig of levensbedreigend geweest. Maar er zijn omstandigheden waarbij dat anders is. Een schip in een zware storm op volle zee heeft niet zo veel aan een 0800-helpdesk of een 'community' als essentiƫle navigatiesoftware vastloopt. Het bedrijf van mijn gesprekspartner besteedt dan ook bijzonder veel aandacht aan de stabiliteit van software. Ik kende een vergelijkbaar verhaal over de software voor besturingssysteem van de Maeslantkering in de Nieuwe Waterweg, dat de scharnieren van deze stormvloedkering moet aansturen. Het foutloos maken van dit relatief simpele stuk software (het programma Word is ingewikkelder) heeft jaren gekost.

Maeslantkering. Foto: Rijkswaterstaat

En zo kwamen we te spreken over Edsger Dijkstra, de grote leermeester op het gebied van 'elegante software'. Of eigenlijk 'elegant programmeren'.

Samengevat vindt hij dat software af moet zijn voordat je het de wereld in gooit en er de versie 1.0 op plakt. En met af bedoelt hij ook echt af.

Alhoewel zijn 'lifestyle' soms wat 19e eeuws wetenschappelijk over komt, heeft hij wel een belangrijk punt te pakken op het gebied van software. Niet in alle gevallen is het goed om de basis (de 'core') van een besturingssysteem heel 2.0 alvast te verkopen aan / delen met de klant / crowd en daarna aan te passen op basis van berichten uit het veld. Dan krijg je producten met een onstabiele basis, die je decennia lang blijft achtervolgen. Een mooi voorbeeld is de ontstaansgeschiedenis van MS-DOS (1982), waar we nu in het nieuwste MS-Windows (2010) nog last van hebben.

De drie filmpjes hieronder vormen samen een korte documentaire over het leven en denken van Dijkstra. Interessant vind ik zijn visie op de relatie informatica en computers: Informatica gaat net zo min over computers als astronomie over telescopen. Mooi om te bekijken.


Geen opmerkingen: