14 puan yazan GN⁺ 2025-12-10 | 4 yorum | WhatsApp'ta paylaş
  • Vibe coding gerçekten pratikte işe yarıyor, ancak yazarın kendi anlamadığı kodların ortaya çıkması nedeniyle programlamanın özündeki keyif azalıyor
  • Tüm programlama dilleri makineler için değil, insanların rahatı için tasarlanmış araçlardır; güvenlik, soyutlama ve okunabilirlik gibi avantajlar da sonuçta insanın düşünmesini kolaylaştıran yapılardır
  • Öyleyse AI'nin yazdığı kod için insan dostu dillere gerçekten ihtiyaç var mı?; makine dostu ve AI merkezli yeni bir dil olan VOPL(Vibe-Oriented Programming Language) öneriliyor
  • Bu dil; çalıştırılabilir sözde kod, edebi programlamanın bir uzantısı ya da doğal dile dayalı belirli bir sözdizimine sahip bir form gibi çeşitli olasılıkları kapsayabilir
  • Saklı programlı bilgisayarların ilk dönemlerinde olduğu gibi, yeni hesaplama paradigmalarına direnç tarihte tekrar eden bir olgu ve vibe coding de bu akışın bir sonraki aşaması olabilir

Programlama ile vibe coding arasındaki gerilim

  • Programlama benim için iş değil, keyif; 1990'ların sonlarından beri süren bir tutku
    • 25 yıldır programlama öğretiyorum ve alan dışından insanları programcıya dönüştürmeyi en gurur verici işim olarak görüyorum
  • Programlama yaparken problem çözme sürecini bizzat anlayabilmenin verdiği keyfi önemsiyorum
  • Buna karşılık vibe coding, AI'nin kodu sizin yerinize yazdığı ve sonuçta yazanın ortaya çıkan sistemi tamamen anlamadığı bir süreci ifade ediyor
    • Bu biraz “kopya çekmek” gibi hissettirebiliyor (elbette sadece o da değil), ama tam tarif etmesi zor, rahatsız edici bir duygu yaratıyor
    • Kodlamanın kendisindeki eğlencenin büyük kısmını elinden alıyor gibi görünüyor
  • Buna rağmen vibe coding, yüksek kaliteli gerçek sistemler üretecek kadar iyi çalışıyor
    • Arama yerine kullanmanın ötesine geçip, insanın kendisinin çözmeye üşendiği sorunları bile doğru şekilde çözüyor
    • AI, hata takibi ve bellek yönetiminde insandan daha yetkin görünüyor; bir program fikrini AI'ye verdiğinizde ortaya çıkan sonuç karşısında defalarca şaşırıyorsunuz

Diller aslında insanlar için araçtır

  • Abelson & Sussman'ın Structure and Interpretation of Computer Programs kitabında da vurgulandığı gibi, programlama dilleri insanlar için bir ifade aracıdır
    • Kod “insanların okuması için” yazılır; makinelerin okunabilirliğe ihtiyacı yoktur
  • Tüm programlama dilleri, insanın düşünmesini ve kendini ifade etmesini destekleyen ortamlar olarak tasarlanmıştır
    • Rust'ın güvenliği, C++'ın soyutlamaları, Go'nun eşzamanlılığı gibi özellikler makineler için değil, insanların rahatlığı için vardır
    • Bellek yönetimi, eşzamanlılık ve tip güvenliği gibi unsurlar, insanın düşünce yapısını destekleyen soyutlamalardan ibarettir
  • Bu yüzden AI'nin kod yazdığı bir çağda, insan merkezli dil tasarımı gereksiz hale gelebilir

O halde AI için böyle bir dile ihtiyaç var mı? : “C ile vibe coding yapın” önerisinin anlamı

  • Vibe coding sırasında insan zaten kodun tamamını bütünüyle anlayamadığı bir durumda program yazıyor
    • Böyle bir durumda insan dostu sözdizimini korumanın gerekçesi zayıflıyor
    • İnsan dostu diller yerine makine dostu bir dille (C ya da assembly) doğrudan yazmak daha mantıklı olabilir
  • AI, C'nin undefined behavior, bellek serbest bırakma ve off-by-one gibi sorunlarını insandan daha incelikli biçimde yönetebilir
    • Nasıl derleyici optimizasyonu daha iyi yapıyorsa, insanı aşan bir doğru kod yürütme yönetimi yeteneği de gösterebilir
  • O zaman şu soru ortaya çıkıyor: AI'nin kullanımı için daha uygun bir dile ihtiyaç yok mu?
    • Neden vibe coding'i ille de Python, Rust ya da C++ gibi “insan merkezli” dillerle yapmak zorundayız?

