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

Из Википедије, слободне енциклопедије
Disambig.svg
За остале употребе, погледајте чланак Интерпретатор.

Интерпретатор или интерпретер (енгл. interpreter), у рачунарству, је програм који извршава код написан у неком програмском језику.

Интерпретација програма[уреди]

Данас постоји велики број програмских језика. Насупрот томе рачунар, без помоћи додатног софтвера, може да изврши програме писане у, најчешће, само једном језику. Тај језик се зове машински језик (рачунара). Да би се извршили програми представљени другим програмским језицима користе се интерпретатори.

Интерпретатор најчешће преводи већи или мањи део кода програма у машински језик. Затим тај код предаје хардверу на директно извршење. Потом по потреби слично поступа са остатком програма.

Код екстремног облика претходно поменутог поступка интерпретације, преводи се целокупни програм. Ово превођење се обично врши непосредно пре него што ће програм да се изврши.

Шире посматрано, и извршење програма у машинском језику представља интерпретацију на нивоу хардвера.

Две стратегије извршавања програма[уреди]

Раније, у историји рачунарства, обично су разматране две стратегије извршавања програма:

  1. Програм се прво преведе у машински језик и тако преведен доставља до крајњег корисника. На корисниковом рачунару програм се по потреби пребацује у извршну меморију и директно извршава од стране хардвера.
  2. Код друге стратегије програм се у изворном облику, или у облику међукода, доставља крајњем кориснику. Овакав програм извршава интерпретатор.

Данас, ове две стратегије једино се суштински разликују по тренутку када се врши превођење у машински језик. У првом случају врши се превођење и не зна се када ће програм да се изврши. У другом случају програм или делови програма се најчешће преводе непосредно пред извршење.

Међукод[уреди]

Понекад се програм прво преводи у програмски језик, обично ближи машини, који се не извршава директно. Овако добијен међукод се затим интерпретира. Ове две фазе интерпретације се некада извршавају непосредно једна за другом. У другом случају, на пример код Јава програмског језика, стварање међукода и његова интерпретација могу да буду два временски одвојена процеса. Тако до крајњег корисника често дође само међукод, у претходном примеру Јава бајт-код.

Коришћењем међукода обично се добија брже извршавање програма. Како је међукод често веома различит од непреведеног програма, он може да се користи и да сакрије првобитни (изворни) програм, при чему произвођач програма не испуручује првобитни програм већ само међукод.