Какво е компилатор и какво е интерпретатор?

Какво е компилатор и какво е интерпретатор?

2 ноември 2016

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

КОМПИЛАТОР - това е компютърна програма, която превежда нашият код до машинен език.


При компилация до машинен език се получава изпълнима програма. Компилаторите се използват от програмните езици, а интерпретаторите се използват от скриптовите езици.

Има две основни стъпки при създаването на кода при компилаторите и те са:


1. Аналитична - изследва изходния код.
2. Синтезираща - създава крайния код, въз основа на т.1.

1.Аналитичната фаза се нарича още frontend. При нея изходния код от нашата програма се  разбива на малки лексикални единици(tokens). Такива единици са идентификатори, ключови думи, числа и оператори. Лексически анализатор или скенер премахва белите знаци(whitespaces) и коментарите.
Проверява се дали използваните единици са формално допустими и дали са програмно свързани.


2.Синтезираща фаза - при нея се създава междинен код и се прави оптимизация на програмата.


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

Видове компилатори:
1. Местен(native)
2. Смесен(cross)
3. Еднопреходен компилатор (single-pass compiler)
4. Многопреходен компилатор (multi-pass compiler)


При местния компилатор, резултатът от превеждането на кода е код, който е изпълним само и единствено на платформата, върху която върви самият компютър.


При смесения компилатор, резултатът е изпълним код, който е предназначен за платформа различна от тази, на която върви компютъра. Използва се за създаване на код за вградени системи(embedded systems). При еднопреходния компилатор програмата се превежда последователно и на 1 път.


При многопреходния компилатор програмата се превежда на няколко стъпки. Съществуват и така наречените Транскомпилатори, които са особен вид компилатори. Те превеждат програмен код от един програмен език на друг. Например от Паскал на C.

ИНТЕРПРЕТАТОР-това е компютърна програма, която прави анализ, превежда на машинен език кода и го изпълнява. Най-общо казано интерпретатора е програма, която изпълнява други програми. Интерпретаторите се използват от скриптовите езици. Програмите работят по-бавно, когато се използва интерпретатор,  защото интерпретаторът анализира всяка част от кода при всяко нейно изпълнение и след това извършва необходимата операция. Повечето от командите на интерпретатора съвпадат с тези в cmd(command line).