Программирование [Thorsten Ball] Написание компилятора на Go

Регистрация
7 Апр 2025
Сообщения
10,778
Реакции
81
Автор: Thorsten Ball​
Название: Написание компилятора на Go​

cover.jpg

Язык: Английский Вес архива: 6 МБ


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

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

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

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

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

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

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

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

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

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

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

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

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

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

Компилятор Monkey

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Итог

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

СКАЧАТЬ:
 📥 Скрытое содержимое! Войдите или Зарегистрируйтесь
 

Похожие темы

10,840Темы
10,893Сообщения
787Пользователи
Ganna!Новый пользователь
Сверху