Трансляція та виконання: компілятор, інтерпретатор, компонувальник
Розділ: Основи мов програмування
📌 Про що ця тема
Тут перевіряють, як текст програми (вихідний код) перетворюється на код, який виконує компʼютер. Ключові поняття: трансляція, компілятор, інтерпретатор, компонувальник (лінкер). Треба розуміти різницю між підходами та послідовність етапів створення виконуваної програми.
📖 Головне
• Вихідний код — це текст програми мовою високого рівня (Python, C++, Pascal), зрозумілий людині, але не процесору.
• Машинний код — послідовність двійкових команд, які безпосередньо виконує процесор.
• Трансляція — це процес перекладу програми з однієї мови на іншу, зазвичай з мови високого рівня у машинний код. Програма, що це робить, — транслятор.
• Два основні типи трансляторів: компілятор та інтерпретатор.
• Компілятор перекладає ВЕСЬ вихідний код одразу у окремий виконуваний файл (напр., .exe). Після компіляції програма запускається без компілятора.
• Інтерпретатор перекладає й одразу виконує програму команда за командою, під час кожного запуску. Окремий виконуваний файл не створюється.
• Компілятор: швидше виконання готової програми, але довше підготовка; помилки виявляються на етапі компіляції (до запуску).
• Інтерпретатор: повільніше виконання, зате зручніше тестувати й виправляти; помилки виявляються під час виконання, доходячи до проблемного рядка.
• Компонувальник (лінкер, linker) — програма, що зʼєднує кілька відкомпільованих частин (обʼєктних файлів) та бібліотек в один виконуваний файл.
• Типова послідовність компіляції: вихідний код → компілятор → обʼєктний код → компонувальник → виконуваний файл.
• Багато сучасних мов поєднують підходи: код компілюється у проміжний (байт-)код, який потім виконує спеціальне середовище.
🔢 Як це працює на прикладі
Приклад 1 (компілятор, C++): пишемо program.cpp → компілятор перевіряє синтаксис і створює обʼєктний файл program.obj → компонувальник додає потрібні бібліотеки → отримуємо program.exe. Файл можна передати іншому і запустити без установки компілятора.
Приклад 2 (інтерпретатор, Python): запускаємо script.py → інтерпретатор читає перший рядок, виконує, потім наступний і т.д. Якщо помилка в 10-му рядку — перші 9 вже виконаються, і лише тоді програма зупиниться. Для запуску в іншого користувача потрібен встановлений інтерпретатор Python.
⚠️ Типові помилки
• Плутають компілятор та інтерпретатор: компілятор перекладає все одразу й створює файл, інтерпретатор — по рядку під час виконання.
• Вважають, що компонувальник перекладає код у машинний — ні, він лише ЗʼЄДНУЄ вже готові обʼєктні файли й бібліотеки.
• Думають, що відкомпільованій програмі потрібен компілятор для запуску — не потрібен; а ось інтерпретованій інтерпретатор потрібен завжди.
• Плутають напрям трансляції: з мови високого рівня у машинний код, а не навпаки.
• Вважають, що інтерпретатор швидший — навпаки, виконання повільніше через переклад у реальному часі.
🎯 Що завчити напамʼять
• Компілятор = весь код одразу → виконуваний файл, запуск без транслятора.
• Інтерпретатор = по рядку під час виконання, транслятор потрібен щоразу.
• Компонувальник (лінкер) зʼєднує обʼєктні файли та бібліотеки.
• Послідовність: вихідний код → компілятор → обʼєктний код → лінкер → .exe.
🧠 Перевір себе
1. Який транслятор створює окремий виконуваний файл?
2. Що робить компонувальник?
3. У якому випадку для запуску програми потрібен встановлений транслятор?
4. На якому етапі виявляються помилки при компіляції — до чи під час запуску?
Відповіді: 1 — компілятор; 2 — зʼєднує обʼєктні файли та бібліотеки в один виконуваний файл; 3 — коли програма інтерпретована (потрібен інтерпретатор); 4 — до запуску, на етапі компіляції.