- Un libro para aprender directamente diseño e implementación de lenguajes de programación, recorriendo el proceso de crear un lenguaje de scripting completo
- Explica paso a paso desde conceptos de alto nivel como parsing, semántica, bytecode y recolección de basura hasta la implementación de bajo nivel
- Empieza desde la función
main() y guía al lector para escribir un lenguaje con tipado dinámico, alcance léxico, funciones de primera clase, clases y herencia
- Está disponible en 4 formatos: impreso, eBook, PDF y versión web; en la web se puede leer el contenido completo gratis
- Escrito por Robert Nystrom, desarrollador del lenguaje Dart en Google, y es un recurso práctico importante para desarrolladores interesados en crear lenguajes
Descripción general del libro
- Crafting Interpreters es un libro sobre cómo implementar directamente un lenguaje de scripting eficiente y con funcionalidades completas
- Incluye tanto conceptos de alto nivel como parsing y semántica, como detalles de implementación de bajo nivel como representaciones en bytecode y recolección de basura
- Está estructurado para que el lector escriba el código por sí mismo y entienda completamente la estructura del lenguaje
- El lenguaje que se construye al final soporta gramática rica, tipado dinámico, recolección de basura, alcance léxico, funciones de primera clase, closures, clases y herencia
- Está compuesto por miles de líneas de código conciso y rápido, y todo el código lo escribe directamente el lector
Formatos disponibles
- El libro se ofrece en cuatro formatos: Print, eBook, PDF y Web
- Print: 640 páginas, con ilustraciones dibujadas a mano en alta resolución y tipografía cuidada
- eBook: el CSS se ajusta al tamaño de pantalla del dispositivo y ofrece resaltado de sintaxis en color e hipervínculos
- PDF: reproduce la maquetación y las ilustraciones de la edición impresa, con mayor portabilidad
- Web: incluye todos los capítulos e ilustraciones con diseño responsivo, y se puede leer completo gratis
Sobre el autor
- El autor, Robert Nystrom, participa en el desarrollo del lenguaje Dart en Google
- Anteriormente trabajó 8 años en desarrollo de videojuegos en Electronic Arts
- Es autor del bestseller Game Programming Patterns, que también está disponible gratis
- Fascinado por la creación de lenguajes, desarrolló varios proyectos personales de lenguajes (Wren, Magpie, Finch, Vigil)
- También mantiene actividad a través de su blog personal y Twitter(
@munificentbob), y administra una lista de correo relacionada con sus libros
Acceso y opciones de compra
- La edición impresa se puede comprar en librerías importantes como Amazon, Barnes & Noble y Book Depository
- El eBook está disponible en Kindle, Apple Books, Google Play Books y Smashwords
- La versión PDF se puede comprar en Payhip, y también ofrece descarga de un PDF de muestra gratuito
- La versión web se puede leer completa gratis en el sitio oficial
1 comentarios
Comentarios en Hacker News
Gracias a eso también terminé de comprender el concepto de herencia en jerarquías de clases (Class Hierarchy Inheritance), que no requiere visitor
En el lenguaje Newspeak se pueden tener clases anidadas dentro de una clase, por lo que al heredar también se heredan esas clases anidadas
Esta función es la que hace posibles las Free Object Algebras, como se explica en esta entrada del blog
Referencia: artículo sobre Expression Problem, sitio oficial de Newspeak
En 2020 obtuvo 777 puntos y en 2024 registró 607 puntos
porque te hace aprender implementando por tu cuenta distintas funciones y patrones del lenguaje
En lenguajes que tienen funciones que Java no tiene, es difícil aplicar patrones similares, pero ese desafío en sí mismo era divertido
Me gustó muchísimo el estilo casual del autor y el humor que aparece por todas partes
Ojalá salga una continuación como “Agregar un type checker a Lox”
Al principio compré la edición en papel, pero era tan grande y pesada que al final también compré el ebook
Es mucho más cómodo para tomar notas y buscar cosas
Aun así, a veces al leerlo se siente como perderse en la montaña :)
También recomiendo Game Programming Patterns, otro libro del autor
En una imprenta te lo hacen fácilmente y es mucho más cómodo de manejar sobre el escritorio
Pero Crafting Interpreters es un libro que jamás podría tirar, así que lo dejé tal cual
Así de bueno es este libro
Además, es realmente generoso que la versión web sea gratuita
Pero sí me da pena que la versión en Java esté desactualizada
Me gustaría que hubiera una edición revisada que reflejara funciones añadidas recientemente como sealed classes o exhaustive switch
Si haces eso, ya no hace falta la herramienta temporal de generación de código que creó el autor
Existe un enfoque medio hacky de agregar un context stack en un parser basado en PEG, pero el problema de cambiar de gramática sigue siendo difícil
Creo que las persistent data structures o transactional data structures podrían ayudar, pero todavía no he encontrado una formalización clara
La idea es hacer que el parser le pase estado al lexer, de modo que el lexer conozca el conjunto de nombres de tipos
Por ejemplo, en bibliotecas como Parsec, si aprovechas la notación
do, los parsers siguientes pueden compartir los resultados de cada etapaPor suerte Rust y Go evitaron este tipo de complicaciones, y con un diseño cuidadoso se pueden prevenir perfectamente
Vale la pena revisar el proyecto shi y, si te interesa más el lado de C, hacktical-c