ru

Купить книгу Написание компилятора на Go на русском [PDF, EPUB, FB2, MOBI]

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

Writing A Compiler In Go (B07FZWWVQT)

Купить и скачать электронную книгу в форматах PDF, EPUB, FB2, MOBI

Thorsten Ball | #466: Языки программирования

4.7 (111)
Это продолжение книги «Написание интерпретатора на Go». Мы продолжаем с того места, где остановились, и пишем компилятор и виртуальную машину для Monkey.

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

Но на этот раз мы определим байт-код, скомпилируем Monkey и запустим его на нашей собственной виртуальной машине. Это следующий шаг в эволюции Monkey.

Это продолжение… языка программирования.

Книга «Написание компилятора на Go» является продолжением книги «Написание интерпретатора на Go». Она начинается там, где закончилась первая книга, с полностью работоспособного и протестированного интерпретатора Monkey, что обеспечивает бесшовную связь между двумя книгами и позволяет сразу же приступить к созданию компилятора и виртуальной машины для Monkey.
В этой книге мы используем кодовую базу (включенную в книгу!) из первой части и расширяем её. Мы берём лексер, парсер, AST, REPL и объектную систему и используем их для создания новой, более быстрой реализации Monkey, прямо рядом с алгоритмом обхода дерева, который мы разработали в первой книге.
Подход также остаётся неизменным. В центре внимания — работающий, протестированный код, мы создаём всё с нуля, делаем маленькие шаги, сначала пишем тесты, не используем сторонние библиотеки и смотрим и понимаем, как все части взаимодействуют друг с другом.
Это продолжение и в прозе, и в коде.
Нужно ли читать первую часть перед этой? Если вас устраивает, что код из первой книги воспринимается как «чёрный ящик», то нет. Но эти книги не об этом; они о том, как открывать «чёрные ящики», заглядывать внутрь и проливать на них свет. Вы лучше всего поймёте, куда мы движемся в этой книге, если будете знать, с чего мы начали.


Узнайте, как написать компилятор и виртуальную машину.

Наша главная цель в этой книге — развитие Monkey. Мы меняем его архитектуру и превращаем его в компилятор байт-кода и виртуальную машину.
Мы возьмём лексический анализатор, парсер, абстрактное синтаксическое дерево и объектную систему, которые мы написали в первой книге, и используем их для создания собственного компилятора Monkey и виртуальной машины… с нуля! Мы будем создавать их параллельно, чтобы у нас всегда была работающая система, которую мы сможем постоянно развивать.
В итоге мы получаем не только гораздо более близкий к используемым нами ежедневно языку программирования код, что позволяет лучше понимать принципы его работы, но и в 3 раза более быстрый. И это без явной цели повышения производительности.

Вот что мы сделаем:

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

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

Мы также

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

Введите ваш e-mail

Мы отправим электронную книгу на ваш e-mail
Введите корректный e-mail
На каком языке вы хотели бы купить книгу?