que-es-go

Qué es Go

  • 4 min

Go es un lenguaje compilado, tipado y sencillo para construir software eficiente, especialmente útil en servicios, herramientas de consola y sistemas concurrentes.

Arrancamos un nuevo curso, y esta vez le toca el turno a uno de los lenguajes que más ha crecido en la última década (o Golang, como se le suele llamar para buscarlo en Google).

Si vienes de lenguajes como C++ o C#, te vas a sentir como en casa pero con una sensación de ligereza increíble.

Y si vienes de Python o JavaScript, vas a descubrir la potencia del tipado estático y la compilación nativa sin sufrir la complejidad de otros lenguajes de bajo nivel.

En esta primera entrada vamos a quedarnos en lo importante: qué es Go, de dónde viene y por qué merece la pena aprenderlo. La instalación y el primer programa los dejamos para la siguiente, que si no esta intro se nos va de las manos.

¿Qué es Go?

Go es un lenguaje de programación de código abierto, compilado y de tipado estático, que fue creado en Google en 2007 por tres auténticos gigantes de la informática: Robert Griesemer, Rob Pike y Ken Thompson (sí, el mismo Ken Thompson que diseñó el sistema operativo Unix y el lenguaje B).

La motivación principal para crear Go fue la frustración. En Google tenían un problema enorme: el código en C++ era muy rápido de ejecutar, pero lento de compilar y complejo de mantener. Por otro lado, lenguajes como Python eran fáciles de escribir, pero lentos en ejecución.

Así que decidieron crear un lenguaje que tuviera lo mejor de ambos mundos:

  1. La eficiencia y seguridad de un lenguaje compilado y tipado (como C++).
  2. La facilidad de escritura y legibilidad de un lenguaje dinámico (como Python).

El resultado fue Go: un lenguaje simple, moderno y diseñado específicamente para la ingeniería de software a gran escala, la nube y los sistemas distribuidos.

¿Por qué usar Go?

Vale, hay muchos lenguajes ahí fuera. ¿Por qué deberíamos invertir tiempo en aprender Go? Aquí van las razones por las que nosotros creemos que merece la pena:

Go es famoso por ser un lenguaje pequeño. Tiene muy pocas palabras reservadas (apenas 25). No tiene clases, no tiene herencia compleja, no tiene sobrecarga de operadores.

Esto, que al principio puede parecer una limitación, es su mayor virtud. “Menos es más”. El código en Go es fácil de leer y entender, incluso si no lo has escrito tú.

Go es un lenguaje compilado. Esto significa que el código fuente se traduce directamente a código máquina. No hay máquina virtual (como en Java) ni intérprete (como en Python).

El resultado son binarios ejecutables que son increíblemente rápidos y ligeros.

Quizás el punto más fuerte de Go. Fue diseñado en la era de los procesadores multinúcleo.

Mientras que en otros lenguajes crear hilos (threads) es costoso y complejo, Go introduce las Goroutines. Son hilos muy ligeros gestionados por el propio runtime de Go. Puedes lanzar miles de goroutines en un solo equipo sin despeinarte.

Go hace que la programación concurrente sea, si no fácil, al menos mucho más accesible y menos propensa a errores que en otros lenguajes.

La Librería Estándar de Go es una maravilla. Tienes casi todo lo que necesitas “de serie”: un servidor HTTP de producción, manejo de JSON, criptografía, herramientas de testeo… A menudo no necesitas instalar librerías externas para hacer cosas complejas.

Go tiene una mascota muy famosa llamada Gopher. Es posible que veas a este bichillo azul por todas partes mientras aprendes el lenguaje. Es parte de la cultura de Go.

Con esto ya tenemos el mapa mental. Go es pequeño, compilado, con una librería estándar potente y una forma muy particular de tratar la concurrencia.

En el siguiente artículo sí que nos manchamos las manos: instalaremos Go, configuraremos VS Code y haremos el primer Hola Mundo.