23 puan yazan GN⁺ 2026-03-04 | 3 yorum | WhatsApp'ta paylaş
  • Go dilinin sadeliği ve derlenmiş yapısı, yapay zeka ajanlarının ürettiği kodun kararlılığını ve çalışma verimliliğini artırır
  • Statik tipleme ve hızlı derleme süresi sayesinde ajanlar kod hatalarını hızlıca doğrulayabilir ve yinelemeli işleri verimli biçimde yürütebilir
  • Dil düzeyindeki standart araçlar (gofmt, test, build), ajanların tutarlı kod üretmesini teşvik eder
  • Çapraz platform binary derlemesi varsayılan olarak desteklenir; böylece arka plan ajanları aynı kodu farklı işletim sistemlerinde dağıtık şekilde doğrulayıp çalıştırabilir
  • Bu özellikler sayesinde Go, üretkenlik, sadelik ve performans dengesine sahip bir dil olarak görülüyor ve yapay zeka ajanı tabanlı geliştirmede güçlü bir seçenek olarak öne çıkıyor

Go'nun derlenen bir dil olmasının avantajı

  • Ajanlar büyük miktarda kod üretir ve bu kodun çoğu yalnızca "makul görünümlü" seviyesinde olduğundan, gerçekten çalışıp çalışmadığını doğrulamak temel meseledir
  • Derlenen bir dil kullanıldığında güçlü tip ve statik tip sistemi sayesinde yanlış tipler veya argüman kullanımı gibi belirli hata kategorileri derleme aşamasında elenebilir
  • Derleme başarılı olduğunda, en azından dil standardı kapsamında sözdizimsel olarak doğru kod elde edildiği güvencesi oluşur
  • Rust ile karşılaştırıldığında Go'nun ajanlar için daha uygun görülmesinin nedenleri:
    • Go'nun sözdizimi ve kavramları Rust'tan daha basittir
    • Go'nun tip sistemi Rust'a göre daha az karmaşıktır; bu nedenle üretilen kod daha idiomatik yazım biçimine yakın olur ve insanlar için anlaşılması daha kolaydır
    • Go'nun derleme hızı Rust'tan daha yüksektir, bu da ajanın geri bildirim döngüsünü kısaltır
    • Eğitim verilerinde Go kodu Rust'a göre daha fazla yer aldığından model daha iyi Go kodu üretir

Go'nun sadeliği

  • Herhangi bir programlama diline aşinaysanız, Go kodunu okuyup ne yaptığını hemen anlayabilecek kadar dilin kendisi sadedir
  • Ajan büyük miktarda Go kodu üretse bile geliştiricinin kodu takip etmesi büyük ölçüde zorlaşmaz
  • Ajan zaman zaman tuhaf tasarım kararları alıp o yönde ilerlemeyi sürdürdüğünde bile, dilin sadeliği sayesinde nereye gittiğini anlamak kolaydır
  • 12 ay sonra kodu doğrudan okuma ihtiyacı azalabilir; bu durumda okunabilirlik ve sadeliğin önemi bir miktar düşebilir, ancak gerektiğinde kodu doğrudan inceleyebilme seçeneği hâlâ değerlidir

Go'nun standartlaşmış yaklaşımı

  • Go, net yönergeleri ve araçları olan, opinionated bir dildir; test çalıştırma, kod biçimlendirme ve binary derleme için standart yollar sunar
  • Hata işleme yaklaşımı herkesin zevkine hitap etmese de yerleşik tek bir kalıp sağlar; böylece birden çok kişi ve ajanın birlikte çalışmasına uygun idiomatik kod üretimini teşvik eder
  • JavaScript ile karşılaştırıldığında: JS projelerinde kullanılan araçlar projeden projeye değişir; kod biçimlendirme, paket dağıtımı ve kütüphane import etme yöntemleri konusundaki dağınıklık ajanlar açısından verimsizlik yaratır
  • Go'nun standartlaşmış yapısı sayesinde model, eğitim verisine dayanarak tutarlı biçimde idiomatik Go kodu üretebilir
    • Bir ajandan JS kodunu biçimlendirmesi istendiğinde yeni araçlar kurup yapılandırmaya çalışabilir; Go'da ise sadece gofmt çalıştırmak yeterlidir
    • Unit test yazımı ve binary derleme de benzer şekilde standartlaştırılmıştır

