Interpretovaný programovací jazyk

Interpretovaný programovací jazyk  je programovací jazyk, jehož zdrojový kód je prováděn interpretační metodou [1] . Třídění programovacích jazyků podle způsobu provádění [2] , skupina interpretovaných jazyků zahrnuje jazyky, ve kterých jsou programové příkazy jedna po druhé samostatně překládány a okamžitě prováděny (interpretovány) [3] pomocí speciálního interpretačního programu . (což je protiklad [1] ke kompilovaným jazykům , ve kterých jsou všechny příkazy programu předem přeloženy do objektového kódu [3] ). Takový jazyk může implementovat konstrukce, které umožňují dynamické změny za běhu (úpravy stávajících nebo vytváření nových podprogramů). Tyto konstrukce znesnadňují kompilaci a překlad do kompilovaného jazyka [1] .

Obecně lze sestavit a interpretovat jakýkoli jazyk. V limitujícím případě lze takový jazyk implementovat pouze s pomocí tlumočníků [4] . Existují také názvy interpretační jazyk  („interpretační“) [4] , interpretovatelný jazyk („interpretovatelný“), interpretovaný jazyk („interpretovatelný“) [5] .

U mnoha jazyků však existuje rozdíl ve výkonu mezi zkompilovanými a interpretovanými implementacemi.

Velké množství jazyků, včetně BASIC , C , Lisp , Pascal a Python , má obě implementace. Java používá kompilaci JIT ke generování nativního kódu, i když je zpočátku přeložena do interpretované podoby. Jazyky Microsoft .NET Framework jsou kompilovány do Common Intermediate Language (CIL) , který je za běhu kompilován do nativního kódu. Většina implementací Lisp vám umožňuje kombinovat oba druhy kódu.

Historie

V počátcích programování byly jazyky silně ovlivněny způsobem, jakým byly provedeny. Kompilované jazyky například vyžadovaly, aby byl datový typ proměnné specifikován v době, kdy byla deklarována nebo poprvé použita. Zatímco tlumočené jazyky svou dynamickou povahou umožnily tento požadavek opustit, což poskytlo větší flexibilitu a urychlil vývoj.

Zpočátku byly interpretované jazyky převedeny na strojový kód řádek po řádku, to znamená, že každý logický řádek byl zkompilován těsně před spuštěním. Výsledkem je, že každá instrukce uzavřená v těle smyčky a provedená několikrát byla kompilátorem zpracována stejně mnohokrát. V současnosti jsou takové účinky vzácné. Většina interpretovaných jazyků je předem přeložena do střední reprezentace. Jedná se o bajtový kód nebo vláknový kód . Toto je sada instrukcí pro volání malých fragmentů kódu nižší úrovně, ekvivalentní několika instrukcím assembleru nebo instrukcím virtuálního stroje . Tento kód je již spuštěn interpretem nebo virtuálním strojem. Takové schéma používají například Java , Python a Ruby (používá reprezentaci kódu ve formě abstraktního stromu syntaxe ).

Mezilehlý kód lze vytvořit buď explicitním zkompilováním celého projektu (Java), nebo implicitním překladem pokaždé před spuštěním programu (Perl, Ruby) a při změně zdrojového kódu (Python).

Výhody

Existuje řada funkcí, které je mnohem snazší implementovat v interpretu než v kompilátoru:

Principy a styl programování navíc často nevyžadují vytváření a popis speciálních konstrukcí, které program formují (manifesty, třídy, datové typy). To vám umožňuje vyvíjet a testovat kód postupně, což je užitečné jak pro psaní malých programů, tak pro vývoj izolovaných modulů pro složité systémy. Díky své všestrannosti je lze pohodlně používat jako skriptovací jazyky .

Eliminace kroku kompilace umožňuje rychlejší vývoj programů, proto se při psaní složitých jednorázových programů (například k provedení jednorázového výpočtu) používají interpretované jazyky.

Nevýhody

Hlavní nevýhodou je pomalejší provádění programu [1] [6] [7] ve srovnání s prováděním programu předkompilovaného do strojového kódu . Například PHP a Python mohou být více než 100krát pomalejší než C++ [8] . Překlad do bajtkódu a kompilace JIT tento problém zcela nevyřeší. Další vrstva tlumočníka nebo virtuálního stroje zpomaluje provádění programu a může vyžadovat více prostředků. Za běhu musí být interpret vždy načten do paměti (což mohou být velké programy, jako je prohlížeč pro JS nebo Office pro VBA) [6] . Komentáře mohou snižovat výkon, a aby se tomu zabránilo, jsou vytvořeny dvě verze kódu – připravené k použití (s odstraněnými komentáři) a vyvinuté [9] .

Výsledkem je, že v průměru by měl být interpretovaný kód testován důkladněji než kompilovaný kód, přísnější dodržování konvencí kódování a měly by být použity další analyzátory kvality kódu. Poslední nevýhoda není příliš výrazná, protože seriózní vývoj v kompilovaných jazycích také vyžaduje použití těchto nástrojů.

Poznámky

  1. ↑ 1 2 3 4 5 6 Dorot V. L., Novikov F. A. Interpreted programming language, Interpretation // Výkladový slovník moderní počítačové slovní zásoby . - 3. vyd. - Petrohrad. : BHV-Petersburg, 2004. - S.  215 . — 608 str. — ISBN 9785941574919 . — ISBN 5941574916 .
  2. Makarova N.V., Volkov V.B. 19.1.2. Klasifikace programovacích jazyků // Informatika: Učebnice pro vysoké školy. - Petrohrad. : Peter, 2015. - S. 557. - 576 s. — ISBN 9785496015509 .
  3. ↑ 1 2 Microsoft Press. interpretovat, interpretovaný jazyk // Explanatory Dictionary of Computer Engineering. - M . : ruské vydání, 1995. - S. 236. - 496 s. — ISBN 5750200086 . — ISBN 1556155972 .
  4. ↑ 1 2 I.153 interpretační jazyk // Explanatory Dictionary of Computing Systems / Ed. V. Illingworth a další - M .: Mashinostroenie, 1990. - S. 241-242. — 560 str. — ISBN 521700617X .
  5. ↑ 1 2 Kochergin V. I. interpret // Velký anglicko-ruský výkladový vědecký a technický slovník počítačových informačních technologií a radioelektroniky. - 2016. - ISBN 978-5-7511-2332-1 .
  6. ↑ 1 2 3 4 Interpret, Interpretation // Výkladový slovník informatiky / Pod. vyd. G. G. Pivnyak. - Dněpropetrovsk: Národní báňská univerzita, 2008. - S.  327 -328. — 599 s. - ISBN 978-966-350-087-4 .
  7. Voroysky F. S. Interpretation, Interpreter // Informatika. Encyklopedický slovník-příručka. - M. : Fizmatlit, 2006. - S. 325. - 768 s. — ISBN 5922107178 . — ISBN 9785457966338 .
  8. McConnell, 2010 , 25.3. Kde hledat tuk a melasu? Interpretované jazyky, str. 585.
  9. McConnell, 2010 , 32.4. Tipy pro efektivní komentování. Výkon není rozumným důvodem k nekomentování, str. 774.

Literatura