- Die Einfachheit der Sprache Go und ihre Kompilierungseigenschaften erhöhen die Stabilität des von AI-Agenten erzeugten Codes und die Effizienz bei der Ausführung
- Dank statischer Typisierung und hoher Kompilierungsgeschwindigkeit können Agenten Codefehler schnell prüfen und wiederholte Aufgaben effizient ausführen
- Standardisierte Werkzeuge auf Sprachebene (
gofmt, Tests, Builds) fördern eine konsistente Codegenerierung durch Agenten
- Cross-Platform-Binary-Builds werden standardmäßig unterstützt, sodass Hintergrund-Agenten denselben Code auf verschiedenen Betriebssystemen verteilt prüfen und ausführen können
- Aufgrund dieser Eigenschaften gilt Go als Sprache mit ausgewogenem Verhältnis aus Produktivität, Einfachheit und Performance und entwickelt sich zu einer starken Option für AI-agentenbasierte Entwicklung
Vorteile von Go als kompilierte Sprache
- Agenten erzeugen große Mengen an Code, und dieser Code ist meist nur „plausibel aussehend“, daher ist die Prüfung, ob er tatsächlich funktioniert, die zentrale Herausforderung
- Mit einer kompilierten Sprache lassen sich durch ein starkes, statisches Typsystem bestimmte Fehlerklassen wie falsche Typen oder fehlerhafte Argumentverwendung bereits beim Kompilieren ausschließen
- Wenn die Kompilierung erfolgreich ist, hat man zumindest die Garantie, dass es sich innerhalb des Sprachstandards um syntaktisch korrekten Code handelt
- Warum Go im Vergleich zu Rust besser für Agenten geeignet ist:
- Die Syntax und Konzepte von Go sind einfacher als die von Rust
- Das Typsystem von Go ist weniger ausgefeilt als das von Rust, wodurch generierter Code näher an idiomatischen Schreibweisen bleibt und für Menschen leichter verständlich ist
- Die Kompilierung von Go ist schneller als bei Rust, wodurch sich die Feedback-Schleife für Agenten verkürzt
- Go-Code ist im Trainingsmaterial häufiger vertreten als Rust-Code, sodass Modelle besseren Go-Code erzeugen
Die Einfachheit von Go
- Wer mit irgendeiner Programmiersprache vertraut ist, kann Go-Code lesen und sein Verhalten sofort erfassen, so einfach ist die Sprache selbst
- Selbst wenn Agenten große Mengen an Go-Code erzeugen, haben Entwickler wenig Mühe, dem Code zu folgen
- Wenn Agenten mitunter seltsame Designentscheidungen treffen und diese Richtung weiterverfolgen, lässt sich dank der Einfachheit der Sprache leicht erkennen, wohin der Agent steuert
- In 12 Monaten könnte es sein, dass man Code seltener direkt liest und die Bedeutung von Lesbarkeit und Einfachheit sinkt; die Möglichkeit, den Code bei Bedarf selbst zu prüfen, bleibt jedoch weiterhin wertvoll
Der standardisierte Ansatz von Go
- Go ist eine stark meinungsgeprägte (opinionated) Sprache mit klaren Richtlinien und Werkzeugen; es gibt standardisierte Wege zum Ausführen von Tests, zum Formatieren von Code und zum Erstellen von Binärdateien
- Auch die Art der Fehlerbehandlung ist umstritten, bietet aber ein etabliertes Muster, das idiomatischen Code fördert und die Zusammenarbeit von Menschen und Agenten erleichtert
- Im Vergleich zu JavaScript: In JS-Projekten unterscheiden sich die verwendeten Werkzeuge oft, und die Meinungen zu Code-Formatierung, Paketveröffentlichung und Bibliotheksimporten sind zersplittert, was für Agenten ineffizient ist
- Dank der Standardisierung in Go können Modelle auf Basis ihres Trainingsmaterials konsistent idiomatischen Go-Code erzeugen
- Wenn man einen Agenten bittet, JS-Code zu formatieren, versucht er oft erst neue Werkzeuge zu installieren und zu konfigurieren; in Go reicht es, einfach
gofmt auszuführen
- Auch das Schreiben von Unit-Tests und das Erstellen von Binärdateien ist in gleicher Weise standardisiert
Cross-Platform-Binary-Builds
- In Go ist Cross-Platform-Support ein First-Class-Citizen und besonders vorteilhaft für Software wie CLI-Tools, bei denen die Ausführungsumgebung nicht kontrolliert werden kann
- Unit-Tests und Integrationstests lassen sich in mehreren Umgebungen mit demselben Befehl ausführen, um zu prüfen, ob bestehende Funktionen nicht beschädigt wurden
- Der Nutzen wird bei Hintergrund-Agenten noch größer:
- Es gibt einen Trend, sich zunehmend von der direkten Kontrolle über Build- und Laufzeitumgebungen zu lösen, etwa indem man Cursor per Slack-Nachricht auslöst oder lokale Sessions remote übergibt
- Go-Code erzeugt auf Linux, Windows und macOS auf dieselbe Weise Binärdateien, und der gesamte Arbeitsprozess ist zwischen den Umgebungen standardisiert, sodass man sich nicht darum kümmern muss, ob ein Sandbox-Anbieter bestimmte Entwicklungsabhängigkeiten unterstützt
Qualität des von Agenten erzeugten Go-Codes
- Anfang 2026 liegt die Quote, mit der Agenten auf Anhieb gültigen Go-Code erzeugen, bei etwa 95 % (basierend auf persönlicher Erfahrung, keine offiziellen Daten)
- Im Vergleich zu Python fühlt sich der Einsatz von Agenten mit Go weniger schwierig an
- Modelle haben Bibliotheken, Muster und Best Practices von Go gut gelernt, sodass die Implementierung von Funktionen fast mühelos wird, wenn man nur die Richtung vorgibt
- Die Gesamtmenge an Go-Trainingsdaten mag geringer sein als bei Python, aber in Python gibt es für dieselbe Aufgabe 20 verschiedene Herangehensweisen, weshalb die Trainingsdatendichte pro konkreter Bibliothek in Go effektiv höher sein kann
- Mit besseren Modellen und mehr Trainingsdaten könnte dieser Vorteil im Laufe der Zeit verschwinden
Warum im Bruin-Projekt Go gewählt wurde
- Bruin ist ein Open-Source-ETL-Tool und hauptsächlich ein in Go geschriebenes CLI-Tool
- Obwohl Python im Datenökosystem dominierte, waren die wichtigsten Rahmenbedingungen für die Wahl von Go:
- Als Datenorchestrierungs-Tool ist Concurrency zentral
- Wegen der Interaktion mit vielen Systemen wie Sprach-Runtimes oder externen APIs von Datenplattformen wird ein ausreichend großes Ökosystem benötigt
- Als CLI-Tool ist ausreichende Performance erforderlich, um auch als VS-Code-Erweiterung oder Backend für lokale UIs zu dienen
- Für die Integration vieler Systeme ist vorhersehbare Fehlerbehandlung notwendig
- Da es auf den Rechnern der Nutzer läuft, muss die Unterstützung verschiedener Betriebssysteme und Architekturen einfach sein
- Als subjektiver Faktor musste es außerdem eine Sprache sein, mit der die Hauptbeitragenden gern arbeiten, denn in kleinen Teams sind Freude und Energie die knappsten Ressourcen
- Trotz des Nachteils, dass im Vergleich zu Python bestimmte Datenbibliotheken fehlen, fiel die Entscheidung aus der Überzeugung, dass die Vorteile von Go bei Geschwindigkeit und Developer Experience (DX) langfristig mehr Wert liefern würden
Fazit: Go im Zeitalter der Agenten
- Programmiersprachen bewegen sich in ein Zeitalter, in dem Menschen Code nicht mehr direkt schreiben
- Nun werden Systeme benötigt, die Agenten dabei unterstützen, effektiv Code zu schreiben
- Go bietet dank seines Gleichgewichts aus Benutzerfreundlichkeit, Performance und Allgemeingültigkeit eine ideale Umgebung dafür, dass AI-Agenten Code schreiben und ausführen können
- Agenten können in Go hochperformante Software, die kompiliert, getestet, formatiert und auf verschiedene Maschinen ausgerollt werden kann, automatisch erzeugen
- Ob Go zur ultimativen Sprache für Agenten wird oder ob eine noch besser geeignete Sprache auftaucht, ist ungewiss,
doch das aktuelle Team erzielt bereits spürbare Ergebnisse bei Produktivität und Softwarequalität
3 Kommentare
Vor allem ist es gut, weil der Build schnell ist.
Die Go-Sprache hat wirklich ein sehr klares Konzept, und für diejenigen, zu denen dieses klare Konzept gut passt, scheint sie eine gute Wahl zu sein. Ich selbst habe Backends zunächst mit einer JS-Laufzeitumgebung gebaut und bin dann zu Go gewechselt; ich denke, ich kann mit Überzeugung sagen, dass sowohl die Performance als auch die Produktivität bei der Entwicklung damit mehr als zufriedenstellend sind.
Hacker-News-Kommentare
Seit über 9 Monaten in der Beratung stelle ich immer wieder fest, dass Go sehr gut für die Codegenerierung mit LLMs geeignet ist
Go bietet ein konsistentes Build-System, einen Formatter, statische Typisierung und CSP-basierte Nebenläufigkeit ohne die gefährlichen Aspekte von C++
Seit über 10 Jahren gibt es keine kompatibilitätsbrechenden Versionen, und auch Framework-Wechsel sind selten
Wenn ich Teams bei Sancho Studio dazu berate, agentic coding workflows einzuführen, liefert Go mit Claude oder Codex sehr stabile Ergebnisse
Dagegen sind Python und TypeScript bei Frameworks und Typansätzen zu vielfältig, sodass LLMs schwer konsistente Ausgaben erzeugen können
Tatsächlich wirkt das, was ich an Go nicht mochte — die Grenzen der Abstraktion — für LLMs eher als Vorteil
Das neue
go fixin Go 1.26 unterstützt automatische Refaktorierung auf AST-Ebene und hält Codebasen aktuellFrüher habe ich im Projekt Zoom E2E Whitepaper eine PKI in Go aufgebaut, und jetzt, da LLMs den repetitiven Boilerplate-Code übernehmen, spielt Gos Einfachheit ihre Stärken voll aus
Java hat mehr Trainingsdaten und ein stärkeres Typsystem, was auch bei der Validierung von LLM-Ausgaben hilfreich ist
Ich bevorzuge Low-Level-Umgebungen, und mir gefallen Gos flacher Abstraktions-Stack und seine vorhersehbare Struktur
Am Ende passen Einfachheit und Konsistenz sowohl gut zu LLMs als auch zu Entwicklern wie mir
Standardisierte Sprachen wie Go machen die Ergebnisse leichter verständlich, aber Ruby und C++ sind ebenfalls ziemlich brauchbar
Bei Lisp oder Bash ist die Freiheit so groß, dass die Resultate stark schwanken
Python und TypeScript in dieselbe Kategorie zu stecken, ist ungenau
Python verwirrt LLMs wegen der Versionsbrüche und der spät eingeführten Typisierung, aber TypeScript ist viel konsistenter
Wenn sich die Gelegenheit ergibt, würde ich gern ein Live-Coding-Duell Go vs TypeScript sehen
Bei der Entwicklung von Agenten sollte man meiner Meinung nach möglichst viel Validierung in die Compile-Time verschieben
Go ist okay, aber sein Typsystem ist nicht so stark wie das anderer Sprachen
Rust ist sehr nützlich, weil nach bestandenem Compiler-Check kaum noch Laufzeitfehler auftreten
Haskell wäre wahrscheinlich noch besser
Wenn der Agent den Quellcode ändert, aktualisiert er auch die Tests mit
In anderen Sprachen vergisst man Tests leicht
Ich baue gerade auf Haskell eine Toy-Sprache auf Basis abhängiger Typen, und dank der einfachen Syntax können LLMs gut damit umgehen
Intern funktioniert sie ähnlich wie sicheres/unsicheres Rust
Wir schreiben den Code ja nicht selbst, also ist etwas Unbequemlichkeit in Ordnung
Man kann es etwa mit TypeScript für SPAs kombinieren, mit Tauri plattformübergreifende Apps bauen oder ein Python-Sidecar anhängen
Ich experimentiere auch mit Spielen in Bevy, und die ECS-Struktur gefällt mir
So konnte ich die Vorteile mehrerer Sprachen kombinieren und ihre Nachteile vermeiden
Ich habe Gemini, Claude Code und Codex über mehrere Tage hinweg aufgefordert: „Entwerft mal eine Sprache, die ihr selbst gern hättet“
Herausgekommen ist eine Sprache im Forth-Stil mit starkem Typsystem, Contracts, nativen Tests, Fuzz-Tests und einem Z3-basierten Constraint-Solver
Den Interpreter habe ich in Elixir implementiert und als Cairn-Projekt veröffentlicht
Die Sprache wurde in rund 150 Commits gebaut und lief ohne Laufzeitfehler
Dieses Experiment zeigt, wie wichtig Compile-Time-Analyse und Testwerkzeuge sind
Solche Informationen können sie nicht kennen, wenn sie nicht in den Trainingsdaten enthalten sind
Das Tooling für so eine Sprache weiterzuentwickeln, wäre vermutlich ein echtes Vergnügen
Ich halte OCaml nach wie vor für die beste Wahl
Starkes Typsystem (inklusive GADT), Fokus auf reine Funktionen, schnelle Build-Zeiten, Unterstützung für WASM/JS-Ziele — es hat viele Vorteile
Dass Code innerhalb einer Datei in Reihenfolge ausgewertet wird und zyklische Abhängigkeiten explizit behandelt werden müssen, sorgt ebenfalls für Stabilität
Vor allem aber ist es auch für Menschen eine Sprache, mit der das Schreiben Spaß macht
Früher war F# in dem Bereich weiter
Selbst wenn ein Agent versehentlich Fehler einbaut, werden die meisten erkannt
Unter PHP, Go, JavaScript und Python ist Go zwar besser, aber das ist noch kein starkes Argument dafür, dass es die „beste Sprache“ ist
Gos Einfachheit und sein ausreichend gutes Typsystem sind aber ebenfalls attraktiv
Siehe auch die kürzlich diskutierte Frage "Why Elixir is the best language for AI"
Die Runtime-Introspection von BEAM ist in Agenten-Umgebungen ein interessanter Punkt
Dieser Artikel kritisiert insbesondere Go
Für Go gibt es das Tool govulncheck, das Schwachstellen in Code und Binärdateien statisch analysiert
Wie im offiziellen Tutorial gezeigt, ist es tief in das Go-Ökosystem integriert und stärker eingebunden als in anderen Sprachen
Ich bin mir nicht sicher, ob govulncheck tatsächlich Schwachstellen im eigentlichen Code analysiert
Dass es sogar Call Paths verfolgt, ist ein Vorteil, aber es ist etwas anderes als echte statische Analysewerkzeuge wie Coverity
In Go kommen Community-Tool-Sammlungen wie
golangci-lintdem eher naheIch habe Projekte in mehreren Sprachen neu geschrieben, und Python passte am besten zu Claude
Der Code war klein und leicht verständlich, wodurch die Arbeit deutlich schneller voranging
Ich habe auch Go, Kotlin und JavaScript ausprobiert, bin am Ende aber bei Python geblieben
pass-Anweisungen sauber behandelt wurdenGo ist keine schlechte Wahl. Die Trainingsdaten sind reichhaltig, und die APIs sind stabil, was LLMs die Arbeit erleichtert
Aber ich denke, Rust ist wegen seines Typsystems noch besser
Allerdings entwickelt sich Rust schnell weiter, sodass LLMs Schwierigkeiten haben können, mit den neuesten APIs Schritt zu halten
Haskell ist wegen des langsamen Wandels und des sicheren Codes womöglich am vorteilhaftesten für LLMs
Python-Skripte sind ähnlich gut lesbar
Aus der Perspektive von jemandem, der täglich mit AI-Coding-Agenten arbeitet, hängt die „beste Sprache“ vom Zweck des Agenten ab
Gos Einfachheit und Vorhersehbarkeit sind gut für allgemeine Aufgaben, aber TypeScript ist bei der Integration in Web-Umgebungen hervorragend
Python bleibt im Daten-/ML-Bereich weiterhin ohne echte Konkurrenz
Entscheidend ist nicht die Sprache, mit der LLMs am besten umgehen, sondern die Sprache, die zur Domäne des Agenten passt