Автор: Jeremy G. Siek
Издательство: The MIT Press
Год: 2023
Страниц: 240
Язык: английский
Формат: epub (true)
Размер: 16.6 MB
A hands-on approach to understanding and building compilers.
Compilers are notoriously some of the most difficult programs to teach and understand. Most books about compilers dedicate one chapter to each progressive stage, a structure that hides how language features motivate design choices. By contrast, this innovative textbook provides an incremental approach that allows students to write every single line of code themselves.
Essentials of Compilation guides the reader in constructing their own compiler for a small but powerful programming language, adding complex language features as the book progresses. Jeremy Siek explains the essential concepts, algorithms, and data structures that underlie modern compilers and lays the groundwork for future study of advanced topics. Already in wide use by students and professionals alike, this rigorous but accessible book invites readers to learn by doing.
We take you on a journey through constructing your own compiler for a small but powerful language. Along the way we explain the essential concepts, algorithms, and data structures that underlie compilers. We develop your understanding of how programs are mapped onto computer hardware, which is helpful in reasoning about properties at the junction of hardware and software, such as execution time, software errors, and security vulnerabilities. For those interested in pursuing compiler construction as a career, our goal is to provide a stepping-stone to advanced topics such as just-in-time compilation, program analysis, and program optimization. For those interested in designing and implementing programming languages, we connect language design choices to their impact on the compiler and the generated code.
A compiler is typically organized as a sequence of stages that progressively translate a program to the code that runs on hardware. We take this approach to the extreme by partitioning our compiler into a large number of nanopasses, each of which performs a single task. This enables the testing of each pass in isolation and focuses our attention, making the compiler far easier to understand.
This book has been used in compiler courses at California Polytechnic State University, Portland State University, Rose–Hulman Institute of Technology, University of Freiburg, University of Massachusetts Lowell, and the University of Vermont.
We use the Racket language both for the implementation of the compiler and for the input language, so the reader should be proficient with Racket or Scheme.
Deconstructs the challenge of compiler construction into bite-sized pieces
Enhances learning by connecting language features to compiler design choices
Develops understanding of how programs are mapped onto computer hardware
Learn-by-doing approach suitable for students and professionals
Proven in the classroom
Extensive ancillary resources include source code and solutions
Contents:
Скачать Essentials of Compilation: An Incremental Approach in Racket