← На главную

Go и Rails предсказуемее для AI-агентов, чем JavaScript и Python

22.05.2026 15:10 · hackernews

Автор Джейкоб из Sancho Studio пришёл к выводу, что консистентность контрится. Он заметил это, работая консультантом на разных проектах. Крупные языковые модели (LLM) усиливают непоследовательные технологии и незаметно закрепляют последовательные. Экосистемы с наибольшей фрагментацией дают худший результат при работе с агентами, а те, где есть жёсткие конвенции, — лучший.

Даже если код дёшев, запуск инференса — это лотерея. Модель может в любой момент решить установить пакет или выдать странный паттерн из 2019 года. Автор предлагает ставить на языки с минимальной вариативностью в корпусе: модель лучше представляет такие экосистемы и надёжнее генерирует код. Для большинства программ это идеально — они делают однотипные вещи: обрабатывают данные, читают и пишут файлы, отвечают на запросы.

До эры AI инженеры жаловались на языки, которые переизобретали себя каждый год. Теперь те же жалобы становятся проблемой для модели. Взять JavaScript: опрос State of JS 2024 показывает раздробленную экосистему. Человеку это надоедает, а модель, обученная на всём публичном корпусе, сталкивается с этой фрагментацией как с проблемой, которую приходится решать через reinforcement learning или хардкод в агентах (Anthropic в Claude Code зашивал предпочтения для JavaScript-фреймворков). С Python та же история: менеджеры пакетов (pip, poetry, uv), совместимость версий, синхронность против async — слишком много вариантов.

Языки с низкой дисперсией корпуса выигрывают. Rails даёт более предсказуемый вывод, чем любой JavaScript-бэкенд, потому что Rails по сути один, а production-grade JS-фреймворков — дюжина. Go воплощает этот принцип почти случайно. Язык долго сопротивлялся нововведениям (generics), что бесило разработчиков. Но сейчас это даёт агенту уникальное сочетание.

Первое — модель конкурентности с goroutines. Это проще для агентов, чем threads, callbacks или async/await. Второе — стандартная библиотека: net/http и криптопакеты от Google покрывают большинство задач без внешних зависимостей. Третье — тулчейн: gofmt, go vet, go fix и gopls дают один правильный стиль и обратную связь. Четвёртое — производительность с автоматическим управлением памятью: Rust слишком сложен для агентов, C и C++ полны багов, а Go даёт скорость без необходимости следить за памятью. Пятое — ограниченный набор типичных ошибок, с которыми агенты умеют работать.

Вывод Джейкоба не в том, что Go — лучший язык, а что он и его инструментарий способны написать большую часть невизуального софта. Он советует использовать Go с агентом для CLI, бэкендов и оркестраторов.

Читать оригинал →