Értelmezett programozási nyelv

Az értelmezett programozási nyelv  olyan programozási nyelv , amelynek forráskódja az értelmezési módszerrel fut le [1] . A programozási nyelveket a végrehajtás módja szerint osztályozva [2] az értelmezett nyelvek csoportjába tartoznak azok a nyelvek, amelyeken a programutasítások egymás után külön-külön lefordítva és azonnal végrehajtva (értelmezve) [3] speciális tolmácsprogrammal (ami ellentétes [1] a lefordított nyelvekkel , amelyekben minden programutasítás előzetesen tárgykódba van lefordítva [3] ). Egy ilyen nyelv olyan konstrukciókat valósíthat meg, amelyek lehetővé teszik a futás közbeni dinamikus változtatásokat (a meglévők módosítását vagy új szubrutinok létrehozását). Ezek a konstrukciók megnehezítik a fordítást és a lefordított nyelvre való fordítást [1] .

Általában bármilyen nyelv összeállítható és értelmezhető. Korlátozó esetben egy ilyen nyelv csak tolmácsok segítségével valósítható meg [4] . Léteznek még értelmező nyelv  ("interpretative") [4] , értelmezhető nyelv ("interpretable"), értelmezett nyelv ("interpretable") elnevezések [5] .

Számos nyelv esetében azonban teljesítménybeli különbség van a lefordított és az értelmezett megvalósítások között.

Számos nyelv, köztük a BASIC , C , Lisp , Pascal és Python mindkét implementációval rendelkezik. A Java JIT fordítást használ a natív kód generálására, bár kezdetben értelmezett formára fordítják. A Microsoft .NET-keretrendszer nyelvei Common Intermediate Language (CIL) nyelvre vannak fordítva , amely futás közben natív kódra van fordítva. A Lisp legtöbb megvalósítása lehetővé teszi a kétféle kód keverését.

Történelem

A programozás korai napjaiban a nyelveket nagymértékben befolyásolta a végrehajtás módja. Például a lefordított nyelvek megkövetelték, hogy egy változó adattípusát a deklaráláskor vagy az első használatkor meg kell adni. Míg az értelmezett nyelvek dinamikus jellegüknél fogva lehetővé tették ennek a követelménynek a feladását, ami nagyobb rugalmasságot és felgyorsult fejlődést eredményezett.

Kezdetben az értelmezett nyelveket soronként konvertálták gépi kódokká, vagyis minden logikai sort közvetlenül a végrehajtás előtt fordítottak le. Ennek eredményeként a ciklustörzsbe zárt és többször végrehajtott utasításokat ugyanannyiszor dolgozta fel a fordító. Jelenleg az ilyen hatások ritkák. A legtöbb tolmácsolt nyelvet előre lefordítják köztes reprezentációvá. Ez egy bájtkód vagy szálas kód . Ez az alacsonyabb szintű kód kis töredékeinek meghívására szolgáló utasításkészlet, amely több assembler utasítással vagy virtuális gép utasítással egyenértékű . Ezt a kódot már végrehajtja egy tolmács vagy egy virtuális gép. Például egy ilyen sémát a Java , a Python és a Ruby használ ( absztrakt szintaxisfa formájában kódreprezentációt használ ).

A köztes kód létrehozható a teljes projekt explicit fordításával (Java), vagy implicit fordítással minden alkalommal, amikor a program elindul (Perl, Ruby), és amikor a forráskód megváltozik (Python).

Előnyök

Számos olyan szolgáltatás létezik, amelyeket sokkal könnyebb megvalósítani egy tolmácsban, mint egy fordítóprogramban:

Ráadásul a programozás elvei és stílusa gyakran nem igényli a programot alakító speciális konstrukciók (manifestek, osztályok, adattípusok) létrehozását és leírását. Ez lehetővé teszi a kód növekményes fejlesztését és tesztelését, ami hasznos mind a kis programok írásához, mind az összetett rendszerek elszigetelt moduljainak fejlesztéséhez. Sokoldalúságuk miatt kényelmesen használhatók szkriptnyelvként .

