Interpretul ( engleză interpret ıntə:'prıtə [1] , din latină interpretator - interpret [2] ) este un program (un fel de traducător ) care realizează interpretarea [3] .
Interpretare - analiza linie cu linie, procesarea și execuția codului sursă al unui program sau al unei cereri, spre deosebire de compilare , în care întregul text al programului este analizat și tradus în cod mașină sau octet înainte de rulare [4] [5 ] ] [6] .
Primul limbaj de programare de nivel înalt interpretat a fost Lisp . Interpretul său a fost creat în 1958 de Steve Russell pe un computer IBM 704 . Russell s-a inspirat din munca lui John McCarthy și și-a dat seama că o funcție evalîn Lisp ar putea fi încorporată în codul mașinii [7] .
Un simplu interpret analizează și execută imediat (interpretarea în sine) programul comandă cu comandă sau linie cu linie pe măsură ce codul său sursă ajunge la intrarea interpretului. Avantajul acestei abordări este răspunsul instantaneu. Dezavantajul este că un astfel de interpret detectează erori în textul programului numai atunci când încearcă să execute o comandă sau o linie cu o eroare.
Un interpret de tip compilare este un sistem dintr -un compilator care traduce codul sursă al programului într-o reprezentare intermediară, de exemplu, în bytecode sau p-code , și interpretul însuși, care execută codul intermediar rezultat (așa-numita mașină virtuală ) . Avantajul unor astfel de sisteme este viteza mai mare de execuție a programului datorită eliminării analizei codului sursă într-o trecere separată, unică, și minimizării acestei analize în interpret. Dezavantaje - cerință mai mare de resurse și cerința pentru corectitudinea codului sursă. Este folosit în limbaje precum Java , PHP , Tcl , Perl , REXX (rezultatul analizării codului sursă este salvat [8] ), precum și în diverse DBMS .
Dacă interpretul de tip compilare este împărțit în componente, se obține un compilator de limbaj și un interpret simplu cu analiza codului sursă minimizat. Mai mult, codul sursă pentru un astfel de interpret nu trebuie să fie într-un format text sau să fie un bytecode pe care doar acest interpret îl înțelege, poate fi codul mașină al unei platforme hardware existente. De exemplu, mașinile virtuale precum QEMU , Bochs , VMware includ interpreți de cod de mașină pentru procesoarele din familia x86 .
Unii interpreți (de exemplu, pentru Lisp , Scheme , Python , BASIC și altele) pot funcționa în modul de dialog sau așa-numita buclă read-compute-print ( read-eval-print loop, REPL ) . În acest mod, interpretul citește un construct de limbaj complet (de exemplu, expresie s în Lisp), îl execută, tipărește rezultatele și apoi continuă să aștepte ca utilizatorul să introducă următorul construct.
Limbajul Forth este unic , care poate funcționa atât în modul de interpretare, cât și în modul de compilare a datelor de intrare, permițându-vă să comutați între aceste moduri în orice moment, atât în timpul traducerii codului sursă, cât și în timpul rulării programelor. [9]
De asemenea, trebuie remarcat faptul că modurile de interpretare pot fi găsite nu numai în software, ci și în hardware . Deci, multe microprocesoare interpretează codul mașinii folosind microprograme încorporate și procesoarele din familia x86, începând cu Pentium (de exemplu, pe arhitectura Intel P6 ), în timpul execuției codului mașinii, îl pretraduc într-un format intern (într-un secvența de micro-operații).
Dicționare și enciclopedii | |
---|---|
În cataloagele bibliografice |
|