VOPL(Vibe-Oriented Programming Language) önerisi

  • Vibe coding'i temel alan bir dil düşünülürse şu olasılıklar hayal edilebilir
    • Çalıştırılabilir sözde koda yakın çok yüksek seviyeli bir dil
    • Edebi programlamanın tamamlanmış bir hali gibi, insanın sadece anlatımı yapıp AI'nin makine kodunu üretmesi
    • Doğal dil gibi görünen ama belirli “deyimsel kalıplara” sahip bir yapı
    • goroutine yerine gündelik terimlere dayanan eşzamanlılık ifadeleri (slang) gibi kavramlar
  • Amaç, AI'nin problemi doğru anlayıp hızla çalışan kod üretebilmesi için makine merkezli bir ifade sistemi tasarlamak
  • AI'ye yeni bir dil öğretmenin zorluğu elbette var; ancak bugün bile birçok geliştirici AI'ye sözde kod verip sohbet eder gibi kod ürettiriyor, bu yüzden
    VOPL'in bir türünün zaten öğreniliyor olması da mümkün

Programlama eyleminin değişimi

  • “Elle kod yazmak”, geleceğin vibe coder eğitiminde Montessori tarzı temel eğitim gibi görülebilir
    • Photoshop öncesi dönemde elde çizim eğitiminin ya da elektronik hesap makinesi çağında bile kâğıt üzerinde denklem çözme alıştırmalarının eğitimde kalmaya devam etmesi gibi
  • Yeni bir paradigmanın gelişine duyulan direnç tarihte defalarca tekrarlandı
    • Saklı programlı bilgisayarların ilk benimsenme dönemindeki itirazlar (ENIAC → EDVAC)
    • Grace Hopper'ın bile “makine, makine komutlarını yazamaz” eleştirisine karşı mücadele ettiği bir tarih var

Sonuç mesajı

  • Vibe coding artık bir gerçek ve gelecekteki geliştirme pratiği dilin kendisinin yeniden tasarlanmasını gerektirebilir
  • İnsan merkezli diller çağından, AI merkezli dillere geçiş olasılığının ciddi biçimde tartışılmasının zamanı gelmiş olabilir

“Same vibe, as the kids say.” — Bugünün deyimiyle söylersek, aynı vibe işte

4 yorum

 
youknowone 2025-12-12

Dil modeliyle kod yazarken bunun makineye yakın ifadeleri kendi kendine sihir gibi üretmesini beklemek biraz uyanıklık oluyor
Kısıtlar ne kadar fazlaysa, o kısıtlar içinde o kadar iyi çalışır

 
aer0700 2025-12-12

AI kodu yazsa bile, sonuçta hizmetin sorumluluğunu geliştiricinin üstlenmesi gerekir. Kendisinin anlayamadığı bir kodun sorumluluğunu alıp alamayacağı ise şüpheli.

 
dooboo 2025-12-11

"vibe coding" yapsanız bile, ortaya çıkan sonucu gözden geçirebilmek için bunu iyi bildiğiniz bir dille yapmanız gerekir.

