BLOGBERICHTEN
2024
DigiDokter Legt Uit Programmeertalen (Deel 2)
In het vorige deel hebben wij samen gekeken naar de drie verschillende “niveaus” van talen. Helaas kan een computer geen C, C++, Python of PHP, een computer kent alleen machinetaal. Maar hoe komen we van PHP helemaal naar machinetaal? Dat is de taak van de “compiler” of “interpreter”.Maar wat is nou het verschil? En zit er misschien nog een extra geheimpje verborgen? Dames, heren en alles daartussen of voorbij: ik ben Aroop Roelofs en in deze serie gaan we uitzoeken wat de verschillen zijn tussen “gecompileerde” en “geïnterpreteerde” talen!
De Compiler
Een “compiler” is een slim stukje software dat onze geschreven code samenvoegt en direct omzet naar machinetaal voor uitvoer op onze computer.
Alle instructies voor het programma staan in het bestandje wat uit de compiler rolt, klaar voor de uitvoer!
Niet alleen zet de compiler de taal om, maar vaak wordt het ook nog een beetje opgeschoont door de compiler om te zorgen dat de code beter presteert.
Talen die “gecompileerd” worden, hebben wel een groot nadeel: Het resulterende programma wordt in elkaar gezet voor één besturingssysteem en computerarchitectuur.
Een programma gecompileerd voor jouw Windows PC zal niet direct werken op een MacBook.
De Interpreter
Een “interpreter” verschilt van de compiler in dat het de code leest en meteen uitvoert.
De interpreter zorgt zelf voor het vertalen van onze code naar de machinetaal.
Het betekent dat het niet uitmaakt of je Windows, Mac of Linux gebruikt. De interpreter regelt dit helemaal voor jou.
Dit noemen we “Write-Once, Run Anywhere” (“Schijf eenmalig, draai overal”), lekker flexibel dus!
Een nadeel is wel dat de code dus nog ingelezen moet worden en optimalisatie moeilijker is, waardoor programma’s vaak langzamer zijn.
Een ontwikkelaar maakt dus de afweging snelheid t.o.v. flexibiliteit.
Is er een Middenweg?
Soms wil je het beste van beide werelden, jouw programma overal draaien maar toch hoge prestaties… Maar hoe doen we dat?
Daar hebben we een geheime truc voor: Bytecode!
Voor het maken van Bytecode gebruiken we zowel een compiler als een interpreter.
Op de machine van de ontwikkelaar, compileren we onze code eerst naar zogenoemde “Bytecode”.
Dit lijkt heel erg op machinetaal maar is het toch niet.
Op onze machines draaien we dan een speciale interpreter die deze bytecode omzet in machinetaal, zodat deze uitgevoerd kan worden door onze computer.
Programma’s die geleverd worden als Bytecode (denk bijvoorbeeld aan spellen als Minecraft) kunnen in sommige gevallen zelfs bijna even snel zijn als een equivalent in een gecompileerde taal.
Nawoord
We weten nu wat de verschillen zijn tussen gecompileerde talen, geïnterpreteerde talen en hebben we een mooie middenweg ontdekt!
Natuurlijk is software niks zonder de hardware, de fysieke computer dus!
Daarom gaan wij in de volgende editie een anatomieles volgen, om te ontdekken wat er nou allemaal in een computer zit.
Nieuwsgierig geworden? Houd dan vooral de website van het Meegazine in de gaten, of schrijf je in voor de Meegazine Nieuwsbrief; Dan zit je altijd op de voorste rij!
MEEGAZINE
ARCHIEF
Benieuwd naar de artikelen die de redactieleden van het Meegazine eerder hebben geschreven? Ons archief puilt uit van interessante artikelen die ook zeker het lezen waard zijn.