Çapraz platform binary derleme

  • Go'da çapraz platform desteği birinci sınıf bir özelliktir; bu da özellikle CLI araçları gibi çalışacağı ortamın tam kontrol edilemediği yazılımlar için büyük avantaj sağlar
  • Unit testler ve entegrasyon testleri farklı ortamlarda aynı komutla çalıştırılabilir; böylece mevcut işlevlerin bozulup bozulmadığı doğrulanabilir
  • Arka plan ajanları kullanıldığında bu avantaj daha da büyür:
    • Cursor'ı bir Slack mesajıyla tetiklemek veya yerel bir oturumu uzaktan devretmek gibi örneklerle, kodun derlenip çalıştığı ortam üzerindeki doğrudan kontrolden giderek uzaklaşılıyor
    • Go kodu Linux, Windows ve macOS'ta aynı şekilde binary üretebilir; ayrıca tüm iş akışı ortamlar arasında standartlaştığı için sandbox sağlayıcısının geliştirme bağımlılıklarını destekleyip desteklemediği konusunda endişelenmek gerekmez

Ajanların Go kodu üretme kalitesi

  • 2026'nın başı itibarıyla ajanların geçerli Go kodunu tek seferde üretme oranı yaklaşık %95 (kişisel deneyime dayalı bir oran, resmî veri değil)
  • Python'a kıyasla Go ile çalışırken ajan kullanımında daha az zorluk hissediliyor
  • Modeller, Go'nun kütüphanelerini, kalıplarını ve en iyi uygulamalarını yeterince öğrenmiş durumda; yön verildiğinde işlev geliştirme neredeyse zahmetsiz hâle geliyor
  • Go'nun toplam eğitim verisi Python'dan az olabilir; ancak Python'da aynı işi yapmanın 20 farklı yolu bulunduğundan, belirli kütüphaneler bazında bakıldığında Go'nun eğitim verisi yoğunluğu daha yüksek bir etki yaratabilir
  • Model performansı arttıkça ve eğitim verisi genişledikçe bu avantaj zamanla ortadan kalkabilir

Bruin projesinde Go'nun seçilme nedeni

  • Bruin, büyük ölçüde Go ile yazılmış bir CLI aracı olan açık kaynaklı bir ETL aracıdır
  • Veri ekosisteminde Python baskın olsa da Go'nun seçilmesine yol açan başlıca kısıtlar şunlardı:
    • Bir veri orkestrasyonu aracı olarak eşzamanlılık yönetimi kritik önemdedir
    • Dil runtime'ı ya da veri platformlarının dış API'leri gibi çeşitli sistemlerle etkileşim gerektiğinden yeterli bir ekosistem gerekir
    • Bir CLI aracı olarak, VS Code eklentisinde veya yerel UI backend'inde kullanılabilmesi için yeterli performans şarttır
    • Farklı sistem entegrasyonları için öngörülebilir hata işleme gerekir
    • Kullanıcı makinelerinde çalıştığı için farklı işletim sistemleri ve mimarileri desteklemenin kolay olması gerekir
  • Öznel bir etken olarak, ana katkıcıların üzerinde çalışmaktan keyif alacağı bir dil olması da önemliydi; küçük ekiplerde keyif ve enerji en kıt kaynaklardandır
  • Python'a kıyasla bazı veri kütüphanelerinin eksikliği bir dezavantaj olsa da, Go'nun hızı ve geliştirici deneyimi (DX) avantajlarının uzun vadede daha büyük değer sağlayacağı yönündeki sezgiyle bu seçim yapıldı

