Cuando enseñé compiladores, utilicé la Implementación moderna de compiladores de Andrew Appel en ML . Es fácil de leer y, además de todos los conceptos básicos (lexing, análisis, verificación de tipos, generación de código, asignación de registros), cubre técnicas para lenguajes funcionales y orientados a objetos y tiene un poco más de material sobre análisis estáticos más allá de la vida.
Otros puntos a su favor:
- No se detiene demasiado en el lexer y el analizador sintáctico. Estas pueden haber sido partes interesantes de un compilador cuando la tecnología era nueva, por ejemplo, hace 40 o 50 años, pero ya no lo son.
- La implementación de su compilador en un lenguaje con tipos de datos algebraicos y coincidencia de patrones lo hace significativamente mejor. ML estándar es casi como un DSL para escribir compiladores. Appel también tiene ediciones Java y C del libro, pero no las recomendaría tan altamente, ya que Java introduce un montón de repeticiones, y con C puedes administrar la memoria manualmente, lo cual es una molestia innecesaria.
- El tratamiento de Appel del algoritmo de fusión de registro iterado es realmente agradable.
Dicho esto, el libro del Dragón es un clásico. No he visto la nueva edición, así que no sé cómo se compara con Appel.
¿El curso usa un libro de texto y sabes cuál? Si es así, es posible que desee leer algo diferente.
- Si me gusta Anathem de Neal Stephenson, ¿qué más debería leer?
- Si tuviera que elegir leer un libro de Murakami, ¿cuál es su mejor libro?
- Amo a Steinbeck. He leído The Grapes of Wrath, East of Eden, Of Mice and Men y The Pearl. ¿Qué libro de Steinbeck debería leer a continuación?
- Soy nuevo en Tom Clancy: ¿cuál sería el mejor libro para empezar? (tal vez con un segundo lugar)
- Soy un chico al que le gustan The Hunger Games y Harry Potter. ¿Debería leer Graceling?