typestar

Lenguajes

Go

Un lenguaje deliberadamente pequeño, diseñado alrededor de cómo fallan de verdad los equipos grandes.

Primera versión
2009 (1.0 in 2012)
Creado por
Robert Griesemer, Rob Pike and Ken Thompson, at Google
Tipado
Estático, fuerte y con interfaces de tipado estructural
Extensiones de archivo
.go

Para qué sirve

Docker, Kubernetes, Terraform y Prometheus están todos escritos en Go. Ese es más o menos todo el argumento de venta: infraestructura de red que tiene que construirse rápido, distribuirse como un solo archivo y ser entendida por quien la herede.

Lo que hace que Go sea Go es lo que quedó fuera. Sin herencia. Sin excepciones. Sin sobrecarga de operadores y, durante los primeros trece años, sin genéricos. El razonamiento fue organizacional, no estético. Un lenguaje con menos formas de decir algo produce código que se lee igual sin importar quién lo escribió, y gofmt zanja la discusión sobre el formato antes de que alguien pueda empezarla. A quienes aman los lenguajes expresivos, Go suele parecerles tedioso. A quienes mantienen el servicio de alguien más, suele parecerles un alivio.

Dos cosas hacen casi toda la venta. La compilación es tan rápida que se siente interactiva, y lo que sale es un solo binario estático sin runtime que instalar. Luego las goroutines y los canales hacen la concurrencia tan barata que la usas sin pensarlo. Esa última parte es la razón por la que se adueñó de la sala de servidores.

De dónde viene

Go nació en Google en 2007, de la frustración con C++ a gran escala: compilaciones lentas, dependencias enredadas, un lenguaje que nadie podía tener entero en la cabeza. Griesemer, Pike y Thompson lo anunciaron en noviembre de 2009. Los dos últimos venían de Bell Labs, con Unix y Plan 9 a sus espaldas.

Go 1.0 salió en 2012 con una promesa de compatibilidad que en buena medida se ha cumplido: el código escrito contra Go 1 todavía compila. Suena aburrido, y lo es, y también es una parte sustancial de por qué las empresas de infraestructura lo adoptaron. La gestión de dependencias tardó más en asentarse. GOPATH cedió el paso a los módulos en 2018 tras varios arranques en falso.

Los genéricos aterrizaron en Go 1.18 en 2022, tras más de una década de propuestas rechazadas por agregar complejidad que no se pagaba sola. El resultado es contenido y el estilo alrededor apenas se ha movido. Los diseñadores parecen satisfechos con eso.

Cómo se siente teclearlo

Go se teclea rápido y premia la precisión por encima de la velocidad. Nombres cortos, sin puntos y comas, las tabulaciones de gofmt. Pero la convención de manejo de errores implica que vas a escribir if err != nil { return err } más veces que cualquier otra línea en tu vida, y := es una secuencia de dos teclas que tus dedos deberían aprender como un solo movimiento.

Practica Go

128 pasos en 6 tours, desde lo básico hasta programas completos.

Los tours

Documentación oficial

Otros lenguajes