23 puntos por GN⁺ 2026-03-04 | 3 comentarios | Compartir por WhatsApp
  • 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

 
mammal 2026-03-05

Para empezar, me gusta porque compila rápido.

 
tsboard 2026-03-05

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.

 
GN⁺ 2026-03-04
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 fix de Go 1.26 permite refactorización automática a nivel de AST y mantiene la base de código actualizada
    Antes 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

    • Creo que la mayoría de estas razones también aplican a Java
      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
    • Totalmente de acuerdo. Llevo más de 20 años usando C++, pero creo que Golang es el mejor lenguaje para la mayoría de los flujos de trabajo que no sean control en tiempo real o sistemas embebidos
    • Me identifiqué muchísimo con la idea de que “los límites de abstracción de Go son una ventaja para los 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
    • Viendo la calidad de código reciente de los LLM, una variable más importante que el lenguaje es la complejidad de la definición del problema
      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
    • Puede que tengas sesgo a favor de Go, pero yo tengo más experiencia con TypeScript y lo veo distinto
      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

    • Una de las razones por las que Rust es bueno es que el código de pruebas está en el mismo archivo
      Cuando el agente modifica el código fuente, también actualiza las pruebas
      En otros lenguajes es fácil olvidarse de los tests
    • Haskell también es excelente, pero los LLM tienden a apilar demasiadas abstracciones
      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
    • Mi voto va para Rust. Creo que tiene sentido una estrategia de asumir la complejidad al principio para reducir el costo operativo
      Como no lo vamos a escribir nosotros directamente, no importa tanto si es un poco incómodo
    • A mí también me gusta usar Rust, y su interoperabilidad entre lenguajes es excelente
      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
    • Me pregunto si alguien ha experimentado con lenguajes de alto nivel como Haskell o Prolog junto con los LLM de 2025
  • 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

    • Es un proyecto interesante, pero creo que asumir que un LLM puede diseñar un lenguaje ventajoso para sí mismo es una premisa equivocada
      No puede saber eso si esa información no está en sus datos de entrenamiento
    • Me sorprendió porque casi coincide con mi lenguaje ideal
      Desarrollar el tooling para un lenguaje así realmente suena muy divertido
    • Me pregunto si intentaste hacer que compilara directamente a bytecode de BEAM
    • Impresionante. Desde la perspectiva de un principiante, me pregunto si también es más fácil de aprender que otros lenguajes de la familia Forth
  • 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

    • Me pregunto cómo están hoy el multicore y el procesamiento asíncrono
      Antes F# iba por delante en eso
    • El compilador de OCaml tiene una capacidad extraordinaria para detectar bugs
      Aunque el agente meta un error por accidente, detecta la mayoría
    • Recomiendo OCaml en lugar de Go. Gracias a su sistema de tipos expresivo, permite abstracciones que en Go son imposibles
    • Si es por eso, quizá sería mejor usar F#
  • Entre PHP, Go, JavaScript y Python, Go es mejor, pero eso no demuestra mucho que sea “el mejor lenguaje”

    • Yo prefiero Rust. El ciclo de retroalimentación del compilador es excelente, aunque la sintaxis es verbosa
      La simplicidad de Go y su sistema de tipos suficientemente bueno también son atractivos
    • Es importante que Go sea el único lenguaje compilado entre los que mencionaste
  • 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

  • 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

    • No tengo claro en qué se diferencia del cargo-audit de Rust
      Dudo que govulncheck analice vulnerabilidades reales en el código
    • govulncheck no busca vulnerabilidades en el código en sí, sino uso vulnerable de librerías dependientes
      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-lint
    • Aun así, el nivel de integración y la facilidad de uso de govulncheck son superiores a los de otros lenguajes, y eso ayuda mucho a mantener proyectos grandes
  • Reescribí 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

    • Me pregunto si en el código Python manejó bien las excepciones y las sentencias pass
  • Go 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

    • Supongo que el código generado en Haskell sería más corto y con mejor legibilidad que en Go
      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