Een interpreter is een computerprogramma dat steeds een statement van een gegeven broncode, die in een programmeer- of in een scripttaal is geschreven, vertaalt naar een voor de processor begrijpelijke vorm, en het dan meteen uitvoert. Dit in tegenstelling tot een compiler, die programma's in objectcode omzet en ze in die vorm opslaat, zodat ze later kunnen worden uitgevoerd.

De eerste interpreter kwam in 1963 voor BASIC uit, waarna veel andere interpreters volgden, bijvoorbeeld voor de programmeertaal Logo. Hoewel het idee achter interpreters al erg oud is, zijn ze nog steeds populair. Voorbeelden zijn JavaScript, dat tegenwoordig door alle bekende webbrowsers wordt ondersteund, en Python.

Verschillen met compilers

bewerken

Interpreters zijn flexibeler maar minder efficiënt dan compilers. Sommige programmeertalen lenen zich meer voor interpreters, omdat een interpreter tijdens uitvoering beschikbaar is om bepaalde diensten te verlenen, en een compiler niet. Andere programmeertalen lenen zich meer voor compilers, bijvoorbeeld als strong typing wordt toegepast. Bij herhaald gebruik van een programma is het een nadeel dat een interpreter de instructies telkens opnieuw omzet, terwijl dat bij een compiler maar eenmaal gebeurt, en het programma in vertaalde vorm bewaard wordt voor herhaalde uitvoering.

Een praktisch verschil is dat bij gebruik van een interpreter een fout in de syntaxis van een statement slechts wordt ontdekt indien en wanneer de interpreter op het punt staat het uit te voeren, terwijl bij gebruik van een compiler alle fouten in de syntaxis in één keer worden gemeld, en de uitvoering van het programma pas kan worden begonnen als ze allemaal zijn verbeterd.

Nuancering

bewerken

Strikt genomen vindt op een bepaald niveau altijd een vorm van interpretatie plaats bij de verwerking van computerprogramma's. De objectcode van gecompileerde programma's wordt bij uitvoering geïnterpreteerd. De instructies die de computer kan verwerken zijn in een Complex instruction set computer CISC nog betrekkelijk ingewikkeld, maar nieuwer zijn de Reduced instruction set computers RISC, die alleen elementaire instructies verwerken. Dit betekent dat de compiler meer werk moet doen en de objectcode groter wordt, maar de snelheid bij uitvoering neemt toe, omdat er bij uitvoering van de objectcode geen instructies meer geïnterpreteerd moeten worden.

Anderzijds begint een moderne interpreter meestal met het omzetten van de broncode naar een eenvoudiger tussenvorm.

Onder andere in verband met de beperkte geheugencapaciteit, die duur was, van de eerste computers werd een te interpreteren programma in de computers vaak met zogenaamde tokens opgeslagen in plaats van de volledige instructies. Een 'print'-instructie werd bijvoorbeeld opgeslagen als getal/token 178. Dit versnelde ook de uitvoer omdat in plaats van vijf geheugenplaatsen voor 'print' maar een geheugenplaats hoefde te worden uitgelezen en geïnterpreteerd.