Tolk (IT)

En tolk , innen informatikk og programmering , er et program som er i stand til å kjøre andre programmer som starter direkte fra den relative kildekoden skrevet på et høynivåspråk , uten å ha kompilert den tidligere ( objektkode ), dvs. utføre instruksjonene på språket som brukes ved å oversette dem fra tid til annen til instruksjoner for prosessormaskinspråk .

Beskrivelse

I motsetning til en tolk, kjører ikke en kompilator programmet den mottar som input, men oversetter det til maskinspråk (lagrer objektkodenfilen klar for direkte kjøring av prosessoren ). For et hvilket som helst programmeringsspråk kan du skrive både en tolk og en kompilator, derfor er uttrykkene tolket språk og kompilert språk , selv om de er vanlige, upassende, og er tolknings- og kompileringskonsepter knyttet til implementeringen av et språk og ikke til selve språket.

Skriptmotor

"Skriptmotoren" er en motor som tolker lister over kommandoer, kalt skript , formulert med en bestemt syntaks, kalt skriptspråk . Vi finner vanligvis en skriptmotor der vi må gi stor fleksibilitet for spesifikke aspekter, uten overdrevne hastighetskrav. Enkelhet og umiddelbarhet er derfor grunnleggende krav. Dette plasserer skriptmotorer på et høyt abstraksjonsnivå .

Fordeler og ulemper

Den tolkede tilnærmingen innebærer en lavere effektivitet ved kjøretid ; et tolket program, som kjører, krever mer minne og er mindre raskt, på grunn av overhead introdusert av tolken selv. Under utførelse må tolken faktisk analysere instruksjonene fra det syntaktiske nivået , identifisere handlingene som skal utføres (eventuelt transformere de symbolske navnene på variablene involvert i de tilsvarende minneadressene ), og utføre dem; mens instruksjonene til den kompilerte koden, allerede på maskinspråk, lastes inn og kjøres umiddelbart av prosessoren .

På den annen side kan tolkningen av et program være raskere enn kompilerings-/kjøringssyklusen. Denne forskjellen kan være en fordel under utvikling, spesielt hvis dette gjøres med raske prototypingsteknikker , eller under feilsøking . Videre lar de fleste tolker brukeren handle på det kjørende programmet ved å suspendere det, inspisere eller modifisere innholdet i variablene, og så videre, på en måte som ofte er mer fleksibel og kraftig enn det som kan oppnås for kompilert kode. en debugger .

Hybrid tilnærminger

I stedet er det mange hybride tilnærminger mellom fullt tolkede og fullt kompilerte språk. Noen versjoner av Lisp tillater begge tilnærmingene, og tillater til og med kjøring av delvis tolkede og delvis kompilerte programmer, slik at for eksempel et nytt underprogram kan testes i tolket form og, når feilsøkingen er fullført , kompileres for å forbedre ytelsen. opptreden.

Mange brukeragenter kjører ikke kildekoden direkte, men konverterer den på forhånd til en mer kompakt intern form, for eksempel i et abstrakt parse-tre . Enda annerledes er tilnærmingen til Emacs Lisp og Java , der en kompilator brukes som transformerer kildekoden til et mellomformat kalt (for begge språk) bytecode , ganske nær maskinspråk (og derfor med moderate tolkningskostnader ), men utført av en tolk og ikke direkte av prosessoren (og derfor bærbar ).

En teknikk som har vakt betydelig interesse de siste årene (og brukes av de fleste nåværende implementeringer av Java og av språkene til Microsoft .NET -familien ) kalles "just in time" eller JIT-kompilering. Denne teknikken kan betraktes som en optimering av tolkning, der tolken under kjøring kompilerer kodebitene som kjøres oftest, for å redusere kostnadene for deres påfølgende kjøringer.

Relaterte elementer

Eksterne lenker