Домен
Компиляторы и языки
Профиль навыка
Проектирование интерпретаторов: tree-walking, bytecode VM, GC, REPL
Ролей
3
где встречается этот навык
Грейдов
5
сформированная дорожка роста
Обязательных требований
11
ещё 4 — необязательные
Компиляторы и языки
DSL и интерпретаторы
17.03.2026
Выберите текущий грейд и сравните ожидания. Карточки ниже покажут, что нужно закрыть для следующего уровня.
Таблица показывает, как меняется глубина владения навыком от Junior до Principal.
| Роль | Обязательность | Описание |
|---|---|---|
| Compiler Engineer | Обязателен | Понимает разницу между компилятором и интерпретатором, знает tree-walking interpreter паттерн. Реализует простой интерпретатор для арифметических выражений с переменными. |
| Language Tooling Engineer | Понимает архитектуру tree-walk интерпретаторов и базовые циклы вычисления. Реализует простые вычислители выражений, следуя существующим паттернам интерпретаторов. Пишет тесты для проверки корректности интерпретатора на базовых конструкциях языка. | |
| Systems Programmer (C/C++) | Читает исходный код интерпретаторов для понимания диспатча байткода и потока выполнения. Понимает разницу между стековыми и регистровыми VM-архитектурами на концептуальном уровне. Отлаживает простые проблемы интерпретатора с помощью пошагового выполнения. |
| Роль | Обязательность | Описание |
|---|---|---|
| Compiler Engineer | Обязателен | Реализует bytecode compiler + VM интерпретатор для простого языка. Понимает dispatch techniques: switch dispatch, threaded code. Оптимизирует основной interpreter loop. |
| Language Tooling Engineer | Реализует байткод-интерпретаторы с корректным управлением областями видимости и поддержкой замыканий. Строит сборщики мусора и управление памятью для интерпретируемых языков. Пишет комплексные тест-сьюты, покрывающие поток управления, обработку ошибок и граничные случаи. | |
| Systems Programmer (C/C++) | Реализует байткод-VM с оптимизированными механизмами диспатча, такими как threaded code. Работает над управлением памятью в runtime: стратегии аллокации и интеграция GC. Пишет бенчмарки производительности и регрессионные тесты для пропускной способности интерпретатора. |
| Роль | Обязательность | Описание |
|---|---|---|
| Compiler Engineer | Обязателен | Проектирует high-performance интерпретатор с inline caching для динамических операций. Реализует specialization для часто выполняемых hot paths. Профилирует и оптимизирует interpreter overhead. |
| Language Tooling Engineer | Обязателен | Проектирует архитектуры интерпретаторов с уровнями JIT-компиляции и адаптивной оптимизацией. Архитектурирует инфраструктуру отладки и профилирования для рантаймов интерпретируемых языков. Менторит команду по компромиссам проектирования VM и инженерии производительности рантайма. |
| Systems Programmer (C/C++) | Обязателен | Проектирует высокопроизводительные рантаймы интерпретаторов с inline-кэшированием и спекулятивной оптимизацией. Архитектурирует FFI-слои и interop с нативным кодом для интеграции интерпретатора с системными библиотеками. Менторит инженеров по внутренностям VM, тюнингу GC и корректности рантайма. |
| Роль | Обязательность | Описание |
|---|---|---|
| Compiler Engineer | Обязателен | Архитектурирует interpreter как часть полного language runtime. Принимает решения о балансе interpreter/JIT. Управляет развитием execution strategy. |
| Language Tooling Engineer | Обязателен | Определяет архитектуру компилятора. Формирует стандарты разработки. Координирует compiler team. |
| Systems Programmer (C/C++) | Обязателен | Определяет архитектуру компилятора. Формирует стандарты разработки. Координирует compiler team. |
| Роль | Обязательность | Описание |
|---|---|---|
| Compiler Engineer | Обязателен | Определяет стратегию execution engine для платформы. Исследует copy-and-patch compilation и direct threading. Влияет на стандарты interpreter performance в индустрии. |
| Language Tooling Engineer | Обязателен | Определяет стратегию развития компилятора/языка. Проектирует core language features. Формирует technology vision. |
| Systems Programmer (C/C++) | Обязателен | Определяет стратегию развития компилятора/языка. Проектирует core language features. Формирует technology vision. |