
Tras una serie de incesantes artículos centrados en como afrontar algunas de las certificaciones cloud más populares de la actualidad, puede que no sea un mal momento para dedicarle un escrito a lo que me ha mantenido ocupado los últimos meses: Go, el archiconocido lenguaje de programación desarrollado por Google, y una retahíla de libros (electrónicos, siempre electrónicos) con los que dominarlo.
Así, la idea es describir de forma totalmente subjetiva las fortalezas y debilidades de aquellos libros leídos que puedan ser de ayuda, primero para aprender y después para masterizar Go, pero siempre orientados a aquellas persona que se hayan adentrado previamente en las artes oscuras de la programación. Sencillo, ¿no?
Sobra decir que la intención es que él articulo que perdure en el tiempo y para ello se irá actualizando a medida que consuma y/o se publique nuevo material al respecto. Sin mas dilación, comenzamos.
Starter Books
The Go Programming Language – Alan A. A. Donovan and Brian W. Kernighan
Probablemente se trate del libro “semi-oficial” de referencia, y sin lugar a dudas, uno de los más recomendados en cualquier debate sobre los mejores libros para aprender a programar en Go. Y no, no es una exageración, no hay más que Googlear un poco para darse cuenta de que no existe blog o hilo de Reddit en el que no se recomiende, lo que dice mucho a su favor.
Al igual que el resto de obras recogidas en esta sección, repasa los fundamentos básicos del lenguaje de programación de Google, como la sintaxis, tipos de variables (básicas y compuestas), métodos, funciones, interfaces, testing… pero también aborda capítulos más complejos como la reflexión o la concurrencia vía gorutines y channels. Y es precisamente en este último apartado donde brilla con luz propia, presentando ejemplos de lo más ilustrativos que son de gran ayuda para personas con nociones nulas en concurrencia, como es el caso de un servidor.
Sobra decir que en el resto de capítulos roza también la excelencia, con explicaciones y ejemplos prácticos de todas las posibilidades que brinda Go, si bien se echa y mucho en falta que las acompañe con recomendaciones, mejores practicas o convenciones, que ayuden a saber que opción escoger en cada situación. Por ejemplo, cuando se comenta que es posible declarar una variable hasta de 3 formas distintas, sería de lo mas acertado hacer énfasis en cuando emplear cada una de ellas, pero desgraciadamente es algo que no ocurre.
Dicho esto, se trata de un libro de lo más recomendado para todo aquel que quiera iniciarse en el mundo de Go, siempre y cuando disponga de experiencia previa en coding.
Learning Go – Jon Bodnera
En el momento de escribir estas líneas es indudablemente el mejor libro para aprender a programar en Go y si tienes que quedarte con uno, es este, así de sencillo.
El motivo es que cada explicación suele venir acompañada de consejos, buenas practicas o convenciones a las que ha llegado la comunidad, lo que le añade un valor diferencial. Dicho de otro modo, no solo describe la posibilidades que el lenguaje ofrece, acompañado de los correspondientes ejemplos de código, sino que también te guía para hacer un uso apropiado de él y producir código de calidad desde el primer día.
Como aspecto menos positivo, por que llamarlo negativo sería ser tremendamente injusto con él, es que el apartado de la concurrencia no es tan didáctico como el presentado en el libro The Go Programming Language. Es comprensible, ya que no es el tema sobre el que gira la obra. Al hilo de esto, permitidme comentar que, aunque no haya tenido aún el placer de leerlo, Concurrency in Go: Tools and Techniques for Developers de Katherine Cox-Buday, tiene unas criticas excelentes, y puede ser la opción recomendada para profundizar en el tema, si bien no puedo corroborarlo de primera mano.
En definitiva, Learning Go es mi opción preferente para aprender a programar en Go, si bien se complementa a la perfección con cualquiera de los otros libros de la lista. Al final y al cabo, cuantas más fuentes de calidad puede uno consultar, mayor será su conocimiento.
Pro Go – Adam Freeman
Publicado en Enero del 2022, podría perfectamente llamarse “La enciclopedia de Go”, por qué hace un esfuerzo sobrenatural por describir en detalle absolutamente todas las posibilidades que puede ofrecer este minimalista lenguaje de programación.
Alguno podría pensar que esto se asemeja a lo comentado en las obras anteriores, pero ni de lejos. La cantidad de datos, tablas y explicaciones es abrumadora, lo que lo convierte en un medio excelente para consultar cualquier cuestión acerca de Go, o al menos mientras se mantenga actualizado.
El problema es que más no siempre es mejor, y por muchos datos en crudo que pueda proporcionar, las explicaciones no son tan didácticas como las que exponen el resto de libros, lo que deriva en que no resulta tan agradable de leer. Tampoco hay rastro alguno de consejos, buenas practicas o convenciones a las que ha llegado la comunidad.
Todo esto juega en su contra y lo convierte en la opción menos recomendada de todas, o al menos lo descartan como opción principal. Ahora bien, siempre puede tener un hueco como obra complementaria que rellene tu biblioteca digital.
Advanced Books
Hands-On Dependency Injection in Go – Corey Scott
Tal y como su propio nombre indica, se trata de una publicación centrada única y exclusivamente en explorar las distintas técnicas existentes para llevar a cabo una inyección de dependencias en Go, ¡Y lo hace con mucho acierto si se me permite apuntillar!
El libro se toma su tiempo para detallar cada una de las opciones mediante descripciones didácticas, ejemplos de código simples y avanzados, tablas de fortalezas y debilidades, explicaciones sobre cuándo emplear cada una de ellas, comparativas o resúmenes al final de cada capitulo. Y por supuesto, si tiene que introducir otros conceptos como SOLID para que las explicaciones ganen empaque, lo hace también de forma adecuada.
El problema radica en que una vez leída la obra, te deja un sabor agridulce, o al menos es lo que le ocurrió a un humilde servidor. Es decir, no sientes que tengas a tu disposición un nuevo abanico de herramientas para emplear en los próximos trabajos, por que la gran mayoría de las situaciones te conducen a emplear la ya archiconocida inyección de dependencias por constructor. Y lo peor es de todo es que no es culpa del libro per se, al que poco o nada se le puede reprochar.
A pesar de ello, su compra no deja de ser recomendable, y mas aun si se encuentra a un precio ajustado.
Gopher-Notebook
La ultima recomendación del artículo no es un libro, sino un repositorio de GitHub en el que he ido recopilando notas personales sobre las mejores prácticas y convenciones del lenguaje Go, extraídas de las obras previamente mencionadas, así como de otras webs de referencia como Go Code Review Comments, Effective Go o Uber Go Style Guide, entre otras.
Conclusiones
En conclusión, el post describe de forma totalmente subjetiva las fortalezas y debilidades de aquellos libros leídos que puedan ser de ayuda para aprender a programar en Go. Dado que se trata de un artículo vivo que se irá actualizando a medida que consuma y/o se publique nuevo material, no puedo mas que recomendar que lo revisteis de cuando en cuando.