# Go

> Un lenguaje de programación simple y rápido de Google, pensado para servidores y la nube.

- Nivel: Intermedio
- Temas: Software
- URL: https://tidbit.legios.com.ar/es/go/
- En inglés: [Go](https://tidbit.legios.com.ar/go/)

**Go** (muchas veces llamado **Golang**, que es más fácil de buscar) es un lenguaje de programación creado en Google por Robert Griesemer, Rob Pike y Ken Thompson y liberado como código abierto en 2009. Estaban cansados de bases de código gigantes que tardaban una eternidad en compilar y costaba leer, así que diseñaron un lenguaje chico, con pocas funciones, formato estricto (`gofmt` hace que el código de todos se vea igual) y un compilador que termina en segundos.

Un programa en Go se compila en un único archivo, un **binario**, que corre directo en la máquina sin intérprete ni bibliotecas extra para instalar. Eso lo hace fácil de distribuir: copiás un archivo a un servidor, o a una imagen de Docker chiquita, y lo corrés. Su otra marca registrada son las **goroutines**: tareas muy livianas que corren al mismo tiempo y se comunican por **canales** (channels), lo que hace natural escribir un servidor que atiende decenas de miles de conexiones a la vez.

Esa combinación convirtió a Go en el lenguaje de la infraestructura en la nube. Docker, Kubernetes, Terraform y un montón de herramientas de línea de comandos están escritas en Go, y empresas como Uber, Cloudflare y Mercado Libre lo usan para sus servicios de backend. Cambia algo de expresividad por simpleza: menos trucos ingeniosos y más código que alguien recién llegado al equipo puede leer el primer día.

## Una analogía

Una cocina profesional bien ordenada con una carta corta y fija. Hay menos platos que en un restaurante de lujo, pero cada cocinero sabe dónde está todo, los pedidos salen rápido y muchos pueden trabajar codo a codo sin chocarse.

## Para quedarse

- Creado en Google, de código abierto desde 2009.
- Compila rápido a un único binario autocontenido.
- Las goroutines y los canales simplifican los programas concurrentes.
- Docker, Kubernetes y Terraform están escritos en Go.

## Para seguir leyendo

- [El lenguaje de programación Go (go.dev, en inglés)](https://go.dev/)
- [Un tour de Go (en inglés)](https://go.dev/tour/)
- [Go (lenguaje de programación) en Wikipedia](https://es.wikipedia.org/wiki/Go_(lenguaje_de_programación))

## Términos relacionados

- [Lenguaje de programación](https://tidbit.legios.com.ar/es/programming-language/): Un idioma escrito y preciso que usamos para darle instrucciones a una computadora.
- [Google](https://tidbit.legios.com.ar/es/google/): La empresa del buscador, que regala casi todo y gana plata con publicidad.
- [Código abierto](https://tidbit.legios.com.ar/es/open-source/): Software cuyo código cualquiera puede leer, usar, cambiar y compartir.
- [Compilador](https://tidbit.legios.com.ar/es/compiler/): Un programa que traduce código fuente a instrucciones que la computadora corre directo.
- [Servidor](https://tidbit.legios.com.ar/es/server/): Una computadora cuyo trabajo es responder pedidos de otras computadoras, todo el día.
- [Docker](https://tidbit.legios.com.ar/es/docker/): La herramienta que popularizó los contenedores: empaquetás una vez, corre en todos lados.
- [Computación en la nube](https://tidbit.legios.com.ar/es/cloud-computing/): Alquilar computadoras por internet en vez de comprar las tuyas.
- [Kubernetes](https://tidbit.legios.com.ar/es/kubernetes/): El sistema que corre y cuida contenedores en muchas máquinas a la vez.
