Escribiendo un compilador en Go
246 páginas
Spanish
PDF
4.5

Escribiendo un compilador en Go

Escribiendo un compilador en Go

Autor:

Año:

Resumen:

Introducción

El libro «Writing a Compiler in Go» es la segunda parte de la famosa dilogía de Thorsten Ball dedicada a la creación de un intérprete y un compilador para el lenguaje Monkey. Si el primer libro («Writing an Interpreter in Go») enseñaba a construir un intérprete, este volumen lleva al lector más allá: hacia la creación de un compilador completo que genera bytecode y su propia máquina virtual (VM).

El libro se publicó en 2019, tiene 246 páginas y está dirigido a programadores que dominan el lenguaje Go (Golang). Es ideal para quienes desean comprender profundamente cómo funcionan los compiladores, el bytecode y las máquinas virtuales en la práctica.

De qué trata el libro

Thorsten Ball muestra paso a paso cómo convertir el intérprete del primer libro en un compilador. La idea principal: en lugar de ejecutar el AST (árbol de sintaxis abstracta) directamente, lo compilamos en instrucciones de bytecode y luego las ejecutamos en una máquina virtual.

El libro cubre los siguientes temas:

  • Diseño del sistema de instrucciones (opcodes) para el bytecode.
  • Implementación del compilador que transforma el AST en una secuencia de bytecode.
  • Creación de una máquina virtual (VM) basada en pila.
  • Manejo de variables, funciones, closures, arreglos, hashes y funciones integradas.
  • Optimización y depuración del compilador.
  • Pruebas de cada etapa mediante pruebas unitarias.

Para quién es este libro

El libro está dirigido a desarrolladores Go de nivel intermedio y avanzado que ya conocen los fundamentos del lenguaje y desean profundizar en la programación de sistemas. También será útil para todos aquellos interesados en compiladores, máquinas virtuales y el funcionamiento interno de los lenguajes de programación. Si ha leído el primer libro, esta es una continuación obligada. Si no, el autor recomienda comenzar con él, pero también se puede empezar directamente, aunque será más difícil.

Qué aprenderá el lector

  • Cómo funciona la compilación de AST a bytecode. Aprenderá a diseñar un sistema de instrucciones y a escribir código que genere bytecode a partir del árbol de análisis.
  • Cómo está estructurada una máquina virtual basada en pila. Implementará una VM que ejecuta bytecode, gestiona la pila, las llamadas a funciones y la memoria.
  • Cómo manejar closures. Uno de los temas más complejos (la captura de variables del contexto externo) se explica con gran detalle.
  • Cómo probar el compilador y la VM. El autor dedica mucha atención a las pruebas, lo que hace que el libro sea práctico.
  • Cómo depurar bytecode. Aprenderá a generar trazas y a encontrar errores en el compilador.

Puntos fuertes

  • Enfoque práctico. Cada capítulo contiene código que se puede ejecutar y modificar de inmediato. No solo lee teoría, sino que escribe un compilador real.
  • Exposición paso a paso. El autor no abruma al lector con conceptos complejos de inmediato. Cada nuevo elemento se introduce gradualmente, con ejemplos y pruebas.
  • Código Go limpio y comprensible. El código está escrito en un estilo cercano al de producción, con énfasis en la legibilidad y la modularidad.
  • Inmersión profunda en el tema. Aprenderá no solo el «cómo», sino también el «por qué»: el autor explica las concesiones y los enfoques alternativos.
  • Autosuficiencia. El libro contiene todo lo necesario: desde el diseño hasta la implementación final. Al final, obtendrá un compilador y una VM funcionales.

A quién se recomienda

El libro será útil para:

  • Desarrolladores Go que deseen ampliar sus horizontes y comprender cómo funcionan los lenguajes de programación internamente.
  • Estudiantes y profesores de cursos de compiladores, como excelente material práctico.
  • Desarrolladores de otros lenguajes (Python, Java, C++) familiarizados con Go: los conceptos son universales.

Recommendations