Последният етап от създаването на програма е да се преведе алгоритъм, написан на един от езиците за програмиране (C/C++, Pascal и др.) на машинен език от ниско ниво. Това се дължи на факта, че за да изпълнят каквато и да е задача, компютрите трябва да получат команди на език, който те разбират, близък до двоичен и работещ с примитивни структури от данни (бит, байт или дума). Процесът на превод на специфични за домейна изрази на езици от високо ниво в двоичен код се нарича превод. Има два метода за превод - компилация и интерпретация.
Компилатор - какво е това?
Анализът на много интерпретации на термините "компилатор" и "компилиране" ни позволява да подчертаем следната дефиниция. Компилаторът е програма, предназначена да преведе текста на изходния алгоритъм от език на високо ниво в еквивалентен набор от инструкции на машинно-ориентиран език. Това е така нареченият обектен код, за последващо сглобяване на получения обектен код в готов за използване програмен модул.
Компилатор и интерпретатор - прилики и разлики
Преводачът е помощна програма, коятокакто и компилатор, предназначен да превежда изходния код в машинен код. Въпреки това, за разлика от компилатора, интерпретаторът работи всеки път с програмата и изпълнява превода ред по ред.
Можете да кажете, че компилаторът и интерпретаторът са езикови процесори, които позволяват на компютъра да разпознава и изпълнява команди, дадени от програмиста.
Класификация на компилатора
Компилаторите се класифицират главно по характеристики, свързани с техните области на практическо приложение.
Векторизиращ компилатор е помощна програма, която превежда изходния код в обектен код и е адаптирана за компютри, оборудвани с векторни процесори.
Гъвкавият компилатор е програмиран на език от високо ниво по модулен начин. Управлението му се осъществява с помощта на таблици. Възможно е също да се изпълни с помощта на компилатора на компилаторите.
Инкременталният компилатор е езиков процесор, който претранслира отделни фрагменти от изходния код и допълнения към него. Въпреки това, той избягва повторно компилиране на цялото приложение.
Интерпретативният (стъпков) компилатор е помощна програма, която последователно извършва независима компилация на всеки израз или команда на изходен код от високо ниво.
Компилаторът на компилаторите е преводач, способен да приеме официално описание за език за програмиране и независимо да генерира компилатор за всеки език.
Компилаторът за отстраняване на грешки ви позволява да намерите и коригирате някои видове синтактични грешки, направени при писане на изходен код
Резидентен компилатор заема постоянно място в RAM и следователно може да се използва повторно от широк спектър от задачи.
Самокомпилираният компилатор е написан на същия език като превода.
Универсалният компилатор се основава на формално описание на семантичните и синтактичните параметри на езика за въвеждане. Основните компоненти на такава помощна програма са основните, синтактични и семантични зареждачи.
Устройство за компилиране
Компилатор и линкер са в основата на всеки компилатор. Често при компилиране се използва външен линкер, а самият компилатор изпълнява само функцията за превод. Случва се също така компилаторът да се реализира като вид мениджърска програма, която е свързана с преводача (или преводачите, ако при писането на изходния код са били използвани различни езици за програмиране) и линкера и започва тяхното изпълнение, когато е необходимо.
Езици за програмиране и методи за превод
Въпреки факта, че програма, написана на всеки език за програмиране, може да бъде както компилирана, така и интерпретирана, много езици на високо ниво имат предразположение към един или друг метод на превод. И така, езикът C първоначално е проектиран за компилиране, а Java - за интерпретация на написаната програма. Разработват сеКомпилаторите на C са доста лесни, благодарение на относително ниското си ниво и малък брой структурни елементи.
Предимства и недостатъци на компилаторите и интерпретаторите. Приложения
Забележете, че компилираните приложения са по-бързи от интерпретираните, но в същото време машинният код, получен в резултат на компилацията, зависи от хардуерната платформа. Така че програма, написана и компилирана за Windows, няма да работи, например, в Linux. Следователно, в случай на интернет приложения, когато е невъзможно да се каже предварително в коя среда ще работят, те използват интерпретация или байткод (в този случай изходната програма се преобразува в междинна форма, която може да се изпълнява на различен хардуер платформи).