Hoppa till innehållet

Interpretator

Från Wikipedia
(Omdirigerad från Programtolk)

En interpretator eller programtolk är ett datorprogram som utför de aktiviteter som en viss programtext beskriver. Detta till skillnad mot en kompilator som översätter programtexten till maskinkod så att den senare kan exekveras direktCPU-nivå, något som ofta ger betydligt bättre prestanda.[1] Alla språk kan i princip, beroende av implementation, interpreteras likaväl som kompileras. Exempel på språk som ofta interpreteras är: Basic, JavaScript, Python och olika kommandotolkar i operativsystem.

Interpretering eller kompilering

[redigera | redigera wikitext]

För användaren av programmet tar det normalt längre tid att köra ett program med en interpretator än att köra motsvarande program som kompilerad maskinkod. En interpretator kan dock spara tid för utvecklaren eller programmeraren, eftersom interpretering inte kräver det (ibland) tidskrävande kompileringssteget och därmed sparar tid vid testning och avlusning av programsekvenser och algoritmer.

En interpretator kan också tolka kod som är förkompilerad till så kallad intermediärkod (eller bytekod). Detta erbjuder flera fördelar: den kod man behöver lagras och eventuellt distribueras kan vara mycket kompakt, och kan framför allt vara neutral i förhållande till processor. För webbapplikationer är detta särskilt viktigt, då de laddas till den dator de körs i då användaren startar programmet. Koden är samtidigt effektiv att utföra. Det är möjligt att som alternativ kompilera vid nedladdning, med JIT-teknik, till maskinkod och sedan köra den, men detta brukar oftast inte utnyttjas.[källa behövs] Exempel på språk som interpreterats genom intermediärkod är Java, C# och vissa varianter av Pascal.

  1. ^ ”Compiled versus interpreted languages” (på engelska). IBM Knowledge Center. IBM Corporation. Arkiverad från originalet den 25 januari 2018. https://archive.is/20180125110631/https://www.ibm.com/support/knowledgecenter/zosbasics/com.ibm.zos.zappldev/zappldev_85.htm. Läst 25 januari 2018.