Компилируемый язык переводится в машинный код компилятором до выполнения программы. Результат этого процесса - исполняемый файл. Интерпретируемый язык выполняется построчно интерпретатором во время выполнения.
| Аспект | Компилируемый | Интерпретируемый |
|---|---|---|
| Выполнение | До запуска, в исполняемый код (бинарник) | Во время запуска, построчно |
| Скорость | Обычно быстрее за счет предварительной оптимизации | Обычно медленнее из-за накладных расходов интерпретатора |
| Зависимость | От архитектуры (требуется компиляция под конкретную ОС/ЦП) | От интерпретатора (требуется его наличие на системе) |
| Обнаружение ошибок | На этапе компиляции (много) | Во время выполнения (часть) |
| Процесс | Исходный код -> Компилятор -> Исполняемый файл -> Выполнение | Исходный код + Интерпретатор -> Выполнение |
| Примеры | C, C++, Go, Rust | Python, JavaScript, Ruby, PHP |
Python относится к интерпретируемым языкам, хотя его выполнение включает байт-код и виртуальную машину (CPython), что добавляет слой абстракции.
python
c