Although I use git every day, I've never taken the time to think about its internals. Reading this book and seeing each simple idea on its own come together into git was really cool, and makes me think I should write an implementation of it in some obscure language like Emacs Lisp or something :P
This book is a great walkthrough of how git actually works. James does a great job of presenting the internals of one of our most widely used tools in an accessible fashion.
Es un librazazo que se siente como un tutorial profundo gigante sobre la construcción de Git y todos los detalles que implican sus comandos más importantes. Lo que esto implica es que se está tomando software del mundo real y se tiene que replicar su funcionalidad externa, además de hacer un poco de ingeniería inversa para hacer una implementación completamente compatible.
Se hace una implementación de git en Ruby (llamada Jit), que como dijimos, es completamente compatible y se recorren muchos temas relacionados con la programación:
1. El lenguaje Ruby, muchas de sus particularidades e implementaciones en sus biblioteca estándar 2. Sistemas operativos y la forma en que realizan las cosas que les pedimos 3. Representación y compresión de información 4. Estructuras de datos tanto básicas como avanzadas 5. Algoritmos y su uso en software real (XDelta, Myers Diff) 6. Testing 7. Prácticas convenientes de programación, para hacer el desarrollo más sencillo 8. Redes de computadoras y transmisión de datos
Es increíble todo lo que un programa tan útil tiene que hacer y tomar en cuenta para funcionar correctamente.
En conclusión, creo que es un libro que tienes que leer si quieres mejorar tu capacidad de crear buen software y además creo que lo puedes seguir con otro lenguaje que no sea Ruby para conocer este lenguaje a fondo. Además creo que un libro o curso similar debería darse en la universidad para que todo estudiante saliera sin dudas de dónde se aplican todas estos algoritmos y estructuras de datos que se ven ahí.
Nota: Pienso que este libro no está hecho para leerse, sino para seguirse como un curso en el cuál vas a profundizar en muchos temas, yo hice un pasón rápido, pero espero que el próximo año lo pueda seguir profundamente con Rust.