Интерпретируемый язык выполняется построчно с помощью интерпретатора, без предварительной компиляции всего кода в машинный. Компилируемый язык сначала полностью преобразуется компилятором в машинный код или байт-код, а затем выполняется.
Основные отличия:
| Признак | Интерпретируемый язык | Компилируемый язык |
|---|---|---|
| Процесс выполнения | Код читается и выполняется интерпретатором построчно | Код сначала компилируется, затем executable файл выполняется |
| Скорость выполнения | Обычно медленнее из-за накладных расходов интерпретации | Обычно быстрее, так как выполняется оптимизированный машинный код |
| Этап выявления ошибок | Ошибки выявляются в процессе выполнения | Большинство ошибок (синтаксические, некоторые семантические) выявляются на этапе компиляции |
| Портативность | Более портативен, если интерпретатор доступен на платформе | Требуется перекомпиляция для различных платформ/архитектур |
| Примеры | Python, JavaScript, Ruby | C, C++, Java (компиляция в байт-код), Go |
Пример выполнения в Python (интерпретируемый):
python
Пример выполнения в C++ (компилируемый):
cpp