
Write Great Code, Volume 2, 2nd Edition
Randall Hyde
- Editorial
- No Starch Press
- Año
- 2020
- Páginas
- ~656
- Nivel
- Básico
De qué trata
Segunda edición de la clásica obra de Randall Hyde, publicada por No Starch Press (2020), enfocada en desmitificar cómo los compiladores traducen el código de alto nivel a lenguaje máquina y cómo «pensar en bajo nivel» para producir código mucho más rápido y eficiente. Está dirigida a desarrolladores de nivel básico e intermedio que ya programan en lenguajes estructurados u orientados a objetos (como C, C++, Java, Swift o C#) pero desconocen el coste computacional exacto de las abstracciones que eligen y desean optimizar el rendimiento sin tener que programar manualmente en ensamblador.
El libro aborda en profundidad la anatomía de los compiladores modernos y cómo convierten constantes, variables, tipos primitivos, arrays, punteros y estructuras compuestas en datos máquina. Analiza la traducción de estructuras de control (bucles for, while, condicionales if-else, bifurcaciones switch/case), llamadas a subrutinas, gestión del call stack, mecanismos de paso de parámetros (por valor y por referencia) y la sobrecarga del despacho dinámico en métodos virtuales. Para ilustrarlo, examina la salida en código ensamblador generado por compiladores como GCC y Clang en arquitecturas modernas x86-64 y procesadores ARM (habituales en dispositivos móviles), además de inspeccionar arquitecturas basadas en pila como la Máquina Virtual de Java (JVM) y el Common Language Runtime (CLR) de Microsoft .NET.
No es un curso práctico para aprender a programar en ensamblador ni guía el desarrollo de un proyecto de software de principio a fin; su dinámica se basa en la disección meticulosa de fragmentos de código fuente y el análisis de su correspondiente desensamblado. Hyde aporta una intuición invaluable para identificar cuellos de botella generados inadvertidamente por abstracciones de alto nivel y seleccionar construcciones sintácticas amigables para el optimizador del compilador. Quedan fuera aspectos de hardware físico y microarquitectura (tratados en el volumen 1 de la saga), por lo que conviene contar con nociones elementales sobre la CPU y desenvolverse con soltura leyendo sintaxis similar a C.
- Compiladores
- Optimización de código
- Arquitectura x86-64
- Arquitectura ARM
- Ensamblador
- JVM
- .NET CLR
- Estructuras de control
- Gestión de memoria
- Punteros y arrays
- Generación de código
¿Cómo enseña?
Teoría + práctica
- ✗ Sin ejercicios
- ✗ Sin proyectos