Yorumlarda çok önemli bir cümle var.

 
GN⁺ 2025-12-10
Hacker News görüşleri
  • Yazılım geliştirme işinin gerçekten ne kadar çeşitli olduğunu yeniden fark ettim
    Ben backend, özellikle de API geliştirme yapıyorum ve üretkenlikteki en büyük darboğaz, çoğu insanın gereksinimleri düzgün şekilde tanımlayamaması
    PM'ye sorunca kaçamak cevap veriyor, frontend geliştirici ise backend'in API vermesini bekliyor
    Sonuçta en zor kısım kodlama değil, gereksinimleri keşfetme ve yorumlama düşünce süreci

    • Yaşadığın zorluk, programlamanın kendisinden değil verimsiz organizasyon yapısından kaynaklanıyor
      Gerçek programlama, kişinin kendi tasarladığı sistemi hayata geçirip ona can vermesidir
      Şirkette sadece kod yazma işini ‘Programming’ sanırsan yanlış anlamalar doğar
    • Beşeri bilimler öğrencilerine programlama öğreten bir İngiliz edebiyatı profesörüyüm; yazarın kariyeri oldukça ilginç
      Ama büyük ölçekli ticari yazılım geliştirme deneyimi çok fazla yok gibi görünüyor
      Onun “programlamanın geleceği” tahmini etkileyici, ancak endüstriyel bağlamda biraz sınırlı olabilir
      (Bkz: Stephen Ramsay tanıtımı)
    • Backend, frontend, full-stack, QA otomasyonu ve DevOps dahil hepsini yaptım
      Sonunda önemli olan şey zihniyet ve teknolojiye ne kadar maruz kaldığın
      LLM üretkenliğimi ciddi biçimde artırıyor — özellikle mimari düşünme biçimine sahip biri olarak benim için
      Eskiden aylar süren şeyi artık birkaç saatte ortaya çıkarıyorum
      Bu aralar LLM ile eski Shockwave Lingo kodunu modern dillere çevirip eski oyunları geri kazandırıyorum
    • Eğer AI kendi başına gereksinimleri tanımlayacak kadar akıllıysa, o noktada vibe coding zaten gereksiz hale gelir
      Sonuçta vibe coding geleceğin kendisiyse, bu AI'ın kusursuz olmadığını peşinen kabul ediyor demektir
      Hayali AI'ın yeteneklerini ve sınırlarını keyfi biçimde belirlediğin anda, tartışmanın kendisi muğlaklaşıyor
    • Jira ticket'larını LLM'e veremeyecek kadar gereksinimler belirsiz
      Netleşmesi için paydaşlarla dört beş kez toplantı yapmak gerekiyor
  • C ile vibe coding denedim ama hâlâ C'den hoşlanmıyorum
    AI da insanlar gibi bellek serbest bırakmayı unutup sonradan düzeltiyor
    Rust ile yapınca çok daha keyifliydi; dilin bağımlılık ekosistemini anlamak asıl beceri
    AI, bu tür ‘kitabi bilgiyi’ hızlıca taramada yardımcı oluyor

    • Rust kod incelemesi çok daha net
      C'de belleğin serbest bırakılıp bırakılmadığını tek tek kontrol etmek gerekiyordu, ama Rust'ta bu kaygı neredeyse yok
      Vibe coding yapsan bile, dilin güvenlik mekanizmalarına sahip olduğu Rust'ın çok daha iyi olduğunu düşünüyorum
    • AI Python ve JavaScript'i iyi yazıyor ama C/C++ tarafında hâlâ insan gibi hata yapıyor
      Python'ın insan dostu özellikleri AI'a da yardımcı oluyor
      Artık AI sayesinde doğrudan yeni UI ya da yardımcı araçlar yapmak daha kolay hale geldi,
      performans gerektiren kısmı C++ ile yazmak da basitleşti
    • Ben de C ile vibe coding denedim; AI bellek yönetimini oldukça iyi hallediyor
      GDB ile kendim debug etsem çok daha uzun sürerdi
      String işleme ya da pointer yönetimi gibi can sıkıcı kısımları üstlenmesi beni memnun ediyor
    • Bu aralar assembly çalışırken AI'a da aynı soruları çözdürüp karşılaştırıyorum
      Derleyicinin ürettiği kod her zaman daha verimli, ama AI'ın hatalarını öğrenme fırsatı olarak kullanıyorum
    • Doğrudan agent yapmayı öğrenmeni tavsiye ederim
      Yerel bir LLM ile bile bellek serbest bırakma gibi doğrulamaları otomatikleştirebilirsin
  • Yakın zamanda “Why AI Needs Hard Rules, Not Vibe Checks” diye bir tartışma vardı
    (bağlantı)
    Rust'ın vibe coding için uygun olmasının nedeni, tip ve yaşam süresi garantileri gibi ücretsiz doğrulama özellikleri sunması
    Bu tür doğrulamalar olmazsa LLM kolayca güvensiz kod üretebiliyor
    Soyutlama sadece insanlar için değil, LLM'ler için de gerekli

    • LLM'ler için tasarlanmış bir dil hayal ediyorum
      Her fonksiyonun, değişkenin, tipin ve istisnanın katı biçimde belirtildiği bir dil
      Yazması zahmetli olurdu ama okuması ve doğrulaması kolay bir yapı sunardı
    • ACM'deki Automatically Translating C to Rust yazısı da ilgi çekici
      Kodun yürütme yolunu değil, niyetini koruyan çevirinin zorluğunu ele alıyor
    • Bu kadar çok kurala ihtiyaç varsa, AI kullanmanın ne anlamı kalıyor?
      Shellcheck gibi araçlar da acemiyi uzmana dönüştürebiliyor
    • LLM'ler için asıl önemli olan statik analiz edilmesi kolay diller
      RL ile gelişim sağlamak istiyorsan, kodun tutarlılığını otomatik olarak değerlendirebilmen gerekir
      Prolog gibi mantık temelli dillere yeniden dönmek gerekebilir
    • Rust da mantık hatalarını engelleyemiyor
      LLM hata dolu kod üretiyorsa, dil değişse de sonuç benzer olur
  • İlk başta vibe coding etkileyiciydi ama sonra sürekli düzeltme döngüsü zihni eritiyor
    Algoritmik akış kaydırmak gibi odağı elinden alıyor
    Şimdi kodu kendim yazıyor, sıkıcı kısımları sadece ChatGPT'ye bırakıyorum

    • Gerçekten ruhu emiliyormuş gibi hissettiriyor
      Üstelik hiçbir şey de öğrenmiyorsun
    • Önce LLM'e bir spec yazdırıp sonra onu düzeltme yöntemini denedim
      Böylece gereksinimleri netleştirebiliyor ve başka bir AI'a kolayca geçebiliyorsun
    • Problemi küçük parçalara bölüp doğrulamak en etkili yöntemdi
  • LLM'in bellek sızıntısı olmayan C kodu üretebileceğinden şüpheliyim
    Bu, insan geliştiricilerin bile hata yaptığı bir alan; eğitim verisi kalitesi düşük LLM'ler daha da riskli
    Segfault veren bir programı vibe coding ile yapmak zaman kaybı olur

    • Uzun süredir Rust ve LLM kullanıyorum; cargo check sayesinde kod kalitesi çok yüksek
      Neredeyse hiç bozulmuyor ve her zaman derleniyor
    • LLM'e kendi başına hata tespiti yapması için kaynak ayırabilirsin
      İnsan yorulur ama LLM yorulmaz
    • LLM'ler giderek yüksek kaliteli verilerle ince ayar görüyor
      İyi C koduyla yeniden eğitilirse gelişme payı olabilir
  • AI'ın C'de undefined behavior'dan kaçındığını mı söylüyorsun? Buna inanmak zor
    İnsan gibi hata yapacak şekilde eğitilmiş bir modelse, aynı bug'ları üretme ihtimali de yüksek

    • Ama son modeller pekiştirmeli öğrenme ve sentetik veriyle iyi kodu güçlendiriyor
      En olası token'ı tahmin ettikleri için yaygın hataları daha az yapıyorlar
    • Copilot Chat içindeki Sonnet bana tek seferde bellek hatası içermeyen C++ kodu üretti
      Çökme nedenini de iyi buldu
    • İnsanı taklit etmesi için değil, derleyiciyi taklit etmesi için eğitilmeli
    • Bu yüzden Rust'ın LLM ile kod üretimine daha uygun olduğunu düşünüyorum
    • Claude ile C kodu yazdırınca, ölçek büyüdükçe pthread veya bellek hataları çıkıyor
      Zig ya da Rust gibi modern diller çok daha iyi
  • Vibe coding'in beni rahatsız etmesinin nedeni, sadece ‘hile yapıyormuşum’ gibi hissettirmesi değil
    Programlama ruhu olan bir sanat
    İnsanların problem çözme biçimi farklıdır ve yaratıcılık da burada yatar
    Vibe coding, o yaratıcılığı makinenin emip alması gibi geliyor
    Sonunda düşünmeyi de, karar vermeyi de, hataları da makine üstleniyor

  • “vibe-oriented programming language (VOP)” yapalım diye bir öneri vardı
    Ama LLM'ler için bir dil olacaksa, aksine katı ve ayrıntılı olması gerekir
    Tüm koşullar ve istisnalar açıkça yazılmadıkça derlenmemeli
    İnsan için zahmetli olsa da, LLM açısından karmaşayı azaltma avantajı sağlar

    • Aslında çıktı dilinden daha önemli olan şey girdi dili (prompt)
      İnsanın kavramı açıklayıp AI'ın bunu koda dönüştürdüğü bir yapıya ihtiyaç var
    • Bu açıklamayı duyunca aklıma Ada dili geliyor
      Bir kez derlenince neredeyse her zaman düzgün çalışıyordu
  • Vibe coding yapacaksan bile, sonucu gözden geçirebilmek için bunu iyi bildiğin bir dilde yapmalısın
    Aksi halde gidip brainfuck ile deneme yapmak daha mantıklı olabilir

  • “Peki x86 assembly ile denesek?” sorusuna,
    “Kendim inceleyip genişletebilmem gerekiyor” diyerek karşı çıkıyor
    Saf vibe coding sadece bir düşünce deneyi, gerçekçi bir hedef değil
    Bir gün AI QA işini de üstlenebilir ama bugün için güvenli diller ve insan doğrulaması şart

    • “Kendin genişletiyorsan zaten saf vibe coding olmaktan çıkmıştır” sözüne gülesim geliyor
      Artık bu tartışmalardan yorulacak kadar eski bir geliştiriciyim