Yapay zeka kodlama ajanları programlama dili bariyerlerini yıkıyor
(railsatscale.com)- Yapay zeka kodlama araçlarının gelişmesiyle, geliştiricilerin yeni bir dile hızla giriş yapabildiği bir ortam oluşuyor
- 10 yıl boyunca yalnızca Ruby kullanan bir geliştirici olmasına rağmen, bu yıl yapay zeka kodlama ajanlarıyla (ör. Cursor, Claude Code) iş birliği sayesinde C, C++, Rust gibi sistem dillerine fiilen katkı sunabilir hale geldi
- Claude Code ve Cursor gibi araçlar özellikle dil sözdizimi, deyimsel kullanım kalıpları ve genel teori konularında büyük destek sağlıyor
- Yapay zeka, bir kod üreticisinden çok "dil uzmanı bir pair engineer" olarak mevcut deneyimle birleşip gerçek zamanlı soru-cevap, bağlam açıklaması ve örnek analizi üzerinden öğrenme verimini en üst düzeye çıkarıyor
- Yapay zeka, proje bazlı bağlamı ya da derin iç yapıları tamamen bilmese de dil sözdizimi, tipik kalıplar, standart kütüphaneler gibi konularda anında öneri veriyor; böylece 100 saatten fazla ön çalışma olmadan da gerçek katkı mümkün oluyor
- Yapay zeka araçlarının kullanımıyla programlama dili uzmanlığına dair geleneksel algı hızla değişiyor ve giderek daha fazla geliştirici için birden çok dilde üretken çalışılabilen bir ortam açılıyor
10 yıllık Ruby geliştiricisinden çok dilli çalışmaya geçiş
- Yazar, 2014~2024 arasında Ruby ve Rails ekosistemine odaklı bir geliştirici olarak çalıştı
- Bu süreçte Ruby ekosisteminde Rails, IRB, RDoc, debug gem gibi temel araçların geliştirilmesi ve bakımı konusunda deneyim biriktirdi
- 2025'ten itibaren Sorbet(C++), RBS parser(C), ZJIT(Rust) gibi Ruby dışındaki sistem katmanı projelerine katkı sunuyor
- Bu dönüşümü mümkün kılan temel etkenlerden biri yapay zeka kodlama ajanlarının benimsenmesi (Cursor, Claude Code) oldu
- Shopify içinde de bu yapay zeka araçlarının aktif kullanımı teşvik ediliyor
Fırsatların kusursuz biçimde bir araya gelmesi
- Bu sadece yapay zeka sayesinde olmadı; birkaç önemli koşul da aynı anda oluştu
- Ruby DX ekibinin yol haritasındaki değişiklik, Sorbet için RBS desteğini gerekli kıldı → bu da kaçınılmaz olarak C/C++ deneyimi gerektiriyordu
- Shopify'ın Ruby & Rails altyapı ekibindeki üyeler know-how paylaşımı yaptı ve aktif bir mentorluk ortamı sundu
- Geçmişte de güçlü mentorlar ve gerçek proje fırsatları vardı, ancak yapay zeka öğrenme bariyerini ve öğrenme eğrisini çarpıcı biçimde kısalttı
Sistem programlamanın karmaşıklığı
- ZJIT (yeni bir JIT Ruby derleyicisi) projesi örneği:
- Aynı anda çok çeşitli bilgi ve beceriler gerekiyor
- Rust(ana dil), C(Ruby'nin çekirdek uygulama dili), JIT/derleyici teorisi, ZJIT'e özgü yapı ve tasarım, Ruby'nin iç çalışma mantığı, Ruby build sistemi (autoconf, Makefile vb.)
- Tek bir Pull Request bile aynı anda 2~4 alanı kapsayabiliyor
- Claude Code'un verimliliği
- Sözdizimi, genel derleyici teorisi, Rust/C/C++ gibi dil grameri ve ifade kalıpları konusunda yüksek doğruluk gösteriyor
- Projeye özgü bağlam, Ruby'nin iç uygulaması ve karmaşık build sistemi desteğinde ise bir miktar sınırlı
- Buna rağmen öğrenme sürecinin giriş bariyeri yarıdan fazla azalıyor
- Yapay zeka, dil sözdizimi/teori/örüntü öğrenimini anında destekliyor; projeye özgü bağlam ise insanların payına düşüyor
Yapay zekayla pair programming
- Yapay zekayı basit bir kod üreticisi değil, tamamlayıcı bir partner olarak görmeye başladı
- Gerçek iş birliği biçimi
- Geliştirici, görevin gereksinimlerini ve bağlamı aktarır
- Yapay zeka, kalıpları bulur ve dil uzmanı rolünü üstlenir
- Geliştirici, tasarım gerekçelerini sorar
- Yapay zeka kodu değiştirir ya da teoriyi araştırıp sonucu sunar
- Etkileşimli öğrenme sayesinde hem dilin kendisi hem de pratik kullanım biçimi aynı anda öğrenilir
- Örnek: Ruby bytecode komutlarını profilleme görevinde, yapay zekadan geçmiş PR'ları araması ve satır satır açıklama yapması istenebilir
- "Aptalca sorular" bile rahatça sorulabilir ("JIT derleyicisinin neden profillemeye ihtiyacı var?" gibi)
- Alışılmadık sözdizimiyle ilgili anında geri bildirim alınabilir
- Başarısız örnekler de var
- Proje yönü yanlışsa sonunda yine ekip arkadaşlarından mentorlukla düzeltme gerekiyor
- Sonuçta insan uzmanların rotayı düzeltme becerisi hâlâ vazgeçilmez
Programlama dili bariyerlerinin çözülmesi
- Artık yeni bir C projesine katkı sunmak için 100 saatlik ön öğrenmenin şart olduğu bir çağda değiliz
- C, Rust gibi "giriş bariyeri yüksek dillerde" bile yapay zekanın yardımıyla hemen katkı verilebiliyor
- Yapay zeka, acemi hatalarını (sözdizimi hatası, tip hatası, araç kullanımının yanlış anlaşılması vb.) hızla yakalayarak doğrudan anlamlı katkı sunmayı mümkün kılıyor
- Derin uzmanlık hâlâ önemli, ancak çoklu dil üretkenliğine daha fazla geliştirici ulaşabilir hale geliyor
- Grameri/standart fonksiyonları/kalıpları yapay zekaya bırakıp geliştiricinin gerçek problem çözmeye odaklanması mümkün oluyor
- Benim gibi yalnızca Ruby odaklı bir geliştiricinin 1 yıl içinde çok dilli bir geliştiriciye dönüşmesi çığır açıcı bir trend
- "Tek dil kullanan geliştirici"den "çok dilli üretici"ye geçiş artık somut bir gerçek
- Bu, ileride dil bazlı uzmanlık kavramının kendisinin değişeceği akımın başlangıcı olabilir
Sonuç
- Yapay zeka kodlama ajanları programlama dillerine giriş bariyerini keskin biçimde düşürüyor ve
geliştiricilerin birden fazla dilde anında üretken biçimde çalışabildiği yeni bir çağın kapısını aralıyor
5 yorum
Kod üretimi bir yana, peki kod denetimini ya da incelemesini kim yapacak...
Yeterince hakim olmadığınız bir dili yazamasanız bile çoğu zaman kabaca okuyabiliyorsunuz; bu yüzden eskisine kıyasla zaman kazandırdığı doğru gibi görünüyor.
Daha önce kullanmadığım teknolojiler ya da deneyimlemediğim alanlarda, eskisine kıyasla gerçekten çok daha hızlı ilerleyebildiğimizi düşünüyorum.
Hacker News görüşleri
Yapay zekanın öğrenme eğrisini mi değiştirdiğini, yoksa sadece deneyimi daha rahat hale mi getirdiğini merak ediyorum
10 yıl boyunca sadece Ruby kullanıp 1 yıl içinde çok dilli bir geliştirici haline gelmeyi devrimsel bulan birinin deneyimi için, ben bunu daha çok “10 yıl boyunca denememiş olmak” diye düşünüyorum
İlk programlama dilini öğrenmekle, zaten birkaç yıllık deneyim biriktirmişken yeni bir dil öğrenmek tamamen farklı deneyimler
Ben de tamamen aynı fikirdeyim
10 yıl boyunca tek bir dil kullanan geliştiriciyle empati kurmak zor
İlk zamanlarda seçtiğin dile dair kimlik duygusu güçlüydü ama gerçekten deneyimli geliştiricilerden “dil sadece bir araçtır” fikrini öğrendim
Birden fazla dille karşılaşınca bakış açın inanılmaz genişliyor ve kelimelerle anlatması zor bazı farkındalıklar oluşuyor
Böyle bir deneyim yaşamış olmak gerçekten mutluluk verici
“Yapay zeka olmasa da 1 yılda birden fazla dil öğrenmek zaten mümkündü” görüşünün belli ölçüde doğru olduğunu düşünüyorum
Benim deneyimimde, o4 ile küçük Python projeleri yaparken ilginç uç durumlarla karşılaştım ve yapay zeka olmasa bunlar yüzünden birçok iş yarıda kalırdı
Örneğin unraid'in xml vm işleme biçimi ya da dockers tarafında çıkan problemler gibi şeyler; bunları tek başına kazmak bazen bir günü alıyor
Artık yapay zeka bu konularda yol gösterdiği için bunları çok daha akıcı şekilde geçebiliyorum
Bu yönü biraz ürkütücü ama gerçekten iyi çalışıyor
Bu arada benim ilk programlama dilim eski BASIC'ti
Yapay zeka ana akım dilleri daha da popüler hale getiriyor
Yapay zekanın en az hata yaptığı diller genelde büyük toplulukları ve devasa veri setleri olan Python, JS, Ruby gibi diller
Bu yüzden niş diller için erişilebilirlik artışı o kadar büyük olmuyor
Çünkü çoğu programcı niş dillerde küçük hataları yakalayacak kadar yetkin değil
Makine öğrenmesinden çıkan ders gibi, sonunda eğitim verisi bol olan taraf avantajlı oluyor
Yapay zeka örüntü eşleştirmede güçlü
Problemi mevcut örüntülere uydurabilirsen hemen iyi kod örnekleri verebiliyor
Ama problem ne kadar karmaşık ya da sıra dışıysa, yapay zeka o kadar az faydalı oluyor
İnsanlar daha soyut ve dinamik kavramları esnek biçimde ele alabiliyor
Niş dilleri kullananlar genelde popülerlikten çok başka değerlere önem veriyorlar (ör. verimlilik, para, öğrenme vb.)
Eğer bir dilin popülerleşmesi isteniyorsa, uzmanlar deyimlere uygun iyi örnek kodlar üretip yapay zekanın bunların çeşitli varyasyonlarını oluşturmasını sağlarsa giriş bariyeri hızla düşebilir
Küçük ölçekli kodlama kolaylaştıkça insanlar dilin kendisine daha fazla ilgi duymaya başlayabilir
LLM'ler niş dillerde daha sık saçmalama eğiliminde
Ben bir Scala geliştiricisiyim ve yapay zekanın ne kadar işe yaradığına dair tartışmaların büyük kısmının kullanılan dile bağlı olduğunu düşünüyorum
JS gibi bir dilde belki daha faydalı olabilir
Yeni bir dil ya da framework çıktığında yapay zekanın doğru destek verememesi yüzünden insanların değişimden kaçınmasından endişe ediyorum
İnsanlar getirisinden çok zahmetini hissedebilir
Her yeni sürümle birlikte yapay zekaya uygun MCP belgeleri ya da ek kaynaklar neredeyse zorunlu hale geliyor
Benim açımdan claude ve Elm ile çok olumlu bir deneyim oldu
Statik tip sistemi sayesinde doğruluk yüksekti ve çok yardımcı oldu
Tabii bazen garip cevaplar da geliyor ama sanırım bunu herkes yaşıyordur
Büyük diller arasında artık fiilen neredeyse hiç engel kalmadığını düşünüyorum
Bugün uygulama geliştirmede yaygın kullanılan 10 dile bakınca, çoğunun C ya da ALGOL ailesinden geldiğini ve benzer sözdizimi, call-by-reference ile otomatik bellek yönetimi gibi ortak noktalara sahip olduğunu görüyorsun
Profesyonel bir geliştirici bu diller arasında çok zorlanmadan geçiş yapabilir
Bellek yönetimini ilk kez öğrenmek biraz zor olabilir ama tanıdık örüntüler, uyarılar ve linter'larla gayet idare edilir
Gerçekten öğrenme eğrisi sert olan diller Rust, Ada SPARK, Lisp, Forth, ML gibi diller ve bunlar da ana akım değil
Yapay zekayı yardımcı bir programlama partneri olarak kullanıyorum
Yapay zekanın “geniş ama sığ bilgisi” ile önce keşif yapıyor, sonra belirli bir alana derinlemesine gireceğim zaman destek alıyorum
Yeni programlama dillerinden çok yeni kavramları ya da teknolojileri öğrenmekte aktif kullanıyorum (ör. webauthn backend'i, passkey entegrasyonu uygulaması)
Yeni başlayan biri açısından da yapay zeka çok yardımcı oluyor
Ancak yapay zekanın yanlış örnekler verdiği de oldu (ör. kullanımdan kalkmış bağımlılıklar); ama bu da sonuçta daha derin bir anlayış geliştirmeme yardımcı olduğu için iyi bir deneyimdi
Yapay zekaya uygulamayı tamamen otomatik geliştirme işini bırakmak istemem
Sık sık ufak hatalar yaptığı için mutlaka gözden geçirmek gerekiyor
Yakın zamanda yeni karşılaştığım bir Swift codebase'ini anlamakta yapay zeka çok yardımcı oldu
Merak ettiğim şeyleri hızlıca çözüp öğrenme hızımı artırıyor
Ama karmaşık bir projeye gerçekten katkı sunmak için hâlâ beceri ve deneyim şart
Bildiğim dillerde bile birçok yanlış üretirken, bilmediğim bir dilde bunu gözden geçirmek daha da zor
Her yeni dile dalışta çıktıyı incelemek istiyorsan, alışana kadar ciddi zaman harcaman gerekiyor
Dil engelinin azaldığı söyleniyor ama pratikte WhatsApp'ın masaüstü uygulama yerine web uygulamasına geçmesi gibi örnekler de var; yani engeller tamamen ortadan kalkmış değil
Microsoft'un geçmişte .Net platformunu öne çıkarıp J#, Fortran.Net, Cobol# gibi farklı dillerle tek bir ekipte işbirliği hedeflediği denemeleri hatırlatıyor
Bu yaklaşımla üstün #Intercal yeteneklerinin bile verimliliğini dört kat artırabileceğini pazarlıyorlardı
Yapay zeka nedeniyle programlama dillerinin güçlü bir Hindley Milner tip sistemi taşıyan yöne evrileceğini düşünüyorum
Haskell öğrenmesi zor ama veri seti yeterince büyük olursa kodlama ajanları için kusursuz bir hedef olur
Yüksek seviyeli, biçimsel olarak doğrulanabilir ve dil sunucusuyla yapay zekayı kolayca birleştirmeye uygun
Gerçekte ise tam tersi; Haskell sanki yapay zeka desteğinde dışarıda kalacakmış gibi görünüyor
Fonksiyonel dilleri seviyorsan, doğal dil ile programlamanın neden çekici bulunduğunu düşünmek gerekiyor
Doğal dil sonuçları muğlak biçimde ifade etmeye izin veriyor ve makine de o kısmı otomatik dolduruyor
Gerçek yenilik için güçlü mantık sistemi + belirsizlik barındıran bir programlama yaklaşımı, örneğin MTL benzeri mantık temelli yapılar gerekebilir
Ne yazık ki bu alandaki araştırmalar neredeyse durmuş durumda ve sinir ağları baskın
Haskell, LLM açısından derin dil özellikleri fazla olduğu için daha az uyumlu
Sonuçta LLM'ler esas olarak metin örüntüleri ile çalışıyor
Basit özellikler ve anlaşılır derleyici hataları sunan dilleri (ör. Go) yapay zeka daha iyi ele alıyor
Ben şahsen tip çıkarımı güçlü olan dilleri seviyorum ama yapay zekanın bakış açısı farklı
LSP MCP aracı + LLM denedim ama biraz hayal kırıklığı yarattı
LSP aslında insanlar için tasarlandığından yapay zekayla kusursuz bir uyum göstermiyor
LLM'ler örüntü eşleştirmede iyi ve tip yapısı basitse neredeyse hiç tip hatası üretmiyorlar
Karmaşık yapılarda ise LLM ya çözemiyor ya da kullanıcı ne olduğunu anlayamıyor
“Haskell ile büyük ölçekli biçimsel doğrulama örnekleri var mı?” diye soranlar da var; seL4, CompCert gibi örneklerin çoğu C ya da Coq+OCaml tabanlı
Bağımlı tipli dillerin (ör. Agda) kullanımı artabilir
Ancak veri seti çok küçükse yapay zekanın bilgi transferi yapması zorlaşabilir
Yapay zekaya eşli programlama partneri gibi yaklaşmak iyi sonuç veriyor
Kullanıcı öğrendikçe yapay zekanın rolü de değişiyor; başta temel açıklamalar ve küçük kod üretimi, sonrasında ise ileri seviye tartışma + daha büyük parçalar halinde kod üretimi ve kod incelemeye kayıyor
Zamanla kişi kendi başına daha fazla hata yakalamaya başlıyor
Yapay zekayı sadece bir kod üreticisi değil, tamamlayıcı becerilere sahip bir partner olarak görürsen gerçekten faydalı oluyor
Bilmediğin bir dildeyse, yapay zekanın sunduğu çözümü ince ince sorgulamak gerekiyor
“Neden bunu böyle yapıyorsun?”, “Başka senaryolarda ne olur?” gibi somut sorular sormak öğrenme açısından gerçekten çok yardımcı
Soru sorunca yapay zeka düşüncelerimi doğruluyor ama bunu birkaç kez tekrarlayınca ona tamamen güvenmenin zorlaştığını hissediyorum
Bir de “yapay zekaya net sorular sormasını söyleme alışkanlığı” edinmek faydalı olabilir
Böylece kendi anlayışındaki hata ya da mantık boşluklarını daha en başta fark edebilirsin
Gemini'nin kod üretme yeteneğini test etmek için bir bash betiği istedim ama hatalar vardı
Neyse ki bash bildiğim için düzeltebildim ama eğer bilmediğim bir dil olsaydı bunun dil engelini ortadan kaldırdığını söylemek zor olurdu
Bunun daha çok bash'e özgü bir mesele olduğunu düşünüyorum
Mesela Go ile benzer bir otomasyon işini LLM'e verdiğimde tek seferde düzgün çalışıyor
Bunu bash'ten çok Gemini'nin sorunu olarak görmek de doğru değil; yapay zeka modeli hakkında kesin bilgi olmadan sadece marka adına bakarak eleştirmek bana makul gelmiyor
Gerçekten de “Gemini 2.5 Pro (Jan 2025), temperature 0.15” gibi bir ayarla harika bir idiomatic bash script üretiyor
(örnek kod atlandı)
Ama WSL2'de Windows Notepad ile düzenlenmiş dosyalarda satır sonu işleme problemi yaşadım; Gemini buna da nazikçe bir çözüm sundu
İlginç olan şu ki, bash'te son satırda satır sonu karakteri yoksa düzgün işlenmemesi bash'in kendi kısıtı
PowerShell'de ise neredeyse tek satırlık bir komutla aynı iş yapılabiliyor ve sonda satır sonu olmasa da sorun çıkmıyor
Gemini'nin yardımıyla PowerShell tarafını da kısa kodla optimize edebildim
https://ruby-news.kr/articles/…
Benim geliştirdiğim hizmetteki özet. Çevrilmiş bir metindi; benzer ama GeekNews biraz daha iyi düzenlenmiş ve okunması daha hoş.