Что такое Intermediate representation

«Что такое Intermediate representation» — вопрос из категории Java, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Intermediate representation (IR) — это промежуточная форма кода между исходным и машинным, используемая компиляторами и инструментами (например, D8/R8 в Android). Оптимизирует и анализирует код перед генерацией нативного кода.

Пример в Android:
При компиляции Kotlin/Java в DEX, код сначала преобразуется в IR для оптимизаций (удаление неиспользуемых методов, inline-функций и т.д.).

// Исходный код
fun sum(a: Int, b: Int) = a + b

// Может быть оптимизировано в IR как:
// (упрощённо) инструкции для сложения без создания метода

Плюсы:

  • Кросс-платформенность (один IR → разный нативный код).
  • Упрощение оптимизаций до финальной компиляции.