Libro introductorio sobre compiladores y diseño de lenguajes (2021)
(dthain.github.io)- Un libro gratuito en línea desarrollado para el curso de compiladores CSE 40243 de Notre Dame, con PDF completo y PDFs por capítulo disponibles para descarga inmediata
- Sigue el flujo de construcción de un compilador a lo largo de un semestre y aborda el proceso de traducir programas de lenguajes de alto nivel a programas de bajo nivel
- El objetivo para el estudiante es implementar un compilador simple que reciba un lenguaje similar a C y lo convierta a ensamblador X86 o ARM
- Está mejor orientado a estudiantes de licenciatura con experiencia en programación en C y conocimientos de estructuras de datos y arquitectura de computadoras
- Los PDF pueden usarse con fines personales y académicos, pero se prohíbe su impresión y distribución comercial, y el material más reciente debe consultarse en compilerbook.org
Libro basado en el curso de compiladores de Notre Dame
- Introduction to Compilers and Language Design es un libro gratuito en línea desarrollado por Douglas Thain para el curso de compiladores CSE 40243 de University of Notre Dame
- La segunda edición corresponde a 2020 y aparece con fecha de revisión 15 de enero de 2021
- Quienes quieran una copia física pueden comprarla en tapa dura o en rústica
- El libro aborda tanto los aspectos teóricos como prácticos de la informática mediante el proceso de construir un compilador desde cero
- La meta final de aprendizaje es implementar un compilador sencillo que tome como entrada un lenguaje similar a C y lo traduzca a ensamblador X86 o ARM
PDF, código de ejemplo y condiciones de uso
- Se ofrecen el PDF completo del libro y PDFs por capítulo
- El apéndice incluye Sample Course Project, The B-Minor Language y Coding Conventions
- El repositorio de GitHub compilerbook-examples contiene materiales de práctica correspondientes al libro
- Varios escáneres y parsers
- Estructura de código inicial para el compilador del proyecto
- Casos de prueba de ejemplo para cada etapa: escáner, parser, verificador de tipos y generador de código
- El PDF puede descargarse, imprimirse y usarse con fines personales y académicos
- Se prohíbe la impresión o distribución comercial, y en lugar de copiar y distribuir el PDF localmente, se debe dirigir a los estudiantes a la página de compilerbook.org
- Los errores tipográficos o de contenido pueden enviarse por correo a
dthain@nd.educon el asuntoCompiler Book Errata
1 comentarios
Opiniones en Hacker News
Tomé la clase de compiladores del Dr. Thain en la universidad y fue excelente
Era un gran profesor, y gracias al proyecto de la clase pude construir paso a paso un compilador estilo C por mi cuenta. El proyecto de ejemplo de aquí se ve casi igual al que hicimos en ese entonces, y recomiendo mucho seguirlo hasta el final
Todavía no sé en qué curso se habrá tratado, pero C4(https://news.ycombinator.com/item?id=8558822) y C4x86(https://news.ycombinator.com/item?id=8746054) parecen buenos temas de estudio para un semestre
Como son compiladores muy pequeños de un subconjunto de C que se compilan a sí mismos, también parecen adecuados como base para tareas adicionales donde se amplíen sus funcionalidades
Artículos relacionados: Introduction to Compilers and Language Design (2021) - https://news.ycombinator.com/item?id=31388741 - mayo de 2022, 68 comentarios
Introduction to Compilers and Language Design - https://news.ycombinator.com/item?id=19728749 - abril de 2019, 1 comentario
Da la impresión de moverse solo dentro de un alcance estrecho alrededor de C y sus convenciones peculiares
La descripción del libro también dice que es “un texto introductorio de un semestre que permite al lector crear un compilador sencillo que acepte un lenguaje similar a C”
Según el prólogo, ¿el Dragon Book es de nivel avanzado de posgrado?
Es un clásico, pero apenas cubre hasta cierto punto los fundamentos de la teoría de la computación, y el resto del contenido sobre compiladores más bien lo recorre rápido
No trata en serio los temas modernos de compiladores de nivel de posgrado, y tampoco es un libro práctico. El Tiger Book es una introducción mucho mejor en cuanto al equilibrio entre práctica y teoría
Creo que los temas realmente avanzados de compiladores difícilmente puedan cubrirse bien con un solo libro
Dice: “Para cubrir todo este libro, o la mayor parte, se requieren al menos dos trimestres o dos semestres. Normalmente la primera mitad se cubre en cursos de pregrado, y la segunda mitad, que enfatiza la optimización de código, en un segundo curso de nivel de posgrado o intermedio”
A veces me impresiona mucho la gente que diseña lenguajes y construye compiladores
Por curiosidad intenté crear mi propio lenguaje, pero era demasiado difícil, así que terminé conformándome con un backend en C sencillo. Quienes contribuyen a LLVM parecen saberlo todo, incluso la generación de assembly, y eso me resulta realmente asombroso
Yo era desarrollador web y pasé a trabajar en compiladores basados en LLVM; LLVM en sí es enorme, así que no es fácil aprender todas sus áreas y mecanismos
Pero para escribir passes no complejos, corregir bugs y arreglar regresiones no se necesita un conocimiento extraordinariamente especial
Escribir un assembler es una buena forma de familiarizarse con la estructura de un compilador, porque no hay que preocuparse por optimizaciones, tipos ni muchas funcionalidades que vuelven complejos a los lenguajes de alto nivel
Con solo implementar el frontend de la gramática de un lenguaje propio y un pequeño bucle de evaluación, puedes explorar muchas partes de un lenguaje real. Como no te atasca la resolución de problemas reales, también es bueno para aprender y enseñar
Así que no hay absolutamente ninguna razón para avergonzarte por haberte conformado con un backend en C sencillo
Con solo hojear el índice, casi no se ven los temas principales de diseño de lenguajes
Más que el título, parece simplemente una “introducción a compiladores”
Es un nivel adecuado para entender cosas como Python o Ruby, o un compilador más simple de Pascal
Los compiladores y el diseño de lenguajes son campos tan antiguos como esta industria, así que hay demasiado conocimiento para meterlo en una sola materia. Aun así, este curso está bien, y creo que es mejor que cursos similares basados en el Dragon Book
Entre tantos temas de IA y ruido, da gusto ver un artículo sobre compiladores como este
El uso correcto y de alta calidad de la IA también tiene valor, y el trabajo que no usa IA también lo tiene. Sería bueno tener criterios válidos para los resultados relacionados con IA, en lugar de descalificar sin más el trabajo de la gente
Buen artículo
Me impresiona cómo, con excelentes ejemplos, vuelve a pulir y aclarar conocimientos que había aprendido antes