Домен
Компиляторы и языки
Профиль навыка
Кодогенерация: emission machine code, register allocation, instruction selection
Ролей
3
где встречается этот навык
Грейдов
5
сформированная дорожка роста
Обязательных требований
11
ещё 4 — необязательные
Компиляторы и языки
Инструменты компиляторов
17.03.2026
Выберите текущий грейд и сравните ожидания. Карточки ниже покажут, что нужно закрыть для следующего уровня.
Таблица показывает, как меняется глубина владения навыком от Junior до Principal.
| Роль | Обязательность | Описание |
|---|---|---|
| Compiler Engineer | Обязателен | Понимает что такое кодогенерация и разницу между native code, bytecode и интерпретацией. Знает базовые концепции register allocation и instruction selection. Умеет читать x86/ARM assembly. |
| Language Tooling Engineer | Генерирует простой код из IR с помощью шаблонных эмиттеров. Понимает соответствие AST-узлов конструкциям целевого языка. Пишет базовые тесты для проверки корректности сгенерированного кода. | |
| Systems Programmer (C/C++) | Читает сгенерированный ассемблерный или машинный код на выходе компиляторных бэкендов. Понимает базовые концепции выбора инструкций и распределения регистров. Отслеживает пути генерации кода для отладки простых проблем. |
| Роль | Обязательность | Описание |
|---|---|---|
| Compiler Engineer | Обязателен | Реализует кодогенерацию для стекового или register-based bytecode. Использует LLVM или QBE для native кодогенерации. Генерирует оптимизированный код для паттернов вызовов функций. |
| Language Tooling Engineer | Реализует генераторы кода для нескольких выходных форматов (исходный код, байткод). Строит peephole-оптимизации и обрабатывает платформо-специфичную эмиссию кода. Пишет property-based тесты для валидации сгенерированного вывода. | |
| Systems Programmer (C/C++) | Реализует проходы выбора и планирования инструкций для целевых архитектур. Работает с аллокаторами регистров и обеспечивает соответствие соглашениям о вызовах. Пишет обширные тесты, гарантирующие корректность генерируемых бинарников на разных платформах. |
| Роль | Обязательность | Описание |
|---|---|---|
| Compiler Engineer | Обязателен | Проектирует instruction selection и register allocation для нового target. Реализует calling convention для custom ABI. Оптимизирует codegen для специфических CPU архитектур (x86/ARM/RISC-V). |
| Language Tooling Engineer | Обязателен | Проектирует пайплайны генерации кода с подключаемыми бэкендами для нескольких целевых платформ. Архитектурирует стратегии JIT-компиляции и инкрементальной генерации кода. Менторит команду по проектированию компиляторных бэкендов и компромиссам оптимизации. |
| Systems Programmer (C/C++) | Обязателен | Проектирует бэкенды генерации кода для кастомного оборудования и специализированных ISA. Архитектурирует стратегии автовекторизации и SIMD-эмиссии кода. Менторит инженеров по низкоуровневой оптимизации и совместному проектированию hardware-software. |
| Роль | Обязательность | Описание |
|---|---|---|
| Compiler Engineer | Обязателен | Архитектурирует backend компилятора и codegen pipeline. Принимает решения об instruction scheduling и peephole optimization. Управляет командой backend инженеров. |
| Language Tooling Engineer | Обязателен | Определяет архитектуру компилятора. Формирует стандарты разработки. Координирует compiler team. |
| Systems Programmer (C/C++) | Обязателен | Определяет архитектуру компилятора. Формирует стандарты разработки. Координирует compiler team. |
| Роль | Обязательность | Описание |
|---|---|---|
| Compiler Engineer | Обязателен | Определяет стратегию кодогенерации для новых ISA (RISC-V, WebAssembly). Исследует superoptimization и stochastic codegen техники. Участвует в стандартизации ABI для платформы. |
| Language Tooling Engineer | Обязателен | Определяет стратегию развития компилятора/языка. Проектирует core language features. Формирует technology vision. |
| Systems Programmer (C/C++) | Обязателен | Определяет стратегию развития компилятора/языка. Проектирует core language features. Формирует technology vision. |