Sonuç: ajan çağında Go

  • Programlama dilleri, insanların kodu doğrudan yazmadığı bir döneme doğru ilerliyor
  • Artık ihtiyaç duyulan şey, ajanların etkili biçimde kod yazmasını destekleyen sistemler
  • Go, kullanılabilirlik, performans ve yaygınlık dengesi sayesinde yapay zeka ajanlarının kod yazıp çalıştırması için ideal bir ortam sunuyor
  • Ajanlar Go ile derlenebilen, test edilebilen, biçimlendirilebilen ve farklı makinelere dağıtılabilen yüksek performanslı yazılımları otomatik olarak üretebilir
  • Go'nun ajanlar için nihai dil olup olmayacağı ya da daha uygun bir dilin ortaya çıkıp çıkmayacağı belirsiz olsa da, şu anda ekip üretkenlik ve yazılım kalitesi açısından yeterince güçlü sonuçlar alıyor

3 yorum

 
mammal 2026-03-05

Öncelikle derleme hızı yüksek olduğu için güzel.

 
tsboard 2026-03-05

Go dili gerçekten çok net bir konsepte sahip; bu net konsept kendisine uyanlar için iyi bir seçim gibi görünüyor. Ben de JS runtime ile backend geliştirirken Go'ya geçtim ve hem performans hem de geliştirme verimliliği açısından bunun fazlasıyla tatmin edici olduğunu rahatlıkla söyleyebilirim.

 
GN⁺ 2026-03-04
Hacker News yorumları
  • 9 aydan uzun süredir danışmanlık yapıyorum ve Go'nun LLM ile kod üretimine çok uygun olduğunu sürekli görüyorum
    Go; tutarlı bir build sistemi, formatter, statik tipleme ve C++'taki kadar tehlikeli tarafları olmayan CSP tabanlı eşzamanlılık sunuyor
    10 yılı aşkın süredir uyumluluğu bozan bir sürüm yok ve framework değişimi de neredeyse hiç yaşanmadı
    Sancho Studio'da ekiplere agentic coding workflow benimsemelerini önerirken, Go Claude ve Codex'te çok istikrarlı sonuçlar veriyor
    Buna karşılık Python ve TypeScript'te framework'ler ve tipe yaklaşım biçimleri çok çeşitli olduğu için LLM'in tutarlı çıktı üretmesi zorlaşıyor
    Hatta Go'dan hoşlanmamamın nedeni olan şey — soyutlama sınırları — LLM için bir avantaja dönüşüyor
    Go 1.26'daki yeni go fix, AST seviyesinde otomatik refactoring destekleyerek kod tabanını güncel tutuyor
    Eskiden Zoom E2E Whitepaper projesinde Go ile PKI kurmuştum; şimdi LLM tekrarlayan boilerplate işleri üstlenince Go'nun sadeliği gerçekten değer kazanıyor

    • Bu nedenlerin çoğunun Java için de geçerli olduğunu düşünüyorum
      Java daha fazla eğitim verisine ve daha güçlü bir tip sistemine sahip, bu da LLM çıktısını doğrulamada avantaj sağlıyor
    • Kesinlikle katılıyorum. 20 yılı aşkın süredir C++ kullanıyorum ama Golang'ın gerçek zamanlı kontrol veya gömülü sistemler dışındaki çoğu iş akışı için en iyi dil olduğunu düşünüyorum
    • “Go'nun soyutlama sınırlarının LLM için avantaj olması” fikrine güçlü şekilde katılıyorum
      Ben düşük seviye ortamları seviyorum; Go'nun sığ soyutlama katmanı ve öngörülebilir yapısı hoşuma gidiyor
      Sonuçta sadelik ve tutarlılık hem LLM'e hem de benim gibi geliştiricilere iyi geliyor
    • Son dönemde LLM'lerin kod kalitesine bakınca, dilden çok problem tanımının karmaşıklığı daha belirleyici görünüyor
      Go gibi standartlaşmış dillerde sonuçları anlamak kolay ama Ruby ve C++ da oldukça iyi
      Lisp ve Bash'te serbestlik yüksek olduğu için sonuçlar daha tutarsız oluyor
    • Go'ya karşı biraz önyargılı olabilirsin; benim deneyimim daha çok TypeScript tarafında olduğu için farklı düşünüyorum
      Python ile TypeScript'i aynı kategoriye koymak isabetli değil
      Python sürüm kopuşları ve tiplerin yavaş benimsenmesi nedeniyle LLM'i şaşırtıyor, ama TypeScript çok daha tutarlı
      Fırsat olursa Go vs TypeScript canlı kod düellosu görmek isterim
  • Ajan geliştirmede mümkün olduğunca fazla doğrulamayı derleme zamanına taşımak gerektiğini düşünüyorum
    Go fena değil ama tip sistemi bazı diğer diller kadar güçlü değil
    Rust, derleyici hatalarını geçtikten sonra neredeyse hiç runtime hatası bırakmaması açısından çok faydalı
    Haskell muhtemelen daha da iyi olurdu

    • Rust'ın iyi yanlarından biri, test kodunun aynı dosyada bulunabilmesi
      Ajan kaynak kodu değiştirirken testleri de birlikte güncelliyor
      Diğer dillerde testleri unutmak daha kolay oluyor
    • Haskell de harika ama LLM çok fazla soyutlama katmanı ekleme eğiliminde
      Ben Haskell üzerinde bağımlı tip tabanlı oyuncak bir dil geliştiriyorum; basit sözdizimi sayesinde LLM'in işlemesi kolay oluyor
      İçeride güvenli/güvensiz Rust gibi çalışıyor
    • Benim oyum da Rust'a. Karmaşıklığı başta üstlenip operasyon maliyetini azaltma stratejisinin doğru olduğunu düşünüyorum
      Sonuçta onu doğrudan biz yazmıyoruz, biraz kullanışsız olması sorun değil
    • Ben de Rust'ı severek kullanıyorum; diller arası birlikte çalışabilirlik çok güçlü
      TypeScript ile SPA yapmak, Tauri ile çok platformlu uygulama geliştirmek ya da Python sidecar eklemek gibi kombinasyonlar mümkün
      Bevy ile oyun da deniyorum, ECS yapısı hoşuma gidiyor
      Böylece farklı dillerin güçlü yönlerini birleştirip zayıf taraflarından kaçınabildim
    • Haskell veya Prolog gibi yüksek seviyeli dilleri 2025 LLM'leriyle deneyen biri var mı merak ediyorum
  • Birkaç gün boyunca Gemini, Claude Code ve Codex'e “istediğiniz dili tasarlayın” dedim
    Sonuç, güçlü bir tip sistemi, contract'lar, yerleşik testler, fuzz testleri ve Z3 tabanlı bir kısıt çözücü içeren Forth tarzı bir dil oldu
    Yorumlayıcıyı Elixir ile yazdım ve Cairn projesi olarak yayımladım
    Yaklaşık 150 commit ile oluşturulan bu dil runtime hatası olmadan çalıştı
    Bu deney, derleme zamanı analizi ve test araçlarının önemini gösteriyor

    • İlginç bir proje ama LLM'in kendisi için avantajlı bir dili tasarlayabileceğini varsaymak bana yanlış bir öncül gibi geliyor
      Böyle bir bilgi eğitim verisinde yoksa bunu bilemez
    • Benim ideal dilimle neredeyse birebir örtüşmesi şaşırtıcı
      Böyle bir dilin tooling'ini geliştirmek gerçekten çok keyifli olurdu
    • Acaba doğrudan BEAM bytecode'una compile etmesini de denedin mi?
    • Etkileyici. Acemi biri açısından diğer Forth türevi dillere göre öğrenmesi daha kolay mı, onu da merak ettim
  • Ben hâlâ OCaml'ın en iyi seçim olduğunu düşünüyorum
    Güçlü tip sistemi (GADT dahil), saf fonksiyon ağırlıklı yapı, hızlı build süreleri, WASM/JS hedef desteği gibi pek çok avantajı var
    Kodun dosya içinde sırayla değerlendirilmesi ve bu yüzden döngüsel bağımlılıkların açıkça ele alınması da daha güvenli hissettiriyor
    En önemlisi, insanların yazması da keyifli bir dil

    • Bugünlerde çok çekirdek ve asenkron işleme tarafı nasıl, merak ediyorum
      Eskiden F# bu konuda daha ilerideydi
    • OCaml derleyicisinin hata yakalama yeteneği olağanüstü
      Ajan yanlışlıkla bug eklese bile çoğunu yakalıyor
    • Go yerine OCaml öneririm. İfade gücü yüksek tip sistemi sayesinde Go ile mümkün olmayan soyutlamalar kurulabiliyor
    • O durumda doğrudan F# kullanmak daha mantıklı olmaz mı?
  • PHP, Go, JavaScript ve Python arasında seçilecekse Go daha iyi olabilir ama bunun “en iyi dil” olduğu sonucunu çıkarmak zayıf kalıyor

    • Ben Rust tercih ediyorum. Derleyicinin geri bildirim döngüsü mükemmel ama sözdizimi oldukça ayrıntılı
      Go'nun sadeliği ve yeterli düzeydeki tip sistemi de çekici
    • Saydıkların arasında tek derlenen dilin Go olması önemli bir nokta
  • Kısa süre önce tartışılan "Why Elixir is the best language for AI" başlığına da bakılabilir
    BEAM'in runtime introspection özellikleri ajan ortamlarında ilginç bir artı

  • Go'da kod ve binary açıklarını statik olarak analiz eden govulncheck aracı var
    Resmî eğitimde gösterildiği gibi, Go ekosistemine derinlemesine entegre ve diğer dillere kıyasla daha yüksek bir bütünleşme düzeyine sahip

    • Rust'taki cargo-audit ile tam olarak ne farkı olduğunu bilmiyorum
      govulncheck'in gerçekten kod içindeki güvenlik açıklarını analiz edip etmediğinden emin değilim
    • govulncheck kodun kendisindeki açıkları bulmuyor; bağımlılık kütüphanelerinin güvenlik açıklarının gerçekten kullanılıp kullanılmadığını analiz ediyor
      Çağrı yolunu izlemesi avantaj ama Coverity gibi gerçek statik analiz araçlarıyla aynı şey değil
      Go'da golangci-lint gibi topluluk araç paketleri buna daha yakın
    • Yine de govulncheck'in entegrasyon seviyesi ve kullanılabilirliği diğer dillere göre daha iyi; büyük projelerin bakımında ciddi fayda sağlıyor
  • Projeleri birkaç farklı dilde yeniden yazdım ve Python Claude ile en iyi sonucu verdi
    Kod daha küçük ve anlaşılır olduğu için çalışma hızı çok daha yüksekti
    Go, Kotlin ve JavaScript'i de denedim ama sonunda Python'da kaldım

    • Python kodunda exception handling ya da pass ifadelerini düzgün ele alıp almadığını merak ediyorum
  • Go kötü bir seçim değil. Eğitim verisi bol ve API'leri istikrarlı olduğu için LLM'in işlemesi kolay
    Ama Rust'ın tip sistemi sayesinde daha iyi olduğunu düşünüyorum
    Yine de Rust çok hızlı değiştiği için LLM'in güncel API'leri takip etmesi zor olabiliyor
    Haskell ise yavaş değişim temposu ve güvenli kod yapısı sayesinde LLM için en elverişli dil olabilir

    • Haskell ile üretilen kod, Go'ya kıyasla daha kısa ve okunabilirliği daha yüksek olabilir
      Python script'leri de benzer şekilde kolay okunuyor
  • Her gün AI coding agent'larla çalışan biri olarak, “en iyi dil”in ajanın amacına göre değiştiğini düşünüyorum
    Go'nun sadeliği ve öngörülebilirliği genel işler için iyi, ama TypeScript web ortamlarıyla entegrasyonda çok güçlü
    Python veri/ML alanında hâlâ rakipsiz
    Asıl mesele, LLM'in iyi kullandığı dili değil, ajanın alanına uygun dili seçmek