Что такое интерпретируемый язык программирования?
Основы языка
Интерпретируемый язык — это язык, код которого выполняется построчно интерпретатором во время выполнения, без предварительной компиляции в машинный код.
Интерпретация против компиляции
- Компилируемый (C, Rust) — весь код заранее переводится в машинный код, затем запускается. Быстро выполняется, ошибки ловятся при компиляции.
- Интерпретируемый (JavaScript, Python) — код читается и выполняется на лету интерпретатором. Гибко и кроссплатформенно, но медленнее и ошибки всплывают в рантайме.
JavaScript — сложнее, чем «просто интерпретируемый»
Современные движки (V8) используют JIT-компиляцию (Just-In-Time): интерпретируют код, но «горячие» участки на лету компилируют в машинный код для скорости.
Исходник → парсинг → байт-код (интерпретация) → JIT-компиляция горячих участковПоэтому JS формально интерпретируемый, но на практике — гибрид с JIT.
Плюсы интерпретируемых языков
- Кроссплатформенность (работает везде, где есть интерпретатор).
- Быстрая разработка, не нужен этап компиляции.
- Динамичность.
Минусы
- Обычно медленнее компилируемых (сглаживается JIT).
- Ошибки — в рантайме.
Коротко для собеседования
Интерпретируемый язык выполняется построчно интерпретатором в рантайме без предкомпиляции в машинный код (кроссплатформенно, гибко, но медленнее). JavaScript формально интерпретируемый, но движки (V8) применяют JIT-компиляцию, превращая горячий код в машинный для скорости.