22 juli 2013

Dijkstra en hoe je moet nummeren

In de IT-wereld is het heel gebruikelijk om, als je een rij getallen hebt, die aan te geven met  
etc. Daarbij valt op dat ze het nummeren beginnen met 0.
Dijkstra verdedigt dat door simpel te stellen dat "starting with 0, however, gives the nicer range 0 ≤  i < N". Als argument lijkt dat me absoluut onvoldoende. 
Een beter argument anno nú is dat het, in de IT-wereld althans, al 30 jaar gebruikelijk is, maar als we goede redenen vinden om dit gebruik af te schaffen, vervalt ook die reden.
Laat ik een tweetal redenen aanvoeren.

Allereerst begint ieder kind dat tellen leert, met 1 en leert op die manier de relatie die er is tussen de gehele getallen en een aantal objecten. Geen zinnig mens, en zelfs geen IT-professor, zal zijn kinderen leren om bij 0 te beginnen. Dan zou het tot een jaar of 6, 7 duren voor kinderen met tellen kunnen beginnen, want op die leeftijd schijnt het concept van 0 door te dringen. 
Omdat in vroeger tijd het vanwege de traagheid van computers niet ongebruikelijk was dat de mens zich aan de computer moest aanpassen – als student tikte ik mijn programmaatje en de gegevens daarvoor in op een 'flexwriter' die een ponsband als output had die dan aan de computer werd gevoerd die er in de 'quick service' vervolgens 30 seconden mee rekende en de output daarvan op papier printte – dus leek het toen (mogelijk) een goed idee het nummeren bij 0 te beginnen.
Nu is daar geen sprake meer van. Een beetje smartphone heeft een sterkere processor dan de computers aan boord van de maanlanders. Dus moeten we af van alles wat het gebruik van de computer, inclusief het programmeren, voor de mens nodeloos ingewikkeld of ongemakkelijk maakt.
GEBRUIKSVRIENDELIJKHEID moet met hoofdletters worden geschreven, ons daarbij realiserend dat een programmeur ook maar een gebruiker is. Dus als pubers gaan programmeren moeten ze gewoon bij 1 beginnen met tellen.

Een tweede argument is dat het niet ongebruikelijk is dat we achterenaan beginnen met tellen, dat wordt dan "de laatste, de op éen na laatste, ..." etc. In de IT-wereld wordt dat wel aangegeven met
 
waarbij de negatieve getallen worden gebruikt om achteraan met tellen te beginnen. Omdat –0=0 kun je natuurlijk niet met –0 beginnen. Maar dan moet je ook consequent zijn en aan het begin starten met 1, zodat we een goeie symmetrische nummering krijgen.

Geen opmerkingen:

Een reactie posten