Хотите понять, как реальные языки программирования проверяют типы, находят ошибки до запуска и обеспечивают безопасность кода? В этом курсе вы на практике создадите собственный статический типизатор с нуля — понятный, компактный и полностью рабочий.
Почему стоит изучить построение типизатора
Нетипизированные программы подвержены множеству скрытых ошибок, которые проявляются только во время выполнения. Статический типизатор позволяет:
- обнаруживать ошибки ещё на этапе разработки;
- ускорять процесс отладки;
- повышать надежность и предсказуемость кода;
- облегчать поддержку и развитие проекта.
При этом большинство материалов о теории типов объясняют концепции абстрактно и не показывают, как построить реальный работающий типизатор. Этот курс создан, чтобы заполнить пробел.
Что будет в курсе
Курс фокусируется на статической типизации и поэтапно показывает, как разработать типизатор, похожий по идеям на TypeScript или Java. Мы начинаем с базовых концепций теории типов, а затем — сразу к практике.
Основные темы
- что такое вывод типов и типовые суждения;
- сильная и слабая типизация — что это значит на практике;
- как организована система типов внутри языков программирования;
- архитектура и структура модулей типизатора;
- построение собственных правил вывода и проверки типов;
- алгоритмы унификации и проверки совместимости типов.
Практическая часть
С первых лекций вы будете писать код типизатора самостоятельно, шаг за шагом. Каждая деталь объясняется в live‑сессиях и закрепляется через задания в репозитории.
Навыки, которые вы получите
- понимание внутренних механизмов компиляторов и языка;
- умение проектировать сложные системы с нуля;
- практический опыт работы со структурами данных и алгоритмами;
- глубокое понимание систем типов — знания, которые легко переносить между языками.
Предварительные требования
Желательно, но не обязательно пройти курс «Построение интерпретатора с нуля». Если вы уже понимаете, что такое eval, замыкания, цепочка областей видимости и работа интерпретаторов, вы готовы к материалу.
Для кого этот курс
Курс подойдет инженерам, которые:
- интересуются компиляторами, языками программирования и теорией типов;
- хотят построить модуль типизации для собственного языка;
- стремятся прокачать инженерные навыки через разработку сложных систем;
- любят разбираться в фундаментальных концепциях на практике.
Используемые технологии
Типизатор мы пишем на чистом JavaScript, поскольку он доступен практически всем, а реализацию легко перенести в любой другой язык: TypeScript, Rust, OCaml, C++, Python и т. д.
Код в репозитории содержит задания с пометкой /* Реализовать здесь */, чтобы вы не просто копировали решение, а понимали и создавали типизатор самостоятельно.