A fordítási lépés kiiktatása lehetővé teszi a programok gyorsabb fejlesztését, így összetett egyszeri programok írásakor (például egyszeri számítás elvégzéséhez) értelmezett nyelveket használnak.

Hátrányok

A fő hátrány a [1] [6] [7] program lassabb végrehajtása a gépi kódra előre lefordított program végrehajtásához képest . Például a PHP és a Python több mint 100-szor lassabb lehet, mint a C++ [8] . A bájtkódra fordítás és a JIT fordítás nem oldja meg teljesen ezt a problémát. Egy további értelmező vagy virtuális gép réteg lelassítja a program végrehajtását, és több erőforrást igényelhet. Futás közben az interpretert mindig be kell tölteni a memóriába (amelyek lehetnek nagy programok is, például böngésző JS-hez vagy Office for VBA) [6] . A megjegyzések csökkenthetik a teljesítményt, és ennek megkerülésére a kód két verziója készül – használatra készen (a megjegyzések eltávolításával) és fejlesztésre kerül [9] .

Ennek eredményeként átlagosan az értelmezett kódot alaposabban kell tesztelni, mint a lefordított kódot, szigorúbban kell betartani a kódolási konvenciókat, és további kódminőség-elemzőket kell használni. Az utolsó hátrány nem túl hangsúlyos, mivel a lefordított nyelvek komoly fejlesztéséhez ezeknek az eszközöknek a használata is szükséges.

Jegyzetek

  1. ↑ 1 2 3 4 5 6 Dorot V. L., Novikov F. A. Értelmezett programozási nyelv, értelmezés // A modern számítógépes szókincs magyarázó szótára . - 3. kiadás - Szentpétervár. : BHV-Petersburg, 2004. - S.  215 . — 608 p. — ISBN 9785941574919 . — ISBN 5941574916 .
  2. Makarova N.V., Volkov V.B. 19.1.2. Programozási nyelvek osztályozása // Informatika: Tankönyv egyetemek számára. - Szentpétervár. : Péter, 2015. - S. 557. - 576 p. — ISBN 9785496015509 .
  3. ↑ 1 2 Microsoft Press. értelmezni, értelmezni a nyelvet // Számítástechnikai magyarázó szótár. - M . : orosz kiadás, 1995. - S. 236. - 496 p. — ISBN 5750200086 . — ISBN 1556155972 .
  4. ↑ 1 2 I.153 értelmező nyelv // Számítástechnikai rendszerek magyarázó szótára / Szerk. V. Illingworth és mások - M .: Mashinostroenie, 1990. - S. 241-242. — 560 p. — ISBN 521700617X .
  5. ↑ 1 2 Kochergin V. I. tolmács // Nagy angol-orosz magyarázó tudományos és műszaki szótár a számítógépes információs technológiákról és a rádióelektronikáról. - 2016. - ISBN 978-5-7511-2332-1 .
  6. ↑ 1 2 3 4 Tolmács, tolmácsolás // Számítástechnikai magyarázó szótár / Pod. szerk. G. G. Pivnyak. - Dnyipropetrovszk: Nemzeti Bányászati ​​Egyetem, 2008. - S.  327 -328. — 599 p. - ISBN 978-966-350-087-4 .
  7. Vorojszkij F. S. Tolmács, tolmács // Informatika. Enciklopédiai szótár-referenciakönyv. - M. : Fizmatlit, 2006. - S. 325. - 768 p. — ISBN 5922107178 . — ISBN 9785457966338 .
  8. McConnell, 2010 , 25.3. Hol keressünk zsírt és melaszt? Tolmácsolt nyelvek, p. 585.
  9. McConnell, 2010 , 32.4. Tippek a hatékony kommentáláshoz. A teljesítmény nem indokolja a megjegyzések mellőzését, p. 774.

Irodalom