Профиль навыка

Type Inference и Type Checking

Вывод типов: Hindley-Milner, unification, type checking, generics, variance

Компиляторы и языки Теория компиляторов

Ролей

3

где встречается этот навык

Грейдов

5

сформированная дорожка роста

Обязательных требований

11

ещё 4 — необязательные

Домен

Компиляторы и языки

Группа

Теория компиляторов

Последнее обновление

17.03.2026

Как использовать

Выберите текущий грейд и сравните ожидания. Карточки ниже покажут, что нужно закрыть для следующего уровня.

Чего ждут на каждом уровне

Таблица показывает, как меняется глубина владения навыком от Junior до Principal.

Роль Обязательность Описание
Compiler Engineer Обязателен Понимает базовые алгоритмы вывода типов: unification, Hindley-Milner inference. Знает разницу между structural и nominal type systems. Умеет работать с simple generics.
Language Tooling Engineer Изучает основы алгоритмов вывода типов, таких как Hindley-Milner и унификация. Читает исходный код компилятора, чтобы понять работу проходов проверки типов на практике.
Systems Programmer (C/C++) Изучает, как вывод типов и проверка типов влияют на расположение данных в памяти и гарантии безопасности. Понимает базовые правила системы типов, применяемые компилятором в языках Rust или C++.
Роль Обязательность Описание
Compiler Engineer Обязателен Реализует bidirectional type checking для языков с type annotations. Понимает constraint-based type inference. Пишет type checker для языка с generics и simple subtyping.
Language Tooling Engineer Реализует проходы вывода типов и интегрирует их с преобразованиями IR. Пишет комплексные тестовые наборы для проверки корректности type checker, включая граничные случаи с дженериками и вариантностью.
Systems Programmer (C/C++) Применяет знания вывода типов для написания более безопасного низкоуровневого кода с минимумом явных аннотаций. Использует проверку типов компилятора для обнаружения проблем безопасности памяти и неопределённого поведения на этапе компиляции.
Роль Обязательность Описание
Compiler Engineer Обязателен Проектирует type system для нового языка: variance, higher-kinded types, existential types. Реализует incremental type checking для language server. Оптимизирует производительность type checker.
Language Tooling Engineer Обязателен Проектирует продвинутые возможности системы типов, включая зависимые типы, GADT и вычисления на уровне типов. Архитектурно проектирует оптимизационные проходы компилятора, использующие информацию о типах для улучшения кодогенерации. Менторит команду по теории типов.
Systems Programmer (C/C++) Обязателен Проектирует типобезопасные абстракции для системных API, обеспечивающие корректность на этапе компиляции. Оценивает и влияет на решения по проектированию системы типов в языках вроде Rust, внося вклад в более безопасные паттерны системного программирования.
Роль Обязательность Описание
Compiler Engineer Обязателен Архитектурирует эволюцию type system языка с учётом backwards compatibility. Принимает решения о breaking changes. Управляет командой type system инженеров.
Language Tooling Engineer Обязателен Определяет архитектуру компилятора. Формирует стандарты разработки. Координирует compiler team.
Systems Programmer (C/C++) Обязателен Определяет архитектуру компилятора. Формирует стандарты разработки. Координирует compiler team.
Роль Обязательность Описание
Compiler Engineer Обязателен Определяет долгосрочную стратегию type system для языка платформы. Исследует dependent types, linear types, effect systems. Публикует академические работы о type системах.
Language Tooling Engineer Обязателен Определяет стратегию развития компилятора/языка. Проектирует core language features. Формирует technology vision.
Systems Programmer (C/C++) Обязателен Определяет стратегию развития компилятора/языка. Проектирует core language features. Формирует technology vision.

Сообщество

👁 Следить ✏️ Предложить изменение Войдите, чтобы предлагать изменения
📋 Предложения
Пока нет предложений для Type Inference и Type Checking
Загрузка комментариев...