Tolk

Tolk ( engelsk  tolk ıntə:'prıtə [1] , af latin  tolk  - tolk [2] ) er et program (en slags oversætter ), der udfører tolkning [3] .

Fortolkning  - linje-for-linje analyse, bearbejdning og eksekvering af kildekoden til et program eller anmodning, i modsætning til kompilering , hvor hele programmets tekst analyseres og oversættes til maskin- eller bytekode før kørsel [4] [5 ] [6] .

Historie

Det første fortolkede programmeringssprog på højt niveau var Lisp . Dens tolk blev skabt i 1958 af Steve Russell på en IBM 704-computer . Russell var inspireret af John McCarthys arbejde og fandt ud af, at en funktion evali Lisp kunne indbygges i maskinkode [7] .

Tolketyper

En simpel fortolker analyserer og udfører straks (fortolkningen selv) programmet kommando-for-kommando eller linje-for-linje, efterhånden som dets kildekode ankommer til tolkens input. Fordelen ved denne tilgang er den øjeblikkelige respons. Ulempen er, at en sådan fortolker kun opdager fejl i programteksten, når den forsøger at udføre en kommando eller en linje med en fejl.

En kompileringstypefortolker  er et system fra en compiler , der oversætter programmets kildekode til en mellemrepræsentation, for eksempel til bytekode eller p-kode , og fortolkeren selv, som udfører den resulterende mellemkode (den såkaldte virtuelle maskine ) . Fordelen ved sådanne systemer er den større hastighed af programudførelse på grund af fjernelse af kildekodeanalysen i et separat, engangspass, og minimeringen af ​​denne analyse i fortolkeren. Ulemper - større ressourcebehov og kravet om kildekodens rigtighed. Det bruges i sprog som Java , PHP , Tcl , Perl , REXX (resultatet af parsing af kildekoden gemmes [8] ), såvel som i forskellige DBMS .

Hvis tolken af ​​en kompileringstype er opdelt i komponenter, opnås en sprogkompiler og en simpel tolk med minimeret kildekodeanalyse. Desuden behøver kildekoden til en sådan fortolker ikke at være i et tekstformat eller være en bytekode, som kun denne fortolker forstår, det kan være maskinkoden for en eksisterende hardwareplatform. For eksempel inkluderer virtuelle maskiner som QEMU , Bochs , VMware maskinkodefortolkere til x86 - familieprocessorer .

Nogle tolke (for eksempel til Lisp , Scheme , Python , BASIC og andre) kan arbejde i dialogtilstand eller den såkaldte read-compute-print loop ( read-eval-print loop, REPL ) .  I denne tilstand læser tolken en komplet sprogkonstruktion (for eksempel s-udtryk i Lisp), udfører den, udskriver resultaterne og fortsætter derefter med at vente på, at brugeren indtaster den næste konstruktion.

Forth -sproget er unikt , som er i stand til at arbejde både i fortolknings- og kompileringstilstande for inputdata, hvilket giver dig mulighed for at skifte mellem disse tilstande til enhver tid, både under kildekodeoversættelse og mens programmer kører. [9]

Det skal også bemærkes, at fortolkningstilstande ikke kun findes i software, men også i hardware . Så mange mikroprocessorer fortolker maskinkode ved hjælp af indbyggede mikroprogrammer og x86-familieprocessorer, startende med Pentium (for eksempel på Intel P6 -arkitekturen ), under udførelsen af ​​maskinkode, præ-oversætter den til et internt format (til et rækkefølge af mikrooperationer).

Algoritmen for den simple fortolker

  1. læs instruktionerne ;
  2. analysere instruktionen og bestemme de passende handlinger ;
  3. træffe passende foranstaltninger ;
  4. hvis programafslutningsbetingelsen ikke nås, læs den næste instruktion og gå til trin 2.

Fordele og ulemper ved tolke

Fordele

Ulemper

Se også

Noter

  1. Kochergin V. I. tolk // Stor engelsk-russisk forklarende videnskabelig og teknisk ordbog over computerinformationsteknologier og radioelektronik. - 2016. - ISBN 978-5-7511-2332-1 .
  2. Tolk // Matematisk encyklopædisk ordbog / Kap. udg. Prokhorov Yu. V .. - M . : Soviet Encyclopedia, 1988. - S.  820 . — 847 s.
  3. GOST 19781-83; ST ISO 2382/7-77 // Computing. Terminologi: Referencemanual. Nummer 1 / Anmelder Ph.D. tech. Videnskaber Yu. P. Selivanov. - M . : Forlag for standarder, 1989. - 168 s. - 55.000 eksemplarer.  — ISBN 5-7050-0155-X .
  4. Pershikov V.I., Savinkov V.M. Explanatory Dictionary of Informatics / Reviewers: Cand. Fysisk.-Matematik. Sci. A. S. Markov og Dr. Phys.-Math. Videnskaber I. V. Pottosin. - M. : Finans og statistik, 1991. - 543 s. — 50.000 eksemplarer.  - ISBN 5-279-00367-0 .
  5. Borkovsky A. B. Engelsk-russisk ordbog for programmering og informatik (med fortolkninger). - M . : Russisk sprog, 1990. - 335 s. - 50.050 (yderligere) eksemplarer.  — ISBN 5-200-01169-3 .
  6. Dictionary of Computing Systems = Dictionary of Computing / Ed. V. Illingworth m.fl.: Pr. fra engelsk. A. K. Belotsky og andre; Ed. E. K. Maslovsky. - M . : Mashinostroenie, 1990. - 560 s. - 70.000 (yderligere) eksemplarer.  - ISBN 5-217-00617-X (USSR), ISBN 0-19-853913-4 (UK).
  7. Graham, Paul. Hackere og malere: store ideer fra computeralderen . - O'Reilly, 2010. - S. 185. - ISBN 9781449389550 , 1449389554.
  8. Dave Martin. Hvorfor kører mit OS/2 REXX-program hurtigere anden gang? . Rex ofte stillede spørgsmål . Hentet 22. december 2009. Arkiveret fra originalen 22. august 2011.
  9. Jeff Fox. Kapitel 2. Mere fortolkning  . Gennemtænkt programmering og videre . Ultra teknologi. Dato for adgang: 25. januar 2010. Arkiveret fra originalen 22. august 2011.