Компіляція - це процес, що полегшує спілкування програміста і обчислювальної машини

Компіляція - це процес, що полегшує спілкування програміста і обчислювальної машини

Створюючи на завершальному етапі певну програму, будь-якому програмісту доводиться звертатися до послуг компілятора. У технічній документації цій програмі відведено досить скромне визначення як утиліті, що виконує компіляцію. Компіляція - це процес перетворення програми, написаної мовою, зрозумілою людині (мовою високого рівня), на команди, зрозумілі для машини (низькорівневий язик). В результаті отримуємо програму, яка близька машинному коду. Вона може виглядати як об 'єктний додаток, абсолютний код. Іноді така програма схожа на мову асемблера.


Таким чином, компіляція - це коли вхідна інформація (вихідний код), що представляє опис алгоритму або написана проблемно-орієнтованою мовою програма, переписується в еквівалентний перелік команд, представлених в об 'єктному коді (машинно-орієнтованій мові).


Якщо ще спростити визначення, то компілювати - це транслювати машинну програму з проблемно-орієнтованої в машинно-орієнтовану мову.

Незважаючи на прозорість і простоту визначення, компіляція - це процес досить багатоплановий. Існує кілька її видів. Пакетна компіляція здійснюється над кількома вихідними додатками в одному пункті завдання. Прострочена компіляція - це те ж саме, що і інтерпретація (покрокова незалежна компіляція кожного наступного оператора). Ще існує умовна компіляція. У такому випадку транслюваний текст має залежність від умов, які задані у вихідній програмі директивами компілятора.

Змінюючи значення певної константи, ви можете налаштувати вмикання або вимикання частини тексту програми.

Для зручності програмістів при вирішенні різних завдань застосовуються найбільш зручні і пристосовані компілятори. Якщо виконати їх класифікацію, можна виділити кілька видів подібних утиліт.

Компілятор векторизуючий виробляє трансляцію вихідного коду в машинний комп 'ютерний код, підлаштовуючись під векторні процесори.

Гнучкий компілятор був розроблений на основі модульного принципу. Його управління здійснюється таблицями. Запрограмований він високорівневою мовою. Також можлива його реалізація за допомогою компілятора компіляторів.


Компілятор інкрементальний здійснює повторне транслювання фрагментів програми і доповнень до неї, при цьому перекомпіляція всієї програми виключається.

Інтерпретуючий або покроковий компілятор використовує принцип послідовного виконання незалежної компіляції для кожного окремого оператора або команди з вихідної програми.

Компілятор компіляторів це транслятор,- який сприймає формальний опис для мови програмування. Він здатний самостійно генерувати компілятор для конкретної мови.

Зневаджувальний компілятор може самостійно усунути деякі види помилок синтаксису.

Резидентному компілятору відведено постійне місце в оперативній пам 'яті, і він доступний при повторному використанні широким спектром завдань.

Існують самокомпільовані компілятори. Вони пишуться тією ж мовою, з якої відбувається трансляція.

Універсальний компілятор має в основі формальний опис семантики і синтаксису вхідної мови. Він складається з ядра, синтаксичного і семантичного завантажувачів.


Найбільш часто зустрічаються завдання, де компілятори знаходять собі застосування, - це компіляція ядра для платформи Linux. Ця дія дозволяє вирішити широкий спектр проблем, пов 'язаних з узгодженням обладнання та налаштування найбільш прийнятної версії платформи.

Компіляція Java реалізовується при використанні компіляторів, що працюють на різних платформах. Це дозволяє вихідні коди перекомпілювати під потреби операційних систем від різних виробників.