Интерпретатор (софтуер)

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене

В компютърните науки интерпретатор е компютърна програма, която извършва последователен анализ на командите от изходния код, непосредствено ги превежда на машинен език и изпълнява. По своята същност интерпретаторът е транслатор (на английски: translator - преводач).

Интерпретатор в сравнение с компилатор и свързващ редактор(linker)[редактиране | edit source]

Програмите обикновено се пишат на език от високо ниво, който трябва да бъде превърнат в машинен език, за да могат да бъдат изпълнени от процесора. Това превръщане се извършва от компилатор или от интерпретатор. За да може програмата да се изпълнява компилаторът превежда изходния код само веднъж, докато интерпретаторът извършва превода при всяко нейно стартиране.

Цикъл на разработка[редактиране | edit source]

По време на разработката на софтуер се извършват чести и множество промени на изходния код. Когато се използва компилатор, при всяка промяна в кода, преди програмата да може да бъде изпълнена, трябва да се изчака компилатора да транслира всички файлове с изходен код и да свърже един с друг получените файлове с двоичен код. Колкото е по-голям обемът на съответната програма толкова е по-дълго и времето за изчакване. В противовес, при използване на интерпретатор времето за изчакване е много по-малко, тъй като интерпретаторът обикновено има нужда да преведе само кода, който е променен, което изисква значително по-малко време преди промените да бъдат тествани.

Гъвкавост[редактиране | edit source]

Компилаторът преобразува изходния код в двоични инструкции за определена процесорна архитектура, като по този начин се намалява мобилността. Превръщането се прави само веднъж, в средата на разработчика, и след това получените файлове с машинни инструкции могат да бъдат разпространявани на потребителски компютри с необходимата процесорна архитектура, където да бъдат изпълнени без допълнителна транслация.

Интерпретируемите програми могат да бъдат разпространявани като изходен код. За целта трябва да бъде преведена на конкретната потребителска машина, което отнема повече време, но прави програмното разпространение независимо от компютърната архитектура. Независимостта обаче зависи от наличието на съответната машина на подходящ интерпретатор. При това ако трябва интерпретатора да съпровожда изходната програма, цялостния процес на инсталация се усложнява в сравнение с използването на един общ изпълним файл.

Ефективност[редактиране | edit source]

Основният недостатък на интерпретаторите е, че когато дадена програма се интерпретира обикновено работи по-бавно от колкото би работила ако е била компилирана. Разликите в скоростта могат да варират от незабележими до значителни размери. Най-общо стартирането на програма, използвайки интерпретатор отнема повече време в сравнение с това необходимо за изпълнението на вече компилиран код. Но тази разлика може да бъде и в противоположна посока, ако се разглежда общото време необходимо за процеса на компилиране и стартиране на програмата. Това е от особено значение в процеса на създаване и тестване на кода на програмата, когато цикълът редактиране-интерпретиране-дебъгване често може да бъде значително по кратък от този на редактиране-компилиране-стартиране-дебъгване.

Интерпретирането на кода е по-бавно от директното стартиране на вече компилиран код, защото интерпретаторът трябва да анализира всеки израз в програмата всеки път когато се изпълнява и чак след това да извърши необходимата операция, докато при стартиране на компилиран код само се изпълняват операциите в логическа последователност зададена при компилирането. Също така и достъпът до променливите при използване на интерпретатор е по-бавен поради непрекъснатото адресиране на идентификаторите по време на изпълнение, за разлика от това по време на компилация.

Списък на някои интерпретируеми езици[редактиране | edit source]

Външни препратки[редактиране | edit source]