donderdag 12 oktober 2017

Algoritmen 1

Als je het woord algoritme opzoekt dan krijg je als antwoord dat een algoritme een reeks instructies is die van een bepaald beginpunt naar een bepaald doel leidt. Het woord is afkomstig uit het Arabisch en is nog een herinnering aan de vaak ondergewaardeerde Islamitische bijdrage aan onze kennis.
Om zo'n reeks instructies te geven moet je een idee hebben hoe werkelijkheid er uitziet en wat je ermee wilt bereiken.
Een reeks instructies dus, zoals je ze in ieder recept tegenkomt. Bijvoorbeeld voor het maken van hutspot voor vier personen.
Ingrediƫnten: 500 gram klapstuk, 500 gram aardappelen, 500 gram winterwortelen en uien, laurierblad, peper en zout, water.
Instructies: Trek van het klapstuk bouillon (met laurierblad, zout en peper naar smaak).  (ca twee uur op een laag vuur),
haal het klapstuk uit de bouillon
schil de aardappelen, snijd de schoongemaakte wortels in stukjes,
schil de uien en snijd ze in stukjes.
kook de aardappelen, de wortels en de uien in de bouillon gaar
laat een rookworst in de laatste minuten meekoken
giet het overbodige vocht af
stamp de aardappels, de uien en de wortels tot een egale massa
snij het klapstuk en de rookworst in stukjes
dien de hutspot met klapstuk en rookworst op.

U ziet het: het recept is een algoritme. Onze wereld is vol van die algoritmen. In boekhandels nemen de receptenboeken met recepten uit elke keuken die men maar kan bedenken een belangrijke plaats in. U vindt soortgelijke boeken voor iedere doe-het-zelver. Hoe maak ik een kast, sluit ik een lamp aan, leg ik een vloer? Op YouTube vindt u filmpjes waarin stap voor stap - het algoritme - wordt uitgelegd hoe u het scharnier van uw kast moet verstellen, etc. Het algoritme is overal in ons dagelijks leven.
Het zal u niet verwonderen dat het algoritme ook het uitgangspunt is voor ieder computerprogramma. Immers het computerprogramma is een reeks instructies die de computer uitvoert om iets te doen. Het zijn instructies in machinetaal. Om die als mens te kunnen begrijpen heb je al gauw deskundige hulp nodig. En omdat die machinetaal echt heel erg basaal is heeft men in de loop van de tijd van die instructies in groepjes samengevoegd. Op die manier maakte men programmeertalen. Ook de instructies in die programmeertalen worden voor de goedwillende leek al gauw te ingewikkeld en onleesbaar.
Je moet er maar op vertrouwen dat de programma's goed zijn. Want ze zitten overal die programma's. In uw telefoon en in uw auto, in de televisie en de afstandbediening. En tegenwoordig ook in uw wasmachine en in uw computer. U bent er inmiddels aan gewend en u vertrouwt erop omdat het werkt. U vraagt zich ook niet meer af wat er allemaal voor nodig is aan instructies (recepten) voordat u met uw auto op pad kunt. U vindt het immers vanzelfsprekend dat er een lampje gaat branden als u een deur in de auto niet goed hebt gesloten, of ergens een pieptoon u begint te hinderen omdat u de riem niet hebt omgedaan.
Toch zit achter ieder algoritme iemand die een beeld heeft van wat goed rijgedrag is en dat goede rijgedrag voortdurend aan u voor houdt zolang u in de auto zit. Of anders gezegd: achter ieder computerprogramma zit een algoritme waarin iemand zijn opvattingen heeft neergelegd.
Kijken we nog even terug naar de hutspot: u ziet daar mijn opvatting: u hoeft geen klapstuk te nemen, u kunt de aardappelen, wortels en uien ook in schoon water koken, u kunt de verhoudingen veranderen (meer of minder aardappelen, wortels en uien).
Ieder algoritme weerspiegelt de opvattingen van de maker. Dat kan bijzondere gevolgen hebben. Vanuit mijn perspectief niet altijd even plezierig, maar daarover de volgende aflevering.   

Geen opmerkingen: