Door Roy Evers
In die tijd was programmeren een universitair vak. Omdat de werking van computers gebaseerd was op wiskundige principes, waren de wiskundestudenten de eersten die het vak kregen. Daarna volgden snel de andere technische richtingen: natuurkunde, elektrotechniek en werktuigbouw. Maar verschil moest er wezen. De technici leerden hoe ze de computer formules kon laten uitrekenen: een magnetisch veld, de spanning op een kabel, de doorbuiging van een balk en allemaal van dat soort dingen waar wiskundigen hun hand niet voor omdraaiden. Daarvoor gebruikten zij de programmeertaal Fortran (Formula Translation). Die taal was voor ons verboden.
Professor Dijkstra, de hoofdman van het programmeeronderwijs bij de wiskundeafdeling, had dat verboden. Hij noemde Fortran ‘een infantiele wanorde’. Wij gebruikten Algol (Algorithmic Language), omdat wij voor heel andere doeleinden programma’s schreven.
,,Zet hem hier maar neer, Robbie. Dank je wel. Robbie, kom even terug, de koffie is koud, voel maar. Neem hem maar mee en breng een kop hete koffie. Wat is er met jou aan de hand de laatste tijd?”
Goed, waar was ik gebleven? Ja, wij schreven andere soort programma’s, we schreven algoritmen. Ik moet dit even uitleggen.
,,Dank je wel, Robbie. Nu is het prima. Ga maar weer in je hoek staan totdat ik je nodig heb.”
Wij schreven dus algoritmen. Dat zijn programma’s die door andere programma’s gebruikt worden om bepaalde taken uit te voeren. Bijvoorbeeld, als een programma een serie meetwaarden moet sorteren, dan kan dat programma een sorteerprogramma aanroepen om dat werk te doen. Iemand moet dat sorteerprogramma schrijven dat door andere programma’s gebruikt wordt. Dat deden wij dus.
,,Robbie, er is iemand aan de deur, ga even kijken wie dat is. Niet zo traag, ja. Volgens mij word je een beetje oud. Beslis zelf maar of je hem binnenlaat of niet. Het liefst laat je hem niet binnen, ik ben hier een verhaal aan het vertellen.”
Het schrijven van algoritmen is een verantwoordelijke taak, want ze moeten feilloos werken, er mogen geen fouten in zitten. De gebruikers moeten er blindelings op kunnen vertrouwen. Dus, uitvoerig testen, zegt u. Nee, zei professor Dijkstra, door te testen bewijs je niet dat er geen fouten in het programma zitten. Misschien heb je niet lang genoeg getest. En als je een fout ontdekt, dan heb je alleen maar aangetoond dat er fouten in het programma zitten. Testen toont alleen de aanwezigheid en niet de afwezigheid van fouten aan.
,,Wie was het, Robbie? Wat een verrassing, heb je haar met eerbied behandeld? Wat? Heb je haar weggestuurd? Alle chips in een zakje, stom rund. Nu moet je echt met pensioen. Ga weg.”
Ik ben vergeten waar ik het over had. O ja, testen is dus niet afdoende. Wat dan? Je moet wiskundig bewijzen dat het programma correct is, zei de professor. Hij introduceerde de methode Gestructureerd Programmeren en er waren maar weinig studenten die zijn opgaven konden maken. Hij verhuisde later naar de University of Texas, waar de studenten blijkbaar slimmer waren.
Een ander aspect was dat algoritmen snel moesten zijn. Niet omdat de gebruiker haast had, de mensen waren toen niet zo ongeduldig als nu, maar computertijd was peperduur.
,,Wat zeg je, Robbie? Nee, ik ben niet ongeduldig, jij wordt traag. En val mij niet in de rede, ja.”
Computers waren duur en traag. Je moest er zuinig mee omgaan. Dat veranderde met de tijd. Computers werden sneller en goedkoper. Gordon Moore (Moore’s Law) voorspelde dat de capaciteit en de snelheid van de computer iedere achttien maanden zouden verdubbelen. Hij kreeg gelijk. Nieuwe computers volgden elkaar snel op. Alles moest sneller. De machines werden ook steeds kleiner. Kleiner, sneller en meer capaciteit. Te gek om los te lopen.
Nu lopen wij met een computer op zak. Iedere drie maanden komt er een nieuw model uit en doen wij het oude weg.
,,Wat is er nu weer? Nee, je hoeft niet bang te zijn, ik doe je nog niet weg. Een robot van een jaar oud kan nog even mee. Maar je wordt wel een beetje traag.”