okunma
Selamlar Dostlar,
Yapay zekanın günümüzde çokca artması ve özelliklede yazılımla direk iç içe olması sebebiyle bir çok kelime literatüre girdi. Bugün çokca duyulan, bizzat kendimde içinde bulunduğum Vibe Coding'i elimden geldiğince değinmek istedim. Ayrıca biraz temele inip yapay zekalardan da bahsetmemiz gerekecek tabiki.
Vibe coding, yapay zekâ destekli yeni bir programlama yaklaşımı diyebiliriz. Bu kavram, Andrej Karpathy (OpenAI kurucularından) tarafından Şubat 2025’te ortaya atıldı ve hızlıca trendler arasına katıldı. Temel olarak geliştiricilerin ve amatörlerin kod yazma işinin büyük bir bölümünü, büyük dil modelleri (LLM) gibi yapay zekâ araçlarına yaptırmasını ifade ediyor. Normalde elle yazılan kodlar yerine, AI model ve araçlarına (Bir çok araç var artık) sohbet eder gibi istekler ve yönlendirmeler yaparak kodlara dönüştürmesini istiyoruz denebilir.
Kısaca Sohbet ederek Kod yazmakda diyebiliriz. Programlamanın sadece kod yazmak olduğunu düşünenler için aslında oldukça keyifli ve güzel. Zorluk, artı ve eksi yanlarına birazdan değineceğiz. Ama kısacası sohbet eder gibi bana bunu üret bana şunu yap dediğinizde üretim yapan araçlar. zaten resim, metin, ses yada her ne istiyorsanız üretebiliyorsunuz bu araçlarla. Bir çok araç, model ve yapay zeka türü var. Burdaki yaklaşımda ise kod istiyorsuz, size kodlarını verip direk çalıştıran bir yapay zeka. 0 dan hiç bilgisi olmayan birinin bile girip "şu şu özelliklerde, bu değerlerde, şu renkte bir site yap" yazmak çokda zor değil sonuçta. Sohbet ederek bir site, uygulama geliştirebilirsiniz. Kullanıcı gelen kodu genelde olduğu gibi kabul eder ve değiştirmek istediği şeyi tekrar yazarak düzeltmesini ister. Sorun/Proje tam istenilen noktaya gelene kadar sohbet ederek kod yazmaya aslında Vibe Coding denebilir.
Burada aslında biraz detaya girmemiz ve yapay zekalar hakkında kısa bir bilgi vermemiz lazım. Yapay zeka olarak bir çok dil, model ve tür var. Ancak temel olarak kelime, görsel, video, ses, agent gibi temel türler var diyebiliriz. Geri kalan tüm modeller bunların üzerine inşa ediliyor, geliştiriliyor. 0 dan oluşturulan modellerde elbette var ama gördüğünüz aslında bir çok araç bunlardan üretiliyor. Şimdi örnekle daha iyi anlaşılacak sanıyorum;
Piyasada bulunan bir çok arkaplan silme, görseli büyütme/genişletme, anime karakterine dönüştürme aracı aslında herkesinde duyduğu ve bildiği Stable Diffision, Flux, Gibi modeller'in geliştirilmiş, model yüklenmiş hali diyebiliriz. İstisnalar olsada çoğu bunun üzerine inşa edildi yada baz alındı.
Aynı şekilde piyasada gördüğünüz içerik oluşturma, metin yazma, tez oluşturma gibi bir çok yapay zekada ChatGPT, Claudegibi yapay zekaların altyapılarını kullanarak oluşturuluyor.
Haliyle kod yazmakda bir metin tabanına giriyor ve ağırlıklı olarak Claude ve ChatGPT kullanılıyor alt yapısında. Son zamanlarda Deepseek, LLAMA, Grok da kod konusuna yoğunlaşarak buralara girmeye başladı, hatta daha fazlasıda var ve gelmeye devam edecek gibi.
Özetle bir yapay zeka neyin üstüne inşa edilir ve kurulursa, bu araçlarla bunları daha ileri taşıyarak işlevsel hale getiriliyor, dahada geliştiriyor ve gelişmeye devam edecek.
Şimdi bu bilgiye dayanarak her aracın artı ve eksilerinin en büyük sebepleri(- lerde detaya girdim) burdan kaynaklandığını bilmemiz gerek, detaylarına değineceğim birazdan. Oluşan neredeyse tüm kod yazma araçlarında az önce yukarıda bahsettiğimiz Claude başta olmak üzere ChatGPT kullanılıyor. Diğer araçlarla sıralamalara bakıldığında en çok bunlar var. Peki bu araçlar neler?
Yine burada da araçları Code Agent ve IDE olarak ayırmamız lazım. Aslında tam bu şekilde ayrılırmı bilemedim ama ben bu şekilde ayırıyorum.
Code Agent olarak; Claude, ChatGPT, Bolt, Loveble, Replit, V0 ve daha sayamadıklarım...
IDE olarak ise ; Github Copilot, Cursor, Windsurf, Trae, Augment, Cline ve daha sayamadıklarım.
Şuana kadar bu araçların neredeyse tamamını bir çok projelerimde kullanarak denedim. Kendimce deneyimlerimi paylaşmak ve detaylarına, artı ve eksilerine değinmek istiyorum. Hatta ilerleyen süreçde belki videolarda yapabilirim istek olursa, şimdilik yazımızla devam edelim.
Öncelikle Code Agent larda en büyük sorun genelde kodları sizin kopyala/yapıştır mantığı ile yapmanız. "Bukadarınada üşenilirmi kodu veriyor zaten" demeyin. Zira verdiği kodlar başta 2 3 satır yada 1 sayfa olacağı için basit gözükebilir. Düşününki satırlarca uzun kodlar ve klasörlerce dosyalarımız var. Neyin nerede olduğu, nereye kopyalayacağınız, nereleri tam anlamıyla değiştireceğinize kadar bakmak ve düzenlemek bir yerden sonra "aman neyse ben kendim yazarım" demenize sebep olacak. Denendi ve onaylandı.
Code Agent olarak çalışan Bolt, Loveble ve Replit bu konuda biraz daha farklı çalışıyor. Tüm kodları kendi klasör yapısı altında dosyalar halinde(index.html gibi) tamamlıyor ve çalışır halde önizleme(preview) haliyle birlikte görebiliyorsunuz. İşiniz tamamlanana kadar şunları, bunları ekle diyerek geliştirmeyede devam ediyorsunuz. Tamamlandığında (Tamamlanırsa tabi) projeyi indirerek hazır bir ürün elde ediyorsunuz. Burda kritik nokta "Tamamlanırsa", çünkü projenizin büyüklüğüne göre hem süreç, hem karmaşa, hemde maliyeti artacağı için yazılımdan anlamayan birinin proje tamamlaması çok zor bence. Detaylarına birazdan değineceğim zaten artı ve eksilerine hatta bilen ve bilmeyen arasındaki farklara. Şimdilik devam edelim.
Ide olarak çalışan Github Copilot, Cursor, Windsurf, Trae ve Augment e gelecek olursak, buradaki mantıkda yine Claude, ChatGPT, yada diğer yapay zekaları kullanarak kod yazdırmak. Ancak burada kopyala yapıştır mantığına gerek yok çünkü localde(bilgisayarınızda) varolan IDE üzerinde çalıştığı için klasör,dosya ve kodları otomatik olarak ekliyor, düzenliyor ve düzeltebiliyor. Ama burada herşeyi kendi yapmadığı ve terminal kodlarıda işinm içine girdiği için biraz daha yazılımdan anlayan kişilerin bileceği sonuç ve çıktılarımız var. Her ne kadar yönlendirmeler olsada bir React, Flutter, Laravel projesinin çalışması için komut satırına bir kod yazmamız gerektiğini yazılımdan anlamayan biri elbette bilemez. Sizi her ne kadar uyarıyor olsada "bunu ben nasıl çalıştırıcam şimdi" demeden muhtemelen canlı sonucu göremeyeceksiniz. Yazılımdan anlayan kişilerin ellerinde ise bu araçlar çok işlevsel asistanlara dönüşüyor. Elinizin altında herşeyi ve her kodu yazabilen bir asistan var. Ancak işi bilmiyorsanız bu asistan sizi nereye kadar götürebilir? Aslında asıl sorunda tam burada ortaya çıkıyor...
Biraz daha açalım ve örnekleyelim. Bilen ile bilmeyen arasındaki farklar dahada ortaya çıkacak bu örneklerle.. Eğerki o milyon tane "yazılım bitti, 2 kodla site yaptım, bir promptla uygulama yaptım, {..} uygulamasını clone istedim çıkardı" gibi video ve içerikleri gördüyseniz büyük bir yanılgıya düştünüz. Aslında bu biraz üzücü çünkü yazılımcıların değerini düşüren ve algı yaratan şeyler bunlar. Zira varolan birşeyi clone unu yapmak, basit bir todo app hazırlamak, yılan oyununu yapmak zaten her zaman kolaydır. Yazılıma başlarken bile örnek projeler her zaman bunlar olmuştur. Çünkü kolaydan başlamak gerekir. Bu yazılımcılar içinde her zaman kolaydı. Hazır tamamlanmış, algoritma, mantık ve matematiği dökülmüş birşeyi tekrar üretmek zaten çokda zor değil. Asıl sorun bunu işlevsel bir şekilde dökmeye geldiğinde başlıyor. Eğerki bu yılan oyununuza bir lider listesi veya üye kaydı gibi şeyler eklemeyi isterseniz ve özelliklede oyunla entegre çalışmasını istediğinizde büyük ihtimalle binbir hata ve sorunla karşılaşacaksınız. Yada Amazonun klonunu yaptırımak değil sorun, onun admin paneli ve ürün/üyeliği yönetmek asıl sorun burada. Promptlar ile tekrar tekrar düzeltmek üzerine uğraşacaksınız. Hatta birşeyi düzeltirken başka şeyleri bozması... "Orayı değil aptal şunu düzelt demiştim" bağırış ve çağırışlar içinde birşeyleri düzeltmek.. İşte şimdi yazılımı biraz anlamaya başladınız eğer bilmiyorduysanız.
Göreceğiniz üzere yazılım dediğimiz şey sadece kodlardan oluşmuyor. İçerisinde bir çok bilgi ve birikim var. Yazılım dediğimiz şey içerisinde matematik, algoritma, mantık(özellikle mantık), performans, temiz kod prensipleri gibi bir çok şeyide bilmeniz anlamına gelmekte.
Yazılımdan anlayan biri hangi teknolojileri kullanacağını, hangi mimaride gideceğini, algoritmasını, altyapı ve temellerinin nasıl olacağını zaten bildiği için yapacağı projenin mantığını rahatça kurabilir. Haliyle yapay zekayada neleri istediğini, nasıl istediğine kadar rahatça dökebilir. Herhangi bir hata yaptığında "şurası böyle olmalı", yada tekrara düştüğünde (en çok bu sorun oluyor) "bu kod zaten var bunu düzelt baştan oluşturma" diyerek temiz kod üretebilir. Bazen Benzer ve çakışan kodlar yüzünden saçma hatalar olabilir, bunları kendi tespit ederek "bak bunu yapmışsın ama bunlar çakışıyor sorun bu düzelt" diyebilir. Yazılımdan anlayanlar için ameleliği ortadan kaldıran muazzam bir olay bence.
Ancak yazılımı bilmeyen biri herşeyi yapay zekaya bırakmış olur. Ne kadar doğru teknolojiler kullandığı, ne kadar doğru ilerlediği, ne kadar tekrar yaptığına dair bir fikri olmayacaktır. Bir fonksiyonu veya yapıyı defalarca kullanabilir, çakışan benzer kodlar yüzünden bir sürü hata alır ve sebebinide çözemeyebilir. Çünkü yapay zeka burası hatalı demez. Belli noktalarda çözüm bulabilirken bazen tekrar düşebilir veya tam algılayamadığı için başka şeyleri de bozmaya başlar. Özetle bir projeyi çıkarmak için çok daha fazla zaman harcamanıza rağmen tam istediğiniz şeyi çıkaramamak bir yana, bir ürün çıkarsanız bile ne kadar performanslı ne kadar kontrol edilebilir ve güvenli bunu bilemezsiniz. Ancak net birşekilde söyleyebilirimki bu araçları kullanmak Öğrenmek için çok güzel bir yöntem bence. Bilmeyenler ve mantığını kavramak açısından kesinlikle güzel olduğunu düşünüyorum şahsen.
Bu araçları kullanmanın artı, eksi ve en sorunlarına gelecek olursak;
Artıları;
- Bana göre en büyük artısı kod ezberlemeyi ortadan kaldırması. Ezberi kötü olan biri olarak sürekli şu kod nasıldı bu fonksiyonu nasıl yapsam diyen biri olarak asistanın beni yönlendirmesi inanılmaz rahatlatıyor beni. Eskiden Stackoverflow gezerek kafamda oturan şeyleri burada tek tıkla yapabiliyor olmak harika.
- Yeni dilleri denemek istiyorsanız elinizin altında bir asistan var. Kodu bilmediğiniz için dökümana bakmanıza gerek yok söyle yapsın, düzenlemeleri ve kontrolleri sen yap yeterli. Genelde algoritma ve yapı aynı, syntax yapısı değişiyor genelde kodlar arasında.
- Temel yapıyı kurmasını isteyebilirsiniz, ancak doğru olduğunu kanıtlamaz tabiki kontrol ederek düzeltmeleri yapmanız gerek yine. Doğru yapıyı yaptıktan sonra ise amelelik taraflarını asistanınız size yapıyor zaten.
- Bir planlama, klasör yapısı ve veritabanı yapısını kurmasını isteyebilirsiniz. Düzeltmeleri düzgün bir şekiled yaptıktan sonra agent modu geri kalan bir çok şeyi sizin için hallediyor ve temelleri atıyor. İllaki düzeltmeler gerek ama temel yapı düzgün olunca geri kalan şeyler inanılmaz hızlanıyor.
- Backend, Frontend, Veritabanı sorununuzu muhtemelen giderecektir. Fullstack bile olsanız belli noktalarda eksikleriniz olduğu için istediğiniz sonucu alamayabiliyorsunuz. Eksik olduğunuz kısmı mutlaka dolduracaktır asistanınız.
- Otomatik doldurmalar fazlasıyla işe yarıyor. Elle kod yazıyorsanız bile önerileri çok faydalı olabilir. Bu uzun zamandır var gerçi ama yapay zeka daha ileri taşıdı.
- Çok daha hızlı başlangıçlar yapabilirsiniz. Agent modu temeli kurma konusunda başarılı, hatalı kısımları illaki olsada düzelttikten sonra hızlı bir başlangıç kazanıyorsunuz.
- Hata çözümleri konusunda deneyimli bir yazılımcı kadar başarılı bence. Genelde tek seferde şurası sorunlu diyebiliyor. Her ne kadar bazen saçma yerleri düzenlemeye çalışsada çözüme ulaşma noktasında başarılı.
- Alternatif çözümler, öneriler konusundada gayet iyi bence. Örnekle açıklayayım yine. Websocket gerektiren bir işlemim için şu şu yöntemler ile geçiştirebiliriz dedi ve çok mantıklıydı.
- Güncelleme gelen, değişen ve güncellenen yazılımların Döküman ve sitelerden linkler vererek yapay zeka güncel olmasa ve bilmese bile öğretebiliyorsunuz. Normalde bunun için yapay zekanın eğitilmesi gerek, ancak bununla geçicide olsa öğrenebiliyorlar.
- Resim yükleyerek soru sorma ve isteme işinizi kolaylaştırabilir. Bazen bir resimdeki tasarımı direk isteyebilir, yada bak burda sorun var dediğinizde çok hızlı çözümler üretebiliyorlar. Her zaman değil bazen kötüde olabilir ama işlevsel. (MCP ile dahada güzel sonuçlar olabiliyor hatta)
- Anlamadığınız bir kodu yada kafanıza takılan bu nasıldı doğrumu dediğinizde noktalara hızlıca cevaplar veriyorlar. Özellikle
- Zaman kazandırabilir. Bazı projeler için inanılmaz hız kazanabilirisiniz.
Eksileri ;
- En büyük sorun unutması diyebiliriz sanırım. Proje yapısını ve bağlamını unutuyor.
- Yapay zeka araçlarını anlatırken en büyük sorunlardan birinin bu altyapıları kullanmak olduğunu söylemiştik. Bunun sebebi bu araçların sizi kısıtlaması. Her bir aracın token, giden ve gelen dönüş limitleri vardır. Bu yüzden tam bir kod yapısını tek seferde okuyamadığı noktalarda yada yazamadığı noktalarda yetersiz kalır. Haliyle hatalı sonuçlar üretir yada alırsınız. Limitlere takıldığımız sürece, kendi aracımız olmadığı ve localde çalışmadığımız sürece bunu aşma şansımız yok.(en azından şimdilik)
- Maliyetler, genelde sabit olan yerler var ancak token asla yetmeyecek ve daha fazlası gerekecek. Bu yüzden yavaşlatılacaksınız. Sınırsız token veren biryer asla bulamayacaksınız çünkü firmanın zararı demek buda.
- Localde çalıştırayım dersenizde çalıştırabilecek bir ekran kartınızın olması gerek, yada sunucu alacaksınız oda saat başı maliyet demek.
- Her güncelleme ile daha kötüye gidebiliyorlar. (direk firma söylemeyeceğim ama kötüye gidenler var.) Buda daha çok hata ve sorun oluşması demek.
- Bazen server hatası diyip tekrar tekrar sizi durduracak. (Çok sık sorgu yaptığınızda genelde oluyor.)
- Özellikle büyük projelerde çok riskli. Kod yapısını anlamayabilir ve kendi kafasına göre kod üreterek varolan yapıyı bozabilir. daha kötüsü silebilir çalışan şeyleri.
- Kodun anlaşılmasını zorlaştırabilir (Birden fazla yerde birden fazla kod yazıp düzeltirken gözden kaçan kodlar olabilir ve zorlaştırır)
Sorunlar;
- Bu araçların şuanda en büyük eksisi kodları unutması diyebiliriz. Bilen biri için bile problem çünkü sürekli zaman kaybına ve tekrara düşürüyor. Bir yerden sonra tamam neyse ben elle yazarım diyorsunuz. Bilmeyen biri içinse mutlaka tekrarar düşmek ve hatalar demektir.
- Varolan ve çalışan kodu bozması. Genelde yine unutması ile alakalı olarak çalışan şeyleri bozması. Basit projelerde neyse düzeltiriz diyebilirsiniz, ama bir süre sonra okadar komplike ve çok fonksiyon oluyorki bir hata diğer bir çok şeyi bozabiliyor ve hatta uygulamayı bile bozabiliyor tamamen.
- Çözüm üretme kısmında gereksiz yeni şeyleri eklemesi. Projede varolan bir yapı ve eklenti varken başka birşeyi indirip onunla çözüm oluşturmaya çalışması. Gereksiz şişirmeye başlıyor. Zaten varolan çalışan birşey var, gereksiz yere hem yer dolduruyor hemde performans dan götürüyor.
- Talimatlar vermenize rağmen uymaması. Özellikle belirttiğiniz birşey vardır örneğin, "bunu mutlaka türkçe dilinde yap" Belli bir süre sonra tekrar ingilizce yazmaya başlar. gibi, bir örnekti sadece. Tekrarlara çok düşüyor olması diyebiliriz.
- Bazı araçlarda kural dosyaları vardır (Cursor,Windsurf,vs) özellikle belirttiğiniz şeyler vardır ama bunuda yine dinlemez ve farklı şeyler üretmeye başlar. Örneğin tailwind kullan dersiniz, bootstrap kullanır, ancak projede bile yoktur çalışmaz. Yada daha kötüsü bootstrap ı script olarak ekler çalışır ama script farkedip kaldırdığınızda tüm tasarımın bootstrap olduğunu farkedersiniz bozulur siteniz. Gibi gibi hatalar.
- Kontrol aşamalarındaki sorun, genelde birşeyleri düzeltirken kodları tekrar inceler ve düzelteceği kodun haricinde gözüne kestirdiği bir kısmı daha keser. Yanlış düzeltme sonucu çok sorun yaşayabilirsiniz.
Sonuç olarak Yazılım dünyası farklı bir yere evriliyor gibi duruyor. Ancak tam anlamıyla herşeyi bir araca yaptırmanın mümkün olmadığı kanısındayım(en azından şimdilik). Tamda bu sebeple aslında Programcılığın neden bitmeyeceğini, bunların sadece araç olduğunu, ameleliği ortadan kaldırmak ve işimizi kolaylaştırmak olduğunu anlamamız gerek. Ne bununla savaşmaya gerek var nede herşeyi bununla yapabileceğinizi düşünmenize gerek var. Bunlar araç, kullanın ve işinizi kolaylaştırın !
Umarım yazıyı beğenmişsinizdir ve faydalı olmuştur. Oldukça uzun ve yorucu bir yazı oldu zira.
Keyifli Kodlamalar
Ümit 'RecLast' Eski
Yorumlar
0 Yorum