Interpreter (program komputerowy)

Interpreterprogram komputerowy wykonujący inne programy. Jest kluczowym elementem znacznej części implementacji języków skryptowych[1][2] oraz języków kompilowanych do kodu bajtowego[1][3][4][5].

Wydajność

Interpreter analizuje kod źródłowy programu, a przeanalizowane fragmenty wykonuje. Realizowane jest to w inny sposób niż w procesie kompilacji, podczas którego nie wykonuje się wejściowego programu (kodu źródłowego), lecz tłumaczy go do wykonywalnego kodu maszynowego lub kodu pośredniego, który jest następnie zapisywany do pliku w celu późniejszego wykonania.

Wykonanie programu za pomocą interpretera jest wolniejsze, a do tego zajmuje więcej zasobów systemowych niż wykonanie kodu skompilowanego, lecz może zająć relatywnie mniej czasu niż kompilacja i uruchomienie. Jest to zwłaszcza ważne przy tworzeniu i testowaniu kodu, kiedy cykl edycja-interpretacja-debugowanie może często być znacznie krótszy niż cykl edycja-kompilacja-uruchomienie-debugowanie.

Interpretacja kodu programu jest wolniejsza od uruchamiania skompilowanego kodu, ponieważ interpreter musi najpierw przeanalizować każde wyrażenie i dopiero na tej podstawie wykonać odpowiednie akcje, a kod skompilowany wykonuje wyłącznie akcje. W implementacjach będących w pełni interpreterami wielokrotne wykonanie tego samego fragmentu kodu wymaga wielokrotnej interpretacji tego samego tekstu. Ta analiza nazywana jest „kosztem interpretacji”. Dostęp do zmiennych jest także wolniejszy w przypadku interpretera, gdyż odwzorowanie identyfikatorów na miejsca w pamięci operacyjnej musi zostać dokonane podczas uruchomienia lub działania, a nie podczas kompilacji, dlatego niektóre interpretery tworzą dodatkowe dane (np. adresy zmiennych) przyspieszające wykonanie programu[6].

Zobacz też

Przypisy

  1. a b Overview, [w:] CS98SI: Introduction to JavaScript, Stanford University, Cytat: "an interpreter in the browser reads over the JavaScript code, interprets each line, and runs it. More modern browsers use a technology known as Just-In-Time (JIT) compilation, which compiles JavaScript to executable bytecode just as it is about to run." (ang.).
  2. 3.7 Executing Commands, [w:] Bash Reference Manual, GNU.org [dostęp 2020-04-21] (ang.), "Shell" zgodnie ze wstępem jest równoważny "Command Line Interpreter".
  3. Glossary, Python 3.8.2 documentation [dostęp 2020-04-21] (ang.).
  4. 3.3.2 – Chunks, [w:] Lua 5.3 Reference Manual, The Programming Language Lua, 26 czerwca 2018 [dostęp 2020-04-21] (ang.).
  5. Byte Compilation, [w:] Emacs Lisp, GNU.org [dostęp 2020-04-21] (ang.).
  6. interpreter, FOLDOC - Free On-Line Dictionary Of Computing, 30 stycznia 1995.