Interpret

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] .

Istorie

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] .

Tipuri de interpreți

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).

Algoritmul interpretului simplu

  1. citiți instrucțiunile ;
  2. analizează instrucțiunea și stabilește acțiunile adecvate ;
  3. ia măsurile corespunzătoare ;
  4. dacă condiția de terminare a programului nu este atinsă, citiți următoarea instrucțiune și treceți la pasul 2.

Avantajele și dezavantajele interpreților

Avantaje

Dezavantaje

Vezi și

Note

  1. Kochergin V. I. interpret // Marele dicționar științific și tehnic explicativ englez-rus de tehnologii informatice informatice și electronică radio. - 2016. - ISBN 978-5-7511-2332-1 .
  2. Interpret // Dicţionar enciclopedic matematic / Cap. ed. Prohorov Yu. V .. - M. : Enciclopedia Sovietică, 1988. - S.  820 . — 847 p.
  3. GOST 19781-83; ST ISO 2382/7-77 // Informatică. Terminologie: Manual de referință. Numărul 1 / Referent Ph.D. tehnologie. Științe Yu. P. Selivanov. - M . : Editura de standarde, 1989. - 168 p. - 55.000 de exemplare.  — ISBN 5-7050-0155-X .
  4. Pershikov V.I., Savinkov V.M. Dicţionar explicativ de informatică / Recenzători: Cand. Fiz.-Matematică. Sci. A. S. Markov și Dr. Phys.-Math. Științe I. V. Pottosin. - M. : Finanţe şi statistică, 1991. - 543 p. — 50.000 de exemplare.  - ISBN 5-279-00367-0 .
  5. Borkovsky A. B. Dicționar englez-rus de programare și informatică (cu interpretări). - M . : Limba rusă, 1990. - 335 p. - 50.050 de exemplare (suplimentare).  — ISBN 5-200-01169-3 .
  6. Dictionary of Computing Systems = Dictionary of Computing / Ed. V. Illingworth şi alţii: Per. din engleza. A. K. Belotsky și alții; Ed. E. K. Maslovsky. - M . : Mashinostroenie, 1990. - 560 p. - 70.000 de exemplare (suplimentare).  - ISBN 5-217-00617-X (URSS), ISBN 0-19-853913-4 (Marea Britanie).
  7. Graham, Paul. Hackeri și pictori: idei mari din era computerului . - O'Reilly, 2010. - P. 185. - ISBN 9781449389550 , 1449389554.
  8. Dave Martin. De ce programul meu OS/2 REXX rulează mai repede a doua oară? . Întrebări frecvente Rex . Preluat la 22 decembrie 2009. Arhivat din original la 22 august 2011.
  9. Jeff Fox. Capitolul 2. Mai multe interpretări  . Programare atentă și mai departe . Ultra tehnologie. Data accesului: 25 ianuarie 2010. Arhivat din original la 22 august 2011.