Golang: por qué provoca amor y odio

Golang: por qué provoca amor y odio

¡Hola a todos!

En el lejano 2007 los programadores de Google comenzaron a preguntarse qué lenguaje de programación era el más adecuado para crear sistemas potentes y fiables. Necesitaban gestionar millones de líneas de código que procesaran y transmitieran datos por todo el mundo. Los lenguajes existentes no daban totalmente la talla para esas tareas: habían sido diseñados para controlar ordenadores de sobremesa o juegos, no para operaciones de red a gran escala. Así nació la idea de crear un nuevo lenguaje, conocido como Golang.


Historia de la creación de Golang

Golang, o Go, fue creado para resolver problemas concretos: gestionar de manera eficiente la entrada y salida de datos, y garantizar la seguridad y la fiabilidad del código. Las versiones públicas del lenguaje empezaron a aparecer en 2009, y la primera versión 1.0 se publicó en 2012. A día de hoy Google continúa desarrollando activamente el lenguaje, y la última versión estable en el momento de redactar el artículo es la 1.22.5.

Golang ha recibido amplio reconocimiento tanto dentro de Google como fuera. El lenguaje alcanzó el top 10 del índice Tiobe, situándose en el octavo puesto. Pero, como cualquier gran invento, Golang provoca tanto admiración como crítica. Algunas características del lenguaje inspiran cariño, mientras que otros desarrolladores las odian.

8 razones por las que los desarrolladores aman y odian Go

1. Go es fácil de aprender

Los creadores de Go diseñaron el lenguaje para que fuera fácil de aprender, renunciando a muchas funciones e ideas complejas. Apostaron por el minimalismo, centrados en lo que realmente hacía falta para las tareas en Google.

Ventajas: Un lenguaje sencillo es más fácil de dominar para nuevos programadores y miembros del equipo. Menos constructos que aprender significa que programadores con experiencia pueden aprenderlo en un día. Los proyectos se pueden poner en marcha más rápido, ya que se puede formar con rapidez a desarrolladores veteranos en el nuevo lenguaje. El código suele ser más fácil de leer por la ausencia de estructuras extrañas o arcaicas.

Desventajas: La simplicidad no siempre es buena: es simplemente la ausencia de determinadas funciones. Algunos programadores sienten que programar en Go es como trabajar con una mano atada a la espalda. Al lenguaje le faltan trucos y características que ofrecen otros lenguajes, y eso supone un coste elevado.

2. Go no hace favoritismos

Go está diseñado como un lenguaje compacto que hace lo necesario y evita funciones y adornos innecesarios.

Ventajas: Muchos desarrolladores elogian la simplicidad de Go. No exige aprender o mantener decenas de funciones para ser eficaz. Al leer código, los programadores no se encuentran con construcciones desconocidas.

Desventajas: Cada quien tiene sus trucos favoritos, pero es poco probable que Go los ofrezca. A veces los desarrolladores se quejan de que podrían hacer lo mismo en COBOL o Java con una sola línea de código.

3. Sintaxis basada en C

Los creadores de Go tienen raíces profundas en el mundo Unix, y eso se nota. La sintaxis resulta familiar a quien haya usado C o lenguajes que tomaron de C, como Java o C#. Las llaves y la tipificación serán reconocibles para esa audiencia.

Ventajas: Los programadores habituados al estilo C entienden Go de forma intuitiva. Pueden dominar la sintaxis rápidamente y dedicar tiempo a aprender cómo Go mejora algunos aspectos molestos de C o Java.

Desventajas: Python se diseñó como antítesis de C. No tiene llaves para delimitar bloques y su tipado es intencionalmente dinámico. Quienes prefieren el enfoque de Python encontrarán muchas razones para no gustar de Go, considerándolo un paso atrás.

4. Demasiadas reglas

Los creadores de Go no solo definieron la sintaxis, sino también gran parte del estilo y los patrones de uso del lenguaje. Publicaron una biblioteca estándar de formato para evitar disputas sobre la forma correcta de indentar el código Go. Elaboraron listas de idioms y animan a los programadores a usarlos. También prohibieron ciertas prácticas que en otros lenguajes solo se desaconsejan, por ejemplo, variables sin usar o dependencias cíclicas.

Ventajas: Las normas idiomáticas estrictas de Go facilitan la comprensión del código. Los equipos discutirán menos sobre estilo, ya que hay menos opciones y menos motivos para crear un estilo propio.

Дesventajas: Estas reglas y convenciones adicionales pueden parecer restrictivas. ¿Por qué una variable sin usar es un problema? Si el compilador puede detectarla, podría eliminarla sin necesidad de la intervención del programador.

5. Tratamiento explícito de errores

Muchos programas modernos incluyen rutas para el tratamiento de errores cuando estos ocurren. Go ofrece un enfoque único, que anima a los programadores a escribir dos caminos en una misma función: el normal y el de errores. Los programadores de Go suelen decir que "los errores son valores normales", ya que forman parte del mismo código.

Ventajas: El enfoque de Go reconoce la existencia de errores y anima a planificar su manejo. Esto contribuye a crear software más robusto.

Desventajas: El manejo explícito de errores hace que las funciones en Go sean más voluminosas y difíciles de seguir. A menudo cada función en una larga cadena debe incluir código similar para tratar errores, lo que puede complicar el programa.

6. Biblioteca estándar

La biblioteca estándar de Go incluye soporte para muchas tareas comunes en la programación web orientada a microservicios. Desde el manejo a bajo nivel de paquetes de red hasta el soporte de HTTPS y el decodificado de JSON: todo eso forma parte de la biblioteca estándar.

Ventajas: Cuando muchas funciones estándar se manejan desde la biblioteca por defecto, el código resulta más fácil de leer, porque nadie escribe versiones propias ni se discute sobre qué biblioteca es mejor.

Desventajas: La competencia indica demanda e innovación. La existencia de muchas bibliotecas para una misma tarea en otros lenguajes refleja un interés profundo y una cultura rica.

7. Tamaño de los archivos ejecutables

Uno de los objetivos del equipo de Go es simplificar el despliegue de programas en Go, empaquetándolo todo en un único ejecutable. Todo está listo para ejecutarse porque las bibliotecas necesarias se incluyen en la compilación estándar.

Ventajas: El espacio en disco es barato. Desplegar código en entornos inusuales puede ser un caos si hay distintas versiones de bibliotecas. Los desarrolladores de Go ahorran tiempo al crear un solo ejecutable.

Desventajas: ¿Cuántas copias de las bibliotecas Go tengo en disco? Si tengo 100 programas, son 100 copias. Llega un momento en que la eficiencia importa. Sí, el espacio en disco es barato, pero el ancho de banda de memoria y el caché siguen siendo importantes para el rendimiento.

8. El gran hermano Google

Golang fue desarrollado en Google, y esa gran empresa sigue siendo uno de sus principales patrocinadores, aportando el compilador y la mayor parte de las herramientas. Existe cierto apoyo fuera de Google, por ejemplo GopherJS, que convierte Go a JavaScript. Pero, en general, la mayor parte del esfuerzo de desarrollo de Go procede desde dentro de Google.

Ventajas: Hoy en día, gran parte del trabajo consiste en escribir código para sistemas servidores y clientes, que forman una parte importante de la carga de Google. Si Go funciona para Google, también sirve a quienes trabajan de forma similar. Si los ingenieros de Google crearon algo que les gusta, probablemente también guste a quienes realizan proyectos parecidos.

Desventajas: No se trata de que la gente no quiera a Google, sino de que los programadores desconfían de autoridades centralizadas. Problemas como la dependencia del proveedor y la falta de control son serios para quienes gestionan una pila tecnológica. Aun así, las generosidades de Google mantienen a los desarrolladores alerta, especialmente cuando otros lenguajes cuentan con comunidades amplias y de código abierto.

Conclusión

Golang es un lenguaje que suscita sentimientos encontrados. Es simple y potente, pero al mismo tiempo limitado en capacidades. Golang atrae por su filosofía minimalista, pero genera descontento por la ausencia de algunas funciones habituales. Cada programador encuentra en Go algo propio, y este lenguaje sigue ganando nuevos seguidores pese a las críticas. Como se dice, "sobre gustos no hay nada escrito". Por eso Go seguirá siendo un actor importante en el panorama de los lenguajes de programación durante mucho tiempo.

Alt text