Tolk ( engelsk tolk ıntə:'prıtə [1] , av latin tolk - tolk [2] ) är ett program (ett slags översättare ) som utför tolkning [3] .
Tolkning - rad för rad analys, bearbetning och exekvering av källkoden för ett program eller begäran, till skillnad från kompilering , där hela texten i programmet analyseras och översätts till maskin- eller bytekod innan den körs [4] [5 ] [6] .
Det första tolkade programmeringsspråket på hög nivå var Lisp . Dess tolk skapades 1958 av Steve Russell på en IBM 704-dator . Russell inspirerades av John McCarthys arbete och kom på att en funktion evali Lisp kunde byggas in i maskinkod [7] .
En enkel tolk analyserar och exekverar omedelbart (tolkningen själv) programmet kommando för kommando eller rad för rad när dess källkod kommer till tolkens ingång. Fördelen med detta tillvägagångssätt är den omedelbara responsen. Nackdelen är att en sådan tolk upptäcker fel i programtexten endast när den försöker utföra ett kommando eller en rad med ett fel.
En tolk av kompileringstyp är ett system från en kompilator som översätter programmets källkod till en mellanrepresentation, till exempel till bytekod eller p-kod , och tolken själv, som exekverar den resulterande mellankoden (den så kallade virtuella maskinen ) . . Fördelen med sådana system är den högre hastigheten för programexekveringen på grund av att källkodsanalysen tas bort i ett separat, engångspass, och minimeringen av denna analys i tolken. Nackdelar - större resursbehov och kravet på korrekthet av källkoden. Det används i språk som Java , PHP , Tcl , Perl , REXX (resultatet av att analysera källkoden sparas [8] ), såväl som i olika DBMS .
Om tolken av en kompileringstyp delas upp i komponenter erhålls en språkkompilator och en enkel tolk med minimerad källkodsanalys. Dessutom behöver inte källkoden för en sådan tolk vara i ett textformat eller vara en bytekod som bara denna tolk förstår, det kan vara maskinkoden för någon befintlig hårdvaruplattform. Till exempel inkluderar virtuella maskiner som QEMU , Bochs , VMware maskinkodtolkare för x86 - familjens processorer .
Vissa tolkar (till exempel för Lisp , Scheme , Python , BASIC och andra) kan arbeta i dialogläge eller den så kallade read-compute-print loop ( read-eval-print loop, REPL ) . I det här läget läser tolken en komplett språkkonstruktion (till exempel s-uttryck i Lisp), exekverar den, skriver ut resultaten och fortsätter sedan med att vänta på att användaren ska gå in i nästa konstruktion.
Forth- språket är unikt , som kan fungera både i tolknings- och kompileringslägen för indata, vilket gör att du kan växla mellan dessa lägen när som helst, både under källkodsöversättning och medan program körs. [9]
Det bör också noteras att tolkningslägen inte bara kan hittas i programvara utan också i hårdvara . Så många mikroprocessorer tolkar maskinkod med inbyggda mikroprogram och x86-familjens processorer, med början med Pentium (till exempel på Intel P6- arkitekturen ), föröversätter den under exekvering av maskinkod till ett internt format (till ett sekvens av mikrooperationer).
![]() | |
---|---|
I bibliografiska kataloger |
|