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: ОБЪЕКТИВНОЕ ПРОГРАММИРОВАНИЕ В заключительной части мы добавляем поддержку объектно-ориентированного программирования, реализуя классы и экземпляры. Кроме того, мы создаем окончательный исполняемый файл виртуальной машины.
Теги курса
Отзывов пока нет. Будьте первым!
Этот курс сейчас в процессе организации складчины. Нажмите кнопку «Записаться» и ожидайте старта — вам придёт уведомление. Когда складчина стартует, в карточке курса будет указан актуальный взнос. Текущая цена пока в процессе формирования и может отличаться от финальной.
Да, мы стремимся, чтобы финальный взнос был не больше ≈10% от оригинальной цены курса. Чем больше участников записывается в складчину, тем ниже выходит взнос для каждого.
Нажмите кнопку «Записаться» и авторизуйтесь на сайте через email (через ту же почту, которую будете использовать для входа). В личном кабинете вас будут ждать инструкции, как пригласить других участников — чем больше людей записалось, тем быстрее стартует складчина и тем ниже взнос. Как только складчина готова к приобретению, вам придёт уведомление.