PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

Что такое интерпретируемый язык программирования?

Основы языка

Интерпретируемый язык — это язык, код которого выполняется построчно интерпретатором во время выполнения, без предварительной компиляции в машинный код.

Интерпретация против компиляции

  • Компилируемый (C, Rust) — весь код заранее переводится в машинный код, затем запускается. Быстро выполняется, ошибки ловятся при компиляции.
  • Интерпретируемый (JavaScript, Python) — код читается и выполняется на лету интерпретатором. Гибко и кроссплатформенно, но медленнее и ошибки всплывают в рантайме.

JavaScript — сложнее, чем «просто интерпретируемый»

Современные движки (V8) используют JIT-компиляцию (Just-In-Time): интерпретируют код, но «горячие» участки на лету компилируют в машинный код для скорости.

Исходник → парсинг → байт-код (интерпретация) → JIT-компиляция горячих участков

Поэтому JS формально интерпретируемый, но на практике — гибрид с JIT.

Плюсы интерпретируемых языков

  • Кроссплатформенность (работает везде, где есть интерпретатор).
  • Быстрая разработка, не нужен этап компиляции.
  • Динамичность.

Минусы

  • Обычно медленнее компилируемых (сглаживается JIT).
  • Ошибки — в рантайме.

Коротко для собеседования

Интерпретируемый язык выполняется построчно интерпретатором в рантайме без предкомпиляции в машинный код (кроссплатформенно, гибко, но медленнее). JavaScript формально интерпретируемый, но движки (V8) применяют JIT-компиляцию, превращая горячий код в машинный для скорости.

Другие вопросы раздела