- La simplicidad del lenguaje Go y sus características de compilación aumentan la estabilidad del código generado por agentes de IA y la eficiencia de su ejecución
- Gracias al tipado estático y la rápida velocidad de compilación, los agentes pueden validar errores de código rápidamente y realizar iteraciones de forma eficiente
- Las herramientas estandarizadas a nivel del lenguaje (
gofmt, pruebas, compilación) inducen a los agentes a generar código consistente
- La compilación de binarios multiplataforma está soportada de forma nativa, lo que permite que agentes en segundo plano verifiquen y ejecuten el mismo código de forma distribuida en distintos sistemas operativos
- Gracias a estas características, Go es considerado un lenguaje con un equilibrio entre productividad, simplicidad y rendimiento, y está emergiendo como una opción sólida para el desarrollo basado en agentes de IA
Ventajas de que Go sea un lenguaje compilado
- Los agentes generan grandes cantidades de código, y la mayor parte de ese código solo "parece plausible", por lo que verificar si realmente funciona es el reto principal
- Al usar un lenguaje compilado, el sistema de tipado fuerte y estático permite descartar en tiempo de compilación ciertas categorías de errores, como tipos incorrectos o uso inválido de argumentos
- Si la compilación tiene éxito, se obtiene la garantía de que es código sintácticamente correcto dentro del estándar del lenguaje
- En comparación con Rust, razones por las que Go resulta más adecuado para agentes:
- La sintaxis y los conceptos de Go son más simples que los de Rust
- El sistema de tipos de Go es menos sofisticado que el de Rust, por lo que el código generado queda más cerca del estilo idiomático y es más fácil de entender para las personas
- La velocidad de compilación de Go es más rápida que la de Rust, lo que acorta el ciclo de retroalimentación del agente
- Hay más código Go en los datos de entrenamiento que código Rust, por lo que los modelos generan mejor código en Go
La simplicidad de Go
- Si ya estás familiarizado con cualquier lenguaje de programación, puedes leer código Go y entender de inmediato qué hace, porque el lenguaje en sí es simple
- Incluso si un agente genera grandes cantidades de código Go, a los desarrolladores no les cuesta demasiado seguirlo
- Cuando un agente a veces toma decisiones de diseño extrañas y sigue avanzando en esa dirección, la simplicidad del lenguaje permite entender fácilmente hacia dónde va
- En 12 meses puede que leer código directamente sea menos común, así que la importancia de la legibilidad y la simplicidad podría bajar, pero seguir teniendo la opción de inspeccionarlo manualmente conserva su valor
El enfoque estandarizado de Go
- Go es un lenguaje opinionated con guías y herramientas claras, y existe una forma estándar de ejecutar pruebas, formatear código y compilar binarios
- La forma de manejar errores también divide opiniones, pero ofrece un patrón establecido, lo que facilita que varias personas y agentes trabajen juntos escribiendo código idiomático
- En contraste con JavaScript: cada proyecto de JS usa herramientas distintas, y hay criterios dispersos sobre el formateo, la publicación de paquetes y la importación de librerías, lo que resulta ineficiente para los agentes
- Gracias a la estandarización de Go, los modelos pueden generar código Go idiomático de forma consistente a partir de sus datos de entrenamiento
- Si le pides a un agente que formatee código JavaScript, intentará instalar y configurar nuevas herramientas; en Go basta con ejecutar
gofmt
- Es igual de estandarizado al escribir pruebas unitarias o compilar binarios
Compilación de binarios multiplataforma
- En Go, el soporte multiplataforma es un ciudadano de primera clase, especialmente ventajoso para software como herramientas CLI, donde no se puede controlar el entorno de ejecución
- Es posible ejecutar pruebas unitarias e integrales en varios entornos con el mismo comando para verificar que la funcionalidad existente no se haya roto
- Las ventajas se maximizan aún más al usar agentes en segundo plano:
- Hay una tendencia creciente a separarse del control directo sobre el entorno donde se compila y ejecuta el código, como cuando se activa Cursor mediante un mensaje de Slack o se transfiere una sesión local a un entorno remoto
- El código Go genera binarios de la misma forma en Linux, Windows y macOS, y todo el proceso de trabajo está estandarizado entre entornos, por lo que no hace falta preocuparse por si el proveedor del sandbox soporta ciertas dependencias de desarrollo
Calidad del código Go generado por agentes
- A inicios de 2026, la tasa de generación de código Go válido en un solo intento ronda el 95% (cifra basada en experiencia personal, no en datos oficiales)
- La sensación es que usar agentes con Go presenta menos dificultades que con Python
- Los modelos han aprendido suficientemente bien las librerías, patrones y mejores prácticas de Go, por lo que, con una dirección general, implementar funcionalidades se vuelve casi algo fluido
- El volumen total de datos de entrenamiento de Go puede ser menor que el de Python, pero en Python existen 20 formas distintas de hacer la misma tarea, así que, visto por librería específica, Go produce el efecto de una mayor densidad de datos de entrenamiento
- Esta ventaja podría desaparecer con el tiempo conforme mejoren los modelos y aumenten los datos de entrenamiento
Por qué el proyecto Bruin eligió Go
- Bruin es una herramienta ETL de código abierto, principalmente una CLI escrita en Go
- Aunque Python era dominante en el ecosistema de datos, las principales restricciones que llevaron a elegir Go fueron:
- Como herramienta de orquestación de datos, el manejo de concurrencia es clave
- Hace falta un ecosistema suficiente porque debe interactuar con muchos sistemas, como runtimes de lenguaje o APIs externas de plataformas de datos
- Como herramienta CLI, requiere rendimiento suficiente para usarse también como extensión de VS Code o backend de una UI local
- Se necesita un manejo de errores predecible para integrar distintos sistemas
- Como se ejecuta en la máquina del usuario, debe ser fácil soportar distintos sistemas operativos y arquitecturas
- Como factor subjetivo, también tenía que ser un lenguaje con el que los principales contribuidores disfrutaran trabajar, porque en un equipo pequeño la diversión y la energía son los recursos más escasos
- A pesar de la desventaja de contar con menos librerías de datos que Python, se tomó la decisión por la intuición de que las ventajas de Go en velocidad y experiencia de desarrollador (DX) ofrecerían más valor a largo plazo
Conclusión: Go en la era de los agentes
- Los lenguajes de programación están entrando en una era en la que los humanos ya no escriben código directamente
- Ahora se necesitan sistemas que ayuden a los agentes a escribir código de manera efectiva
- Go ofrece un entorno ideal para que los agentes de IA escriban y ejecuten código gracias a su equilibrio entre usabilidad, rendimiento y universalidad
- Los agentes pueden generar automáticamente con Go software de alto rendimiento que puede compilarse, probarse, formatearse y desplegarse en distintas máquinas
- No está claro si Go terminará siendo el lenguaje definitivo para los agentes o si aparecerá uno más adecuado, pero
actualmente el equipo ya está obteniendo resultados sólidos en productividad y calidad de software
3 comentarios
Para empezar, me gusta porque compila rápido.
El lenguaje Go realmente tiene un concepto muy claro, y creo que para quienes encajan bien con ese concepto definido, termina siendo una muy buena opción. Yo también empecé creando backends con un runtime de JS y luego me pasé a Go, y creo que puedo decir con confianza que, por este nivel, estoy satisfecho tanto con el rendimiento como con la productividad de desarrollo.
Comentarios en Hacker News
Llevo más de 9 meses haciendo trabajo de consultoría y sigo comprobando que Go es muy adecuado para la generación de código con LLM
Go ofrece un sistema de compilación consistente, formateador, tipado estático y concurrencia basada en CSP sin las partes peligrosas de C++
Durante más de 10 años no ha tenido versiones que rompan compatibilidad, y casi no ha habido cambios de framework
Cuando aconsejo a equipos en Sancho Studio adoptar un agentic coding workflow, Go produce resultados muy estables con Claude o Codex
En cambio, Python o TypeScript tienen demasiada variedad en frameworks y enfoques de tipos, así que es más difícil que un LLM genere salidas consistentes
De hecho, la razón por la que no me gustaba Go —sus límites de abstracción— termina siendo una ventaja para los LLM
El nuevo
go fixde Go 1.26 permite refactorización automática a nivel de AST y mantiene la base de código actualizadaAntes construí una PKI en Go para el proyecto Zoom E2E Whitepaper, y ahora que los LLM se encargan del boilerplate repetitivo, la simplicidad de Go realmente brilla
Java tiene más datos de entrenamiento y un sistema de tipos más potente, así que también ayuda a validar la salida del LLM
Prefiero entornos de bajo nivel, y me gusta la pila de abstracción superficial y la estructura predecible de Go
Al final, la simplicidad y consistencia les vienen bien tanto a los LLM como a desarrolladores como yo
Un lenguaje estandarizado como Go hace que el resultado sea más fácil de entender, pero Ruby o C++ también salen bastante bien
Lisp o Bash tienen tanta libertad que los resultados son muy irregulares
Meter a Python y TypeScript en la misma categoría no es preciso
Python confunde a los LLM por las rupturas entre versiones y la adopción lenta del tipado, pero TypeScript es mucho más consistente
Si se da la oportunidad, me gustaría ver un duelo de código en vivo Go vs TypeScript
En el desarrollo de agentes, creo que conviene mover la mayor cantidad posible de validación al tiempo de compilación
Go está bien, pero su sistema de tipos no es tan potente como el de otros lenguajes
Rust es muy útil porque, si pasas los errores del compilador, casi no quedan errores en tiempo de ejecución
Haskell probablemente sería aún mejor
Cuando el agente modifica el código fuente, también actualiza las pruebas
En otros lenguajes es fácil olvidarse de los tests
Estoy creando un lenguaje de juguete basado en tipos dependientes sobre Haskell, y su sintaxis simple hace que sea fácil de manejar para los LLM
Internamente funciona como Rust seguro/no seguro
Como no lo vamos a escribir nosotros directamente, no importa tanto si es un poco incómodo
Puedes combinarlo con TypeScript para hacer una SPA, con Tauri para una app multiplataforma, o agregar un sidecar en Python
También estoy experimentando con juegos en Bevy, y me gusta su estructura ECS
He podido juntar ventajas de varios lenguajes evitando sus desventajas
Durante varios días les pedí a Gemini, Claude Code y Codex: “diseñen el lenguaje que ustedes quieran”
El resultado fue un lenguaje estilo Forth con sistema de tipos fuerte, contratos, pruebas nativas, fuzz testing y un solucionador de restricciones basado en Z3
Implementé el intérprete en Elixir y lo publiqué como el proyecto Cairn
Un lenguaje hecho en unos 150 commits funcionó sin errores en tiempo de ejecución
Este experimento muestra la importancia del análisis en tiempo de compilación y de las herramientas de pruebas
No puede saber eso si esa información no está en sus datos de entrenamiento
Desarrollar el tooling para un lenguaje así realmente suena muy divertido
Yo sigo pensando que OCaml es la mejor opción
Tiene muchas ventajas: sistema de tipos potente (incluyendo GADT), enfoque en funciones puras, compilaciones rápidas y soporte para targets WASM/JS
El hecho de que el código se evalúe en el orden en que aparece en el archivo y obligue a manejar explícitamente las dependencias circulares también lo hace estable
Y sobre todo, es un lenguaje agradable de usar para humanos
Antes F# iba por delante en eso
Aunque el agente meta un error por accidente, detecta la mayoría
Entre PHP, Go, JavaScript y Python, Go es mejor, pero eso no demuestra mucho que sea “el mejor lenguaje”
La simplicidad de Go y su sistema de tipos suficientemente bueno también son atractivos
Vale la pena ver la discusión anterior de "Why Elixir is the best language for AI"
La introspección en tiempo de ejecución de BEAM es un punto interesante en entornos de agentes
Ese texto critica especialmente a Go
Go tiene la herramienta govulncheck para analizar de forma estática vulnerabilidades en código y binarios
Está profundamente integrada al ecosistema Go, como se muestra en el tutorial oficial, y tiene un nivel de integración más alto que en otros lenguajes
Dudo que govulncheck analice vulnerabilidades reales en el código
Su ventaja es que rastrea incluso la ruta de llamadas, pero no es una herramienta de análisis estático real como Coverity
En Go, algo más cercano sería un paquete de herramientas comunitarias como
golangci-lintReescribí proyectos en varios lenguajes, y Python fue el que mejor le funcionó a Claude
El código era pequeño y fácil de entender, así que la velocidad de trabajo fue mucho mayor
Probé Go, Kotlin y JavaScript, pero al final me quedé con Python
passGo no es una mala opción. Tiene muchos datos de entrenamiento y APIs estables, así que es fácil para los LLM trabajar con él
Pero creo que Rust es mejor gracias a su sistema de tipos
Eso sí, Rust cambia rápido y a los LLM les cuesta seguir APIs recientes
Haskell es el más favorable para los LLM por su ritmo lento de cambios y su código seguro
Los scripts en Python también suelen ser igual de fáciles de leer
Desde la perspectiva de alguien que trabaja todos los días con agentes de programación con IA, el “mejor lenguaje” depende del objetivo del agente
La simplicidad y previsibilidad de Go vienen bien para tareas generales, pero TypeScript destaca al integrarse con entornos web
Python sigue siendo inigualable en datos/ML
La clave no es elegir el lenguaje que el LLM maneja mejor, sino el lenguaje adecuado para el dominio del agente