Tulkki ( englanniksi tulkki ıntə:'prıtə [1] , latinasta tulkki - tulkki [2] ) on tulkkausta suorittava ohjelma (eräänlainen kääntäjä ) [3] .
Tulkinta - ohjelman tai pyynnön lähdekoodin rivi riviltä analysointi, käsittely ja suoritus, toisin kuin kääntäminen , jossa ohjelman koko teksti analysoidaan ja käännetään kone- tai tavukoodiksi ennen ajoa [4] [5 ] [6] .
Ensimmäinen tulkittu korkean tason ohjelmointikieli oli Lisp . Sen tulkin loi vuonna 1958 Steve Russell IBM 704 -tietokoneella . Russell inspiroitui John McCarthyn työstä ja keksi, että evalLisp-funktio voitaisiin rakentaa konekoodiin [7] .
Yksinkertainen tulkki analysoi ja suorittaa välittömästi (itse tulkinta) ohjelman komento-komento tai rivi riviltä, kun sen lähdekoodi saapuu tulkin syötteeseen. Tämän lähestymistavan etuna on välitön vastaus. Haittapuolena on, että tällainen tulkki havaitsee virheet ohjelmatekstissä vain yrittäessään suorittaa virheellistä komentoa tai riviä.
Kääntäjätyyppinen tulkki on järjestelmä kääntäjästä , joka kääntää ohjelman lähdekoodin väliesitykseen, esimerkiksi tavukoodiksi tai p-koodiksi , ja itse tulkki, joka suorittaa tuloksena olevan välikoodin (ns. virtuaalikone ) . . Tällaisten järjestelmien etuna on suurempi ohjelman suoritusnopeus, joka johtuu lähdekoodianalyysin poistamisesta erilliseen kertakäyttöön ja tämän analyysin minimointi tulkissa. Haitat - suurempi resurssitarve ja vaatimus lähdekoodin oikeellisuudesta. Sitä käytetään kielissä, kuten Java , PHP , Tcl , Perl , REXX ( lähdekoodin jäsentämisen tulos tallennetaan [8] ), sekä erilaisissa DBMS -järjestelmissä .
Jos käännöstyyppinen tulkki jaetaan komponentteihin, saadaan kielikääntäjä ja yksinkertainen tulkki minimoidulla lähdekoodianalyysillä. Lisäksi tällaisen tulkin lähdekoodin ei tarvitse olla tekstimuodossa tai tavukoodi, jonka vain tämä tulkki ymmärtää, vaan se voi olla jonkin olemassa olevan laitteistoalustan konekoodi . Esimerkiksi virtuaalikoneet, kuten QEMU , Bochs ja VMware , sisältävät konekooditulkkeja x86 -perheen prosessoreille .
Jotkut tulkit (esim. Lisp , Scheme , Python , BASIC ja muut) voivat työskennellä dialogitilassa tai niin kutsutussa read-compute-print silmukassa ( read-eval-print loop, REPL ) . Tässä tilassa tulkki lukee täydellisen kielirakenteen (esimerkiksi s-lausekkeen Lispissä), suorittaa sen, tulostaa tulokset ja jatkaa sitten odottamaan, että käyttäjä syöttää seuraavan rakenteen.
Forth - kieli on ainutlaatuinen , joka pystyy toimimaan sekä syöttötiedon tulkinta- että käännöstiloissa, jolloin voit vaihtaa näiden tilojen välillä milloin tahansa sekä lähdekoodin kääntämisen aikana että ohjelmien ollessa käynnissä. [9]
On myös huomattava, että tulkintatilat löytyvät paitsi ohjelmistosta myös laitteistosta . Joten monet mikroprosessorit tulkitsevat konekoodia käyttämällä sisäänrakennettuja mikroohjelmia ja x86-perheen suorittimia, alkaen Pentiumista (esimerkiksi Intel P6 -arkkitehtuurissa ), konekoodin suorittamisen aikana esikäännä se sisäiseen muotoon (esimerkiksi mikrooperaatioiden sarja).
![]() | |
---|---|
Bibliografisissa luetteloissa |
|