Por alguna razón, Go se ha vuelto popular en redes sociales, al menos entre los tech influencer norteamericanos.
Puede ser porque se ha descubierto la simpleza de este lenguaje, el hecho de que se usa más de lo que se sospecha, y que ha madurado bastante bien. Aunque está pronto a cumplir la mayoría de edad, Go es uno de esos lenguajes que al principio te hace arrugar la nariz, pero terminas encontrándolo increíblemente razonable, y terminas apreciándolo.
Tengo la oportunidad de trabajar con este lenguaje todos los días en mi trabajo y he aprendido una que otra cosa de este, y no termina de sorprenderme. Como casi todos los buenos lenguajes, la sintaxis se puede aprender en un par de días, pero solo logras la maestría después de varios años de usarlo.
Esta sección del newsletter nació como una forma de actualizar conocimiento a aquellos colegas que se sienten “oxidados”, ya sea porque no programan hace años y quieren volver a hacerlo, o porque llevan una desolada vida escribiendo código en Java en un entorno “enterprise” 😜.
Así que vamos a gastar algunos posts hablando sobre Go. Por ahora les voy a comentar 10 aspectos que considero relevantes sobre este lenguaje que nos ponen en contexto
Go fue diseñado por Robert Griesemer, Rob Pike y Ken Thompson, este último uno de los creadores de Unix. Este fue un esfuerzo interno para mejorar el proceso de desarrollo en Google.
Aunque fue creado en Google, su penetración en esta empresa no es tanta como uno pudiera imaginar. Esto es razonable, porque pasado cierto tamaño de la base de código, re implementar en otros lenguajes puede ser muy costoso. Sin embargo, uno de los mejores ejemplos de un producto creado usando Go viene precisamente de Google, me refiero a Kubernetes.
Go nació como una reacción a C++, que no les gustaba a los diseñadores del lenguaje. Buscaban algo que mantuviera algo del espíritu de C, pero adaptado al desarrollo industrial de software.
Y por desarrollo industrial me refiero a bases de código de millones de líneas de código, miles de archivos y escrito en conjunto por decenas, cientos o miles de programadores.
El compilador de Go es rápido, algo muy relevante cuando lidias con un monorepo gigantesco.
La sintaxis es sencilla, y los conceptos básicos son fáciles de aprender. Si has programado en Python, C, JavaScript, aprendes Go muy rápido.
Si vienes de Java o C++, tienes que desaprender ciertas cosas y dejar atrás algunos conceptos para poder valorar Go.
El lenguaje está diseñado para imponer cierto estilo de programación, lo que sorprendentemente ayuda mucho a su legibilidad y la mantenibilidad del código.
El tooling es bastante completo, y es suficiente para la mayoría de las organizaciones en mi opinión. La biblioteca estándar también es muy completa y con las últimas versiones ha mejorado al grado que prácticamente no necesitas de frameworks adicionales para crear una app web usando Go.
Después de Google, puede que sea Uber donde más usamos Go internamente, en la mayoría de nuestros servicios y plataformas. Go es uno de los lenguajes modernos más importantes, y sospecho que va a tener un aumento de su adopción, pues ha alcanzado el grado de madurez para desplazar a Java y C++ en muchas organizaciones que piden a gritos una modernización de sus arquitecturas. Así que es un lenguaje relevante a aprender.
En los próximos artículos nos vamos a encaminar de la mano de Gopher, la mascota de Go, en el camino de este lenguaje, a ver si los ayudo a seguir desoxidándose.
Y si hay interés, puede que me anime a preparar un curso de programación avanzada usando Go, quién sabe…