CourseHunter
  • Категории
  • Источники
  • Все курсы
  • Разделы
  • Книги
English
Русский
Українська
Голубая
Фиолетовая
Cветлая
Терминал
Norton
Войти
🌸 Май уже здесь — скидки 50% до конца выходных, и сегодня тоже ☀️
Главная страницаКатегория golang (google go)Написание компилятора на Go

Написание компилятора на Go

Writing A Compiler In Go

Thorsten Ball logo
Thorsten Ball
★5 (всего оценок - 8)
Написание компилятора на Go
Начать Сейчас
Категория
Golang (Google Go)
Дата добавления
3 февр. 2024 г., 00:35
Язык
Английский
Дата обновления
29 апр. 2026 г., 19:50

Книга "Написание компилятора на Go" — это практическое руководство для разработчиков, которые хотят углубиться в устройство языков программирования и построить собственный компилятор и виртуальную машину. Пошаговый подход, акцент на работающем коде и ясное объяснение архитектуры делают изучение понятным и увлекательным.

О чём эта книга

Данное издание продолжает "Написание интерпретатора на Go" и использует его кодовую базу как фундамент. Вместо интерпретации кода Monkey через AST вы перейдёте на новый уровень — к компиляции в байт-код и выполнению на собственной стековой виртуальной машине.

Основная идея

Вы шаг за шагом создадите новый механизм выполнения Monkey, который:

  • быстрее интерпретатора примерно в 3 раза,
  • архитектурно ближе к реальным языкам и их рантаймам,
  • даёт глубокое понимание работы компиляторов и VM.

Продолжение первой книги

Хотя можно работать с кодом первой части как с «чёрным ящиком», максимальную пользу принесёт знакомство с тем, как он устроен внутри. В этой книге вы расширите:

  • лексер,
  • парсер,
  • AST,
  • систему объектов,
  • REPL.

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

Что вы создадите

В ходе работы вы спроектируете и реализуете полный цикл выполнения программ Monkey: от определения инструкций до виртуальной машины.

Система байт-кода

  • Описание и кодировка инструкций,
  • определение операндов,
  • создание мини-дизассемблера.

Компилятор Monkey

  • Преобразование AST в набор инструкций,
  • генерация корректного байт-кода,
  • ведение таблицы символов и пула констант.

Стековая виртуальная машина

  • Реализация основного цикла исполнения,
  • управление стеком и указателями стека,
  • выполнение арифметических и логических операций,
  • введение фреймов для функций.

Продвинутые возможности

Помимо базовой архитектуры вы реализуете функциональность, которая делает язык полноценным и мощным.

Поддержка функций

  • работа с локальными привязками,
  • обработка аргументов,
  • вызовы функций через фреймы.

Встроенные функции и расширение языка

  • добавление встроенных функций,
  • оптимизация выполнения примитивных операций.

Реализация замыканий

Вы разработаете корректную и эффективную систему замыканий, разберётесь, почему их компиляция является сложной задачей, и научитесь управлять их областями видимости в VM.

Чему вы научитесь

Книга сочетает теорию и практику, помогая глубже понять:

  • как устроен машинный код и операционные коды,
  • что такое стек, стековые указатели и базовые указатели,
  • как определяются соглашения о вызовах,
  • как проектируются компактные и эффективные виртуальные машины.

Итог

После прохождения книги у вас будет собственный компилятор и виртуальная машина, полностью построенные на Go. Вы увидите весь процесс создания рабочей архитектуры — от первых инструкций до полноценного выполнения программ на Monkey — и получите понимание того, как устроены языки программирования, которыми вы пользуетесь каждый день.

Автор - Thorsten Ball

Thorsten Ball logo

Thorsten Ball

Привет, меня зовут Торстен Балл. Я программист, живущий в Германии. На протяжении всей моей профессиональной жизни в качестве разработчика программного обеспечения я работал с веб-технологиями и развертывал код на Ruby, JavaScript, Go и даже C в продакшн-системах.

GitHub
Автор

Другие материалы в этой категории

Написание компилятора

Написание компилятора

Компиляторы, интерпретаторы и формальные языки

Компиляторы, интерпретаторы и формальные языки

Написание интерпретатора на Go

Написание интерпретатора на Go

Комментарии
 logo
    КонтактыРаспространенные вопросыПлейлистыПриватностьУсловия