Пишем интерпретатор на Go — Thorsten Ball — обложка книги
212 страниц
Go (Golang)
PDF
4.5

Пишем интерпретатор на Go

Создание языка программирования с нуля

Автор:

Год:

Краткое содержимое:

Введение

Книга «Writing an Interpreter in Go» (в русском переводе — «Пишем интерпретатор на Go») авторства Торстена Болла — это уникальное практическое руководство, которое шаг за шагом учит создавать полноценный интерпретатор для вымышленного языка программирования Monkey. В отличие от академических учебников по компиляторам, эта книга фокусируется на реальном коде и минимальной теории, позволяя читателю сразу приступить к написанию работающего интерпретатора на языке Go.

Книга вышла в 2018 году, содержит 212 страниц и рассчитана на программистов, которые хотят глубже понять, как работают языки программирования «под капотом». Она не требует предварительных знаний в области компиляторов, но предполагает уверенное владение Go.

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

Книга последовательно проводит читателя через все этапы создания интерпретатора: от лексического анализа до выполнения кода. Основные темы:

  • Лексический анализатор (лексер) — разбиение исходного кода на токены.
  • Парсер — построение абстрактного синтаксического дерева (AST) с использованием рекурсивного спуска и метода Пратта (Pratt parser).
  • Система объектов — представление значений (числа, строки, булевы, функции, массивы, хеши).
  • Вычислитель (eval) — обход AST и выполнение выражений и инструкций.
  • Замыкания и функции первого класса — реализация областей видимости и замыканий.
  • Встроенные функции — добавление стандартных операций (len, puts, first, rest и т.д.).
  • Система типов — динамическая типизация с проверками во время выполнения.

Каждая глава заканчивается работающим кодом, который можно сразу протестировать. В итоге читатель получает интерпретатор, способный выполнять программы на Monkey — языке с синтаксисом, напоминающим смесь C, JavaScript и Python.

Для кого эта книга

Книга будет полезна:

  • Go-разработчикам, желающим углубить понимание языка и его возможностей.
  • Программистам, интересующимся компиляторами — тем, кто хочет узнать, как работают парсеры и интерпретаторы.
  • Студентам и преподавателям — как практическое дополнение к курсам по языкам программирования.
  • Любому разработчику, который хочет создать свой собственный язык или DSL (предметно-ориентированный язык).

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

Что узнает читатель

После прочтения вы сможете:

  • Написать лексер с нуля, разбирающий строки на токены.
  • Реализовать парсер методом рекурсивного спуска с приоритетами операторов.
  • Построить и обойти AST.
  • Создать систему значений и окружений (среды выполнения).
  • Реализовать замыкания и функции высшего порядка.
  • Добавить поддержку массивов, хешей, строковых операций.
  • Понять, как работает динамическая диспетчеризация и обработка ошибок.
  • Получить готовый код интерпретатора, который можно расширять.

Сильные стороны книги

Практическая направленность. Каждая концепция немедленно подкрепляется кодом. Вы не просто читаете теорию — вы пишете интерпретатор строка за строкой.

Пошаговое изложение. Книга разбита на небольшие главы, каждая из которых добавляет новую функциональность. Это позволяет легко возвращаться к предыдущим разделам.

Чистый код на Go. Автор использует идиоматичный Go, интерфейсы и композицию, что делает код одновременно учебным и промышленным.

Отсутствие лишней теории. В отличие от «Дракона» (Aho, Lam, Sethi, Ullman), здесь нет формальных грамматик и доказательств — только то, что нужно для работающего интерпретатора.

Поддержка сообщества. Книга имеет репозиторий на GitHub с полным кодом, а также вторую часть — «Writing a Compiler in Go», где тот же язык компилируется в байт-код.

Кому рекомендуется

Книга обязательна к прочтению всем, кто хочет понять внутреннее устройство языков программирования. Она идеально подходит для самообразования, а также может использоваться как учебное пособие в вузах. Если вы когда-нибудь задумывались: «А как написать свой язык?» — начните с этой книги.

На сайте PythonLib мы рекомендуем её всем Go-разработчикам и энтузиастам компиляторов. Даже если вы пишете на Python, концепции лексера, парсера и AST универсальны и легко переносятся на другие языки.

Рекомендаций