Developer Experience
7
min de lectura
9 de julio de 2020

Pero ¿por qué Go?

Morvana Bonin
Ingeniero de Backend Software con una fuerte pasión por los patrones de diseño, el código limpio y la arquitectura software .
Más sobre el autor

* artículo elaborado en colaboración con Andreia Camila da Silva

El post anterior introdujo una noción del lenguaje y de dónde empezar sus estudios en Go. En este post, te daremos las razones para usar el Go.

Antes de enumerar las razones, echemos un vistazo a algunos resultados de la edición 2020 de la Developer Survey, realizada por Stack Overflow. Go está en el puesto 12 del ranking de tecnologías más populares.

Sin embargo, está entre las 5 lenguajes más queridas del año.

La encuesta muestra un contraste muy interesante. Parece que Go aún no ha ganado una amplia cuota de mercado. Al mismo tiempo, está entre los lenguajes más queridos y deseados por los desarrolladores. Este artículo pretende enumerar algunas características interesantes de lo que puede llegar a ser su lenguaje favorito. So, hey ho, let’s Go!

  • Fácil de aprender

Go tiene una sintaxis sencilla y reducida, con pocas palabras clave para memorizar, lo que permite un rápido aprendizaje. Incluso para los desarrolladores acostumbrados a otros lenguajes como Java y C, Go presenta una pequeña curva de aprendizaje. Es el tipo de lenguaje que hace que el programador lea un libro o la propia documentación y se pregunte: "¿Pero eso es todo?"

  • Lenguaje compilado

Es común escuchar que el Go es un lenguaje de programación rápido. Una de las razones es que el código desarrollado en Go es traducido por el compilador en código nativo de máquina, generando binarios considerablemente pequeños. El compilador Go es muy eficaz para detectar fallos de precompilación e incluso evitar posibles "desperdicios" como variables o importaciones no utilizadas. No hay necesidad de usar VMs.

  • Multiplataforma o cross-compile

Es posible generar ejecutables de código Go para varias plataformas a través del comando $go build,, informando al sistema operativo y la arquitectura de destino a través de las variables de entorno GOOS y GOARCH. De esta manera, el código fuente permanecerá intacto. También puedes cross-compile tu aplicación en un container docker, véalo aquí.

  • Garbage Collector

Garbage Collector recuperará la memoria ocupada por los objetos que ya no pueden ser referenciados en el ámbito de la ejecución. Se procesa simultáneamente, durante la ejecución del programa Go.

  • Simultaneidad

Go tiene un soporte muy eficiente y ligero para la ejecución simultánea de códigos a través de goroutines y canales. Los goroutines son análogos a threads, pero a un costo considerablemente menor. Para crear un goroutino sólo hay que añadir la palabra clave go antes de llamar a la función deseada (o a través de funciones anónimas). Esto hará que se ejecute como de costumbre, pero el programa no esperará una respuesta antes de proceder a la siguiente instrucción. Los canales, por otro lado, hacen posible la comunicación entre los goroutines, permitiendo el intercambio de valores entre ellos a través de las operaciones de send y receive.

  • Una opción interesante para la nube

Como se mencionó en el post anterior de Morvana Bonin, varias tecnologías de nubes tienen su núcleo desarrollado en Go. Esto es algo que nos lleva a creer que el lenguaje no sólo es adecuado para el desarrollo para Cloud, sino que también las compone. En esta entrevista, Steve Francia, Product and Strategy Leader del lenguaje Go, comenta que "Sería razonable decir que la nube moderna está escrita en Go". Otra ventaja es el Go Cloud Development Kit, que proporciona APIs que ayudan al desarrollo de los principales proveedores de nubes.

Un breve resumen de por qué usar GO

Go tiene una atractiva gama de características, que también se pueden encontrar en otros idiomas, pero no siempre se combinan. Por otra parte, al valorar la simplicidad, no tiene ciertas comodidades como exceptions, generics, sobrecarga de funciones, herencia o anotaciones. En el libro Go In Action, el autor menciona que "Go no sólo se define por lo que incluye, sino por lo que no incluye". Es con este pensamiento que llegamos al final de este artículo.

Referencias y enlaces útiles

¡Gracias por leer!