Building a Virtual Machine for Programming Language

О чём курс

Курс «Building a Virtual Machine for Programming Language» — это глубокое погружение в устройство языков программирования на низком уровне. Программа разработана для любознательных инженеров, которые хотят выйти за рамки использования готовых инструментов и понять, как именно работают современные виртуальные машины (VM) и интерпретаторы. В отличие от академических курсов, которые часто перегружены теорией формальных грамматик и лексического анализа, данный курс фокусируется на практической реализации семантики времени выполнения. Автор предлагает сфокусированный подход: за 4–6 часов интенсивного обучения вы пройдете путь от концепции до создания полноценной стековой виртуальной машины, аналогичной тем, что лежат в основе JavaScript или Python.

Курс идеально подходит для тех, кто хочет освоить создание сложных инженерных систем. Вы научитесь работать с байт-кодом, управлять стеком вызовов, реализовывать механизмы замыканий, автоматическое управление памятью (Garbage Collection) и объектно-ориентированные возможности языка. Обучение проходит в формате «живого кодинга» (pair-programming), что позволяет видеть процесс разработки «от и до» без пропусков важных деталей. Каждая лекция самодостаточна и лаконична, а анимированные презентации помогают визуализировать сложные структуры объектов и их взаимосвязи.

Почему стоит выбрать этот курс? Во-первых, это практический опыт: вы не просто смотрите видео, а решаете задачи в репозитории, заполняя пропуски в коде, что гарантирует глубокое понимание материала. Во-вторых, вы получаете переносимые знания. Хотя для реализации используется C++, акцент сделан на базовых конструкциях, которые легко адаптировать для Rust, JavaScript или других языков. В-третьих, это отличный фундамент для дальнейшего изучения JIT-компиляции. Понимание того, как интерпретатор байт-кода взаимодействует с памятью и объектами, сделает вас более профессиональным разработчиком, способным видеть «под капот» любой технологии, с которой вы работаете.

Курс требует базовых знаний C++ и понимания структур данных (стеки, деревья, списки). Также крайне желательно предварительное прохождение курса «Building an Interpreter from scratch», так как понимание AST-уровня, областей видимости и окружений является необходимым фундаментом для перехода к низкоуровневой интерпретации байт-кода. На выходе вы получите не только работающий проект виртуальной машины, но и фундаментальное понимание того, как устроены современные языки программирования, что является критически важным навыком для любого инженера, стремящегося к экспертному уровню в системном программировании.

Программа обучения

ЧАСТЬ 1: ОСНОВНЫЕ ОПЕРАЦИИ VM В этой части мы описываем конвейер компиляции и интерпретации, начиная построение нашего языка. Обсуждаются темы стека и регистрации виртуальных машин, объектов, размещенных в куче, и компиляции байт-кода. ЧАСТЬ 2: КОНТРОЛЬНЫЙ ПОТОК И ПЕРЕМЕННЫЕ В этой части мы реализуем структуры потока управления, такие как выражения if и циклы while, говорим о глобальных объектах и глобальных переменных, вложенных блоках и локальных переменных, а также реализуем дизассемблер. ЧАСТЬ 3.1: ФУНКЦИИ И СТЕК ВЫЗОВОВ В этой части мы начинаем говорить и реализовывать абстракцию функций и вызовы функций. Мы описываем концепцию стека вызовов, собственных и определяемых пользователем функций и IILE (мгновенно вызываемые лямбда-выражения). ЧАСТЬ 3.2: РЕАЛИЗАЦИЯ ЗАКРЫТИЯ В этой части мы сосредоточимся на реализации замыканий, поговорим об анализе области действия и escape-анализе, захвате свободных переменных и добавлении поддержки замыканий во время выполнения. ЧАСТЬ 4: СБОР МУСОРА Эта часть посвящена автоматическому управлению памятью, известному как сборка мусора. Мы обсуждаем кучу трассировки и реализуем сборщик мусора Mark-Sweep. ЧАСТЬ 5: ОБЪЕКТИВНОЕ ПРОГРАММИРОВАНИЕ В заключительной части мы добавляем поддержку объектно-ориентированного программирования, реализуя классы и экземпляры. Кроме того, мы создаем окончательный исполняемый файл виртуальной машины.

Складчина создана 2 декабря 2021 г. · описание обновлено 20 июля 2026 г.

Теги курса

Инструменты
4 690 ₽