- Programlama, muğlak bir spesifikasyonu adım adım hassaslaştıran yaratıcı bir eylemdir; yapay zeka ise İngilizce spesifikasyonları koda dönüştürerek bu süreci hızlandırır
- “Vibe coding”, sezgisel bir geliştirme tarzını mümkün kılsa da, soyutlamanın sızdırmasından kaynaklanan karmaşıklık ve hata sorunlarından kaçınamaz
- İnsanlar karmaşıklıkla başa çıkmak için soyutlama ve sıkıştırmadan yararlanır; bu da programlamanın özsel değeri olarak işlev görür
- AGI çağında yapay zeka, daha iyi soyutlamaları destekleyerek incelikli ve sanatsal kod üretimini mümkün kılacaktır
- “Kod öldü” algısının aksine, yapay zeka kodlamanın sonu değil, yeni bir başlangıcını açan bir araç olarak sunuluyor
Kodun ölümü abartılı bir iddia
- İngilizce spesifikasyonların muğlaklığına ve hassasiyet sınırlarına dikkat çekilerek, programlamanın yazı yazmak gibi tekrar tekrar kesinliği artırma eylemi olduğu anlatılıyor
- Bertrand Russell’ın sözüyle, “onu tam olarak yapmaya çalışana kadar her şey muğlaktır” noktası vurgulanıyor
- Yapay zeka, İngilizce yazılmış spesifikasyonları çalıştırılabilir koda hızla dönüştürerek, kullanıcıların istedikleri sonucu kademeli biçimde somutlaştırmasını sağlıyor
- “Vibe coding”, yapay zekanın ürettiği çıktılara tepki vererek sezgisel şekilde geliştirme yapma yöntemi; ancak bu, kusursuz soyutlama yanılsaması yaratabiliyor
- Soyutlama sızdırdığında beklenmedik hatalar ortaya çıkıyor ve bu durum ölçek büyüdükçe daha da ciddi hale geliyor
- Dan Shipper örneğinde olduğu gibi, “vibe coding” ile yapılan işbirlikçi bir metin editörünün popüler olduktan sonra karmaşıklık sorunları yüzünden çökmesi anlatılıyor
- “Canlı işbirliği” sezgisel olarak basit görünse de, gerçekte son derece zor bir problem ve bu da karmaşıklığın doğasını gösteriyor
Soyutlama ve karmaşıklığın denetimi
- İnsanlar aynı anda yaklaşık 7±2 öğeyi algılayabildiği için, karmaşıklıkla başa çıkmanın tek yolu “sıkıştırma”, yani soyutlamadır
- Edsger Dijkstra’nın sözüyle, “soyutlamanın amacı muğlaklık değil, yeni bir anlam düzeyinde hassasiyettir” vurgusu yapılıyor
- Sophie Alpert’in Slack’teki karmaşık bildirim akış şemasını sadeleştirdiği örnek veriliyor
- Programlamanın özü, karmaşıklığı ele almak için daha iyi soyutlamalar yaratmaktır; işlevsel tepkisel programlama gibi alanlarda bunun güzelliği görülebilir
- İşbirlikçi metin editörü gibi özünde karmaşık problemler bile ReactJS ya da TailwindCSS gibi soyutlama araçlarıyla aşama aşama fethedilebilir
AGI çağı ve kodun rolü
- Yapay zeka giderek daha hızlı ve ucuz geliştikçe, sonunda insandan ayırt edilemeyen zekaya (AGI) ulaşılacağı öngörülüyor
- AGI çağında herkesin, sanki “Karpathy seviyesinde 100 dahi”yi ucuza kullanıyormuş gibi güçlü zekadan yararlanabileceği düşünülüyor
- Ancak bunun amacı “daha fazla kötü kod” üretmek değil, daha iyi soyutlamalar ve karmaşıklık anlayışı için bir araç olmak
- Kod, yalnızca yazılım üretmenin bir aracı değil, kendi başına önemli bir sanatsal ürün ve iyi yazılmış kod şiire benzetiliyor
- Yazıda “vibe writing” diye bir şey olmadığı gibi, kodlama da salt sezgisel bir eylemle ikame edilemez
- AGI geldiğinde makinelerin “slop olmayan (non-slop)” kod yazabileceği ve bunun insanlık için görkemli bir ilerleme olacağı söyleniyor
Yapay zeka ve kod kalitesinin iyileşmesi
- Bugünkü yapay zeka hâlâ kusurlu kod üretiyor, ancak geliştiriciler bunu hesaba katarak kullanıyor
- Simon Willison’ın görüşünde olduğu gibi, yapay zeka daha iyi kod üretmek için bir araç olarak kullanılmalı
- AGI ortaya çıktığında, ilk olarak en zor soyutlama problemlerini çözmek için devreye girecek; işbirlikçi editör kütüphaneleri gibi karmaşık sistemleri iyileştirecek
- Opus 4.6 kullanılarak Val Town için full-stack React framework’ü (vtrr) geliştirilen örnek tanıtılıyor
- React Router 7 ile ilgili çözülmemiş sorunları tek seferde ele aldığı ve 50 satırlık tek dosyalı bir demo ile karmaşıklığı zarifçe yönettiği belirtiliyor
- Bu da yapay zeka ile insan işbirliğiyle incelikli kod üretiminin mümkün olduğunu gösteriyor
Kodun geleceği ve biçimciliğin değeri
- Toplumun büyük kısmı “kod öldü” diye inansa da, bunun matbaanın icadıyla hikâyelerin sonunu ilan etmeye benzer bir hata olduğu söyleniyor
- Yapay zeka, kodlamanın sonu değil kodlamanın yeni başlangıcı anlamına geliyor
- Edsger Dijkstra, Tony Hoare ve Charles Babbage alıntılarıyla, biçimsel düşüncenin ve simgelerin sıkıştırma gücünün insan düşüncesini genişlettiği vurgulanıyor
- Dijkstra, biçimsel dil kullanmanın yük değil ayrıcalık olarak görülmesi gerektiğini söylüyor
- Hoare, “kusurları açıkça görünmeyen karmaşık tasarım” ile “kusurları açıkça bulunmayan basit tasarım” şeklindeki iki yaklaşımı karşılaştırıyor
- Babbage, simgelerin sıkıştırılmasının düşünceyi hızlandıran bir güç olduğuna işaret ediyor
- Sonuç olarak, kod ölmedi; aksine yapay zeka çağında daha da güçlü bir yaratıcı araç olarak yükseliyor
1 yorum
Hacker News görüşleri
Chris Lattner, Claude AI ile yazılmış bir derleyiciyi incelemiş ve devrim niteliğinde bir yön görmediğini söylemiş
Yapay zeka mevcut bilgiyi ortalama biçimde yeniden birleştirme eğiliminde olduğu için eleştirel düşünme ya da yeni paradigmaları kendi başına üretemiyor
İnsanlar mevcut uzlaşının dışına çıkabilirken, yapay zekada o uzlaşıya geri dönme yönünde bir kuvvet var
Sonuçta yapay zeka bir uyumcu(conformist) ve bu hem onun güçlü yanı hem de zayıf yanı
İlgili yazı
OAuth ya da SAML gibi karmaşık kimlik doğrulama kurulumlarını dokümantasyondan tek tek çözmek için saatler harcamak yerine, LLM hızlıca çalışan entegrasyon kodu üretiyor
Ayrıca yapay zekayı, onunla konuşarak düşüncelerimi toparladığım bir tür rubber duck debugging için de kullanıyorum
Bu tür konuşmalar, gerçek geliştirme deneyimi olmayan birinin kolayca yürütemeyeceği kadar karmaşık olabiliyor
Asıl endişe, yapay zekanın talebi azaltıp sektörde arz fazlası oluşturup oluşturmayacağı
Yeni iş problemleri ortaya çıkmaya devam ederse yapay zeka bir araç olarak faydalı olur, ama olmazsa yapay zeka olsun ya da olmasın işler azalacaktır
Sinir ağları özünde interpolation yapar, extrapolation değil
Yani eğitildiği alan içinde rafinedir, onun dışında ise öngörülemezdir
Wikipedia maddesi ve SolidGoldMagikarp örneği bunu iyi gösteriyor
Claude'un amacı yenilik üretmek değil, “yapay zeka bir derleyici yapabilir mi” sorusunu göstermekti
AlphaDev ya da AlphaEvolve gibi örneklere bakınca, keşif odaklı öğrenme ve bilgi birleştirme yoluyla yapay zekanın gerçekten yenilik üretme ihtimali de gayet yüksek görünüyor
Çoğu durumda kendi kendine öğrenen, dengesiz bir varlık değil; öngörülebilir bir araç isteriz
Yapay zeka çelişkili gereksinimleri toparlayıp tutarlı bir uygulama üretebiliyor
Örneğin “mavi mürekkeple 7 kırmızı çizgi çiz” gibi imkansız bir isteğe bile mantıksal bir karşılık verebiliyor
Claude'un gerçekten de “bu imkansız, dolayısıyla 0 çizgi çizmek dürüst cevap olur” demesi eleştirel düşünmeye örnek
“Yapay zeka yeni teknolojiler üretebilir mi?” sorusunda ben şüpheciyim
Yapay zeka mevcut veriye dayandığı için, yeni bir dil ya da framework çıktığında eğitim verisi yetersiz kalabilir ve bu da evrim hızının yavaşlaması riskini doğurur
Yapay zekayla kodlama, “tekerleği yeniden icat etme”yi azaltıp bizi NIH sendromundan uzaklaştırabilir
Eğitim verisi neredeyse hiç olmasa bile, dokümantasyonu okuyup kod yazabiliyor ve yeni denemeler yapabiliyor
Bir gün yapay zekanın da yaratıcı teknolojik sentez yapabileceği ihtimaline açık olmak gerek
Sonunda geliştiricilerin, yapay zeka eğitim verisine dahil olabilmek için para ödemek zorunda kaldığı bir dönem bile gelebilir
Örneğin skills.sh gibi platformlar, yapay zekaya yeni framework'leri öğretmek için bir skill sistemi sunuyor
Sadece dokümantasyon ve örnek kodlarla bile yapay zeka o framework'ü hemen kullanabilir hale geliyor
Koda karşı çelişkili duygularım var
İşte kod bir borç, ama aynı zamanda hobi olarak bir keyif de taşıyor
Star Trek'teki bilgisayar gibi, “sözlü olarak iste ve o halletsin” dünyasının yaklaştığını hissediyorum
Toplumun büyük bir kısmındaki entelektüel kaynaklar reklam teknolojilerine ya da gözetim sektörüne harcanıyor
Yapay zeka kodlamayı devralırsa, bu durum böyle bir yetenek yeniden dağılımı için fırsat olabilir
Ağaç yapılarında tombstone olmadan taşıma·silme·sıralama yapabilen bir CRDT geliştiriyorum
Claude Code kodu iyi yazıyor ama sürekli tombstone eklemeye çalıştığı için onu mantıksal kanıtlarla ikna etmem gerekti
Görünüşe göre yapay zeka henüz bu kadar ince yapısal anlayışı tam olarak kazanmış değil
Her yeni teknoloji ortaya çıktığında insanlar hep aşırı beklenti ve deney döneminden geçer
Teknolojinin sınırlarını bu süreçten öğrenmek insanın doğasında var
Ajan tabanlı programlama vaadi çok çekici görünüyor, ama sonunda herkes deneme yanılma yoluyla gerçeği öğrenecek
Ben “kod öldü” iddiasından çok, insanların soyutlama seviyesini bir kademe yükselttiğini düşünüyorum
Artık İngilizce spesifikasyon yazıyorsunuz ve yapay zeka kodu üretiyor
Ama tam özgüllük(specificity) gerektiğinde kod hâlâ daha kullanışlı
Fotoğraf düzenleme gibi: ince kontrol gerektiğinde doğrudan kendiniz yapmak daha iyi, ama çoğu durumda yapay zekaya bırakmak yeterli
Zamanla yapay zekanın istikrarlı ve güvenliği yüksek kodu insanlardan daha iyi yazacağını düşünüyorum
Simon Willison'ın dediği gibi, vibe coding'in gerçek değeri “daha hızlı” olmakta değil, “daha iyi kod” üretmekte
Birden fazla tasarım modeliyle prototip üretip, okunabilirlik·güvenilirlik·hata toleransı ölçütlerine göre yinelemeli iyileştirme yapılabilir
Artık kod incelemesinde “şu kısmı böyle değiştirelim” dediğinizde yapay zeka anında düzenliyor
Ama birçok meslektaşım sadece “kodun ortadan kalktığı bir dünya”yı bekliyor
Kısa süre önce Donald Knuth'un yapay zekadan bir ispat istediği ve yapay zekanın daha önce bilinmeyen bir ispat bulduğu yönünde bir haber vardı
Ama bu yeni bir keşiften çok, unutulmuş bir kaynağın bulunması olabilir
Bu da LLM'leri güçlü bir araştırma aracı yaparken, onları sanki yaratıcıymış gibi gösterebiliyor
Dragon Book ile birkaç ay içinde çalışan bir şey yapılabilir ve süreç içinde bütün ilkeler anlaşılır
Programlama dillerinin insanın niyetini sıkıştırılmış biçimde ifade etme araçları olduğunu düşünüyorum
Ama bazen doğal dil, niyeti daha doğru ve yoğun biçimde aktarmakta daha iyi olabiliyor
İyi soyutlama bu boşluğu azaltır; DSL'ler ya da ML/Lisp ailesi diller bunun örneğidir
Örneğin Electric Clojure tutorial gibi örneklerde, kod niyeti en iyi taşıyan şey olabilir
Sonuçta Wittgenstein'ın dediği gibi, “belirsiz bir resim bazen tam da ihtiyaç duyduğumuz şey olabilir”