Компіляція - це процес, який полегшує спілкування програміста і обчислювальної машини
Створюючи на завершальному етапі певну програму, будь-якому програмісту доводиться звертатися до послуг компілятора. У технічній документації цій програмі відведено досить скромне визначення як утиліті, яка виконує компіляцію. Компіляція - це процес перетворення програми, написаної на мові, зрозумілій людині (мовою високого рівня), в команди, зрозумілі для машини (низькорівневий мову). В результаті отримуємо програму, яка близька машинного коду. Вона може виглядати як об`єктний модуль, абсолютний код. Іноді така програма схожа на мова асемблера.
Таким чином, компіляція - це коли вхідна інформація (вихідний код), що представляє опис алгоритму або написана на проблемно-орієнтованої мови програма, переписується в еквівалентний перелік команд, представлених в об`єктному коді (машинно-орієнтованої мови).
Якщо ще спростити визначення, то компілювати - це транслювати машинну програму з проблемно-орієнтованого в машинно-орієнтована мова.
Незважаючи на прозорість і простоту визначення, компіляція - це процес досить багатоплановий. Існує кілька її видів. Пакетна компіляція здійснюється над декількома вихідними модулями в одному пункті завдання. Построчная компіляція - це те ж саме, що і інтерпретація (покрокова незалежна компіляція кожного наступного оператора). Ще існує умовна компіляція. В такому випадку трансльований текст має залежність від умов, які задані у вихідній програмі директивами компілятора.
Змінюючи значення певної константи, можна регулювати включення або виключення трансляції частини тексту програми.
Для зручності програмістів при вирішенні різних завдань застосовуються найбільш зручні і пристосовані компілятори. Якщо зробити їх класифікацію, то можна виділити кілька видів подібних утиліт.
Компілятор векторизуется виробляє трансляцію вихідного коду в машинний комп`ютерний код, підлаштовуючись під векторні процесори.
Гнучкий компілятор був розроблений на основі модульного принципу. Його управління здійснюється таблицями. Запрограмований він на високорівневої мовою. Також можлива його реалізація за допомогою компілятора компіляторів.
Компілятор інкрементальний здійснює повторне транслювання фрагментів програми та доповнень до неї, при цьому перекомпиляция всієї програми виключається.
Інтерпретує або покроковий компілятор використовує принцип послідовного виконання незалежної компіляції для кожного окремого оператора або команди з вихідної програми.
Компілятор компіляторів - це транслятор, який сприймає формальний опис для мови програмування. Він здатний самостійно генерувати компілятор для конкретної мови.
Налагоджувальний компілятор може самостійно усувати деякі види помилок синтаксису.
Резидентність компілятору відведено постійне місце в оперативній пам`яті, і він доступний при повторному використанні широким спектром завдань.
Існують самокомпіліруемие компілятори. Вони пишуться тією ж мовою, з якого відбувається трансляція.
Універсальний компілятор має в підставі формальний опис семантики і синтаксису вхідного мови. Він складається з ядра, синтаксичного і семантичного загрузчиков.
Найбільш часто зустрічаються завдання, де компілятори знаходять собі застосування, &minus- це компіляція ядра для платформи Linux. Операція ця дозволяє вирішити широкий спектр проблем, пов`язаних з погодженням обладнання та налаштування найбільш прийнятною версії платформи.
Компіляція Java реалізовується при використанні компіляторів, які працюють на самих різних платформах. Це дозволяє вихідні коди перекомпіліровать під потреби операційних систем від різних виробників.