Enkele begrippen rond algoritmen (en programmeren) komen we ook in het dagelijks leven tegen.
Als je een taart wilt bakken, heb je een recept nodig. In het recept staat wat je nodig hebt:
ingrediënten (bijvoorbeeld bloem en boter), en hulpmiddelen (zoals een kom, een mixer, en een oven).
Het recept geeft stap voor stap aan hoe je van de ingrediënten, met deze hulpmiddelen, een taart bakt.
Met een recept alleen gebeurt er nog niets: je hebt een kok nodig - iemand nodig die het recept kan uitvoeren. Deze heeft de bijbehorende hulpmiddelen nodig, en de ingrediënten. Daarna kan hij aan de slag gaan met het bakken van de taart.
Het uitvoeren van de verschillende stappen van het bakken kost tijd. We noemen iets dat in de tijd verloopt een proces.
Als alles goed gaat, heb je als resultaat van het bakproces een taart.
Aan de taart kun je niet meer zien hoe deze gemaakt is: welke stappen er gebruikt zijn, of hoe lang dit geduurd heeft. Maar als je de taart wilt opeten is dat ook niet je eerste vraag.
We hebben in dit voorbeeld te maken met de volgende begrippen:
Een algoritme is een handelingsvoorschrift: dit beschrijft precies welke stappen je moet nemen voor het bereiken van het beoogde resultaat.
In het dagelijks leven vinden we meer voorbeelden van scripts, processoren (actoren) en processen:
Script/Programma | Proces | Processor | Resultaat |
---|---|---|---|
Recept | Bakken | Kok | Taart |
Breipatroon | Breien | Breimachine | Trui |
Routebeschrijving | Reis | Automobilist | Bestemming bereikt |
Draaiorgelboek | Afspelen | Draaiorgel | Muziek |
Optellen | Rekenen | Boekhouder | Totaal |
De verschillende scripts zijn geschreven voor een bepaald soort actor (processor).
Een recept is geschreven in een taal die door een kok begrepen wordt.
Als je wilt leren koken, dan moet je de receptentaal (of kokstaal) leren begrijpen.
Een algoritme beschrijft precies de stappen die je moet nemen om het gewenste resultaat te bereiken. Als de beschrijving precies genoeg is en voldoende detail bevat, dan kan deze ook automatisch uitgevoerd worden. Denk aan het algoritme voor het optellen van twee getallen in decimale notatie: dit kun je met de hand uitvoeren, zonder erbij na te denken; je kunt het ook automatisch laten uitvoeren, door een rekenmachine.
Enkele van de voorlopers van de huidige computers zijn de muziekautomaten, zoals muziekdozen en draaiorgels; en het Jaquard-weefgetouw. Deze machines kunnen een algoritme in een gespecialiseerd domein automatisch uitvoeren. Een verschil met de huidige computers is dat deze laatste universeel zijn: in principe kunnen ze alle mogelijke algoritmen uitvoeren.
Een script of programma voor een computer schrijven we in een programmeertaal. Dit script legt precies en volledig vast welke stappen de computer moet nemen bij het uitvoeren van het proces.
Een programma is een algoritme opgeschreven in een programmeertaal. Je kunt eenzelfde algoritme, bijvoorbeeld voor het vermenigvuldigen van twee getallen, in verschillende programmeertalen noteren: het blijft hetzelfde algoritme.
Vergelijk een algoritme met een recept: hetzelfde recept kun je in verschillende talen opschrijven, maar het blijft hetzelfde recept - of dit in het Frans, in het Engels of in het Nederlands geschreven is.
Een computer voert de opdrachten in het programma heel precies en letterlijk uit. Een computer doet wat je zegt - en dat is misschien niet altijd wat je bedoelt. En omdat computers zo snel zijn, loopt het soms erg snel uit de hand.