佐理碑図書館 Salih Kütüphanesi

Ana SayfaYayınlarBen nasıl vibe coding yapıyorum?

Personal Writing

Ben nasıl vibe coding yapıyorum?

Sesli Okuma

AB etiketi: yapay zekâ ile üretilmiş içerikBu sesli okuma yapay zekâ ile üretilmiştir.

Vibe Coding; kendi fikrimce günümüzün temel yeteneklerinden biri haline gelmiştir, ve bilgisayar kullanan herkesin yakın bir gelecekte öğrenmesi gereken ve daha uzun yakın bir gelecekte kendi donanımında da pratikte sürekli kullandığı bir yetenek haline gelecektir.

Vibe Coding; kendi fikrimce günümüzün temel yeteneklerinden biri haline gelmiştir, ve bilgisayar kullanan herkesin yakın bir gelecekte öğrenmesi gereken ve daha uzun yakın bir gelecekte kendi donanımında da pratikte sürekli kullandığı bir yetenek haline gelecektir.

Bu makale; Benim günümüzde nasıl vibe coding yaptığım sorgusu üzerinde durur.

İsteğe bağlı ön gereksinim: Yazılımın Temellerini Bilmek

Benim fikrimce, etkili bir vibe coding, ancak yazılım ve kodlamayı hisseden (gerektiğinde acılı ve olumsuz, gerektiğinde mutlu ve olumlu yönde) ve konsepti bilen biri tarafından yapılabilir.

Bu yüzden yazılımın mantığı bilinmelidir, aslında çok da basittir; Bilgisayar’a sayacak bir bilgi vermek, hesaplama yaptırmak, fonksiyon (Girdi kabul eden, Girdiyi düzenleyen, ve girdiyi bir çıktıya dönüştüren işlem düzeni) yürütmek. Yazılım dilleri aslında bu işlemlerin veya işlemin ne kadar somutlaştırıldığı ve soyutlaştırıldığı üzerinedir, bunun sonucunda zaten dillere düşük ve yüksek seviyeli diller deniyor.

Python basit ve yüksek seviyeli bir dildir, sadece bir print komutu (önceden belirtilmiş bizim belirtmek zorunda olmadığımız bir fonksiyon.) ile komut satırına istediğinizi yazdırabilirsiniz, örneğin print(“Hello World”), “Hello World” dediğimiz cümleyi alır, print fonksiyonu işlemleri yapar, ve işlemin sonucunu komut sisteminde alırız. Kütüphaneler ile çok basit bir şekilde yazılımımızı genişletebiliriz, örneğin pillow, torch, mcp.

C ise daha düşük seviyeli bir dildir, önce stdio.h kütüphanesini dahil ederiz, printf, return gibi biraz daha uğraşırız. Düşük seviyeli diller, detaydan da anlayabileceğiniz üzere bize daha fazla kontrol ve hız sağlar.

Üzerinde çalıştığınız yazılım dilini veya mühendisler gibi yazılımcılık bilgisini, hatta yukarıda bahsettiğim detaylı açıklamaları dahi bilmemizi gerektirmese de vibe coding yaparken süreç içinde yavaş yavaş öğreniyoruz zaten, doğal oluyor.

Burada demek istediğim şey; Yazılım mantığı aslında bu kadar kısa özetlenebilir; Makineye sayacak bilgi vermek, “Şunu yap” direk diyemiyoruz, yapılması istediğimiz davranışa ulaşan parçaları birleştirip bir düzen oluşturmamız gerekiyor (Bu sürece algoritma denir).

İstediğini Bilmek

Bu aslında önceki bölüm ile bağlantılıdır, ne istediğini bilen, aslında yazılımın en temel gereksinimlerini biliyordur.

Vibe Coding yapabilmek için ne istediğini bilmek gerekmektedir, ne istediğimizi ne kadar biliyorsak, istediğimiz sonuca o kadar hızlı ve etkili ulaşırız. Örneğin bir chatbot yapmak istiyoruz, ve karşımızda Cursor diye bir yapay zeka asistanı var, rasgele bir büyük dil modeli seçili, sosyal medyadan gpt-4o çok iyi diye duyduğumuz için onu seçmişiz (bu model günümüzde bir seçenek olmayabilir, düşünce egzersizi için yine de bu örneği kullanacağım)

“Bana bir chatbot yap” yazdık diyelim. Aklımızda aslında bilgisayarımıza indirdiğimiz gemma-4-E4B-it-heretic ile iletişime geçmek var, internete bağlanan ve araştırma yapabilen bir bot yapmak istiyoruz.

Üretken Yapay Zeka (Büyük Dil Modelleri, bu kategoride Decoder-Only Transformers türüne aittir), eğitim veritabanında olmayan bilgiyi havadan üretemez, bilgisi ve önceden eğitim sonrası verilmiş ek talimatlara göre hareket edecektir. GPT-4o erken 2024 yılında çıkmıştır. Bu dönemde ChatGPT ve API’si ağırlıklı olup, GGUF gibi formatlar çok duyulmamıştı (GGML bile daha yeni GGUF olmuştu).

Bu yüzden en iyi ihtimalle OpenAI API’sini kullanan çok basit bir chatbot girdisi verecektir. Oysa ön araştırmasını yapan biri;

Gerçekten bunu sıfırdan yazıp yazmaması konusunu (son llama-server sürümleri isteklerimizi karşılar. GGUF dosyasını çalıştırmamız için llama-server/llama-cli zaten gereklidir) bilir, KV-Cache disiplinini bilir, MCP nerede kullanılır bilir, REACT loop kavramını bilir. Yani parçaları bilir; çünkü ya araştırmıştır, ya da günümüzde yaygınlaşan şekliyle, başka bir asistana araştırtmış ve sonucu okuyup kullanması gereken parçaları biliyordur. Yani kafasında algoritma ve işleyiş kurulmuştur.

Kişi, planını araçlar ve bilgilendirmeler ile asistana sunar, ve asistan bu planı uygular.

Sabır

Vibe Coding sabır gerektirir, ama günümüzde bu alanda işler giderek kolaylaşmakta ve bu sabır sinire karşı değil, üretici bir sabıra dönüşmeye başlamıştır, tıpkı bir hedefe ulaşmak için çalışmak gibi.

Önceki bölümde gpt-4o’dan bahsetmiştik, eğer bilinçli kullanıcı, araçlarını bilmiyor ve düzgün kullanmıyor ise, tıpkı elle olan yazılımda olduğu gibi tıkanır. gpt-4o talimat takip etmesi zayıf bir modeldir, “gemma-4-E4B-it-heretic diye bir model yok, daha iyisi var ama; gemma-7b” diye kendi bilgisini kullanıp bizi düzeltme olasılığı yüksektir ve ben kendim defalarca aynı dönem çoğu modelle yaşadım.

Günümüzde, model sağlayıcılar ve yazılımlar (Claude Code gibi), talimatları daha sıkı takip ettirir ve bizimle “senin bilgin yanlış, en yeni model DialoGPT!” gibi saçma sinir edici kavgalar çıkarmaz, gerekirse eski bilgiyi düzeltmek için alakalı kaynakları bile araştırır.

Ama yine de sabır önemini korur ve korumaya devam edecektir; asistan hatalar yapacaktır, burada yazılım bilgisi bize yardımcı olur (token ekonomisi konusunda. Model sağlayıcılar token başına bizden ücretlendirme yapar, yerel ve ücretsiz çalışmalarda ise KV-Cache mantığı dolayısı ile performans ekonomisini etkiler), kendimiz düzeltebiliriz, veya hatayı bulup (asistan yardımı ile olsun olmasın) sabırla düzeltiriz. Bu kavrama yazılımda “debugging” denir.

Diğer Gereksinimler

Aslında gereksinimler bu kadar; Ne istediğini bilmek ve sabır. Geri kalanlar benim fikrimce süs ve disiplin meseleleri. Örnek vermek gerekir ise;

- Git bilgisi. Github bilgisi. Versiyon Kontrolü. Ben şahsen büyük projelerimde ve düzensiz bir şekilde kullanıyorum, Git kullanmak, yedek almak gibi düşünebilirsiniz. Asistan veya siz hata yaptığınızda geri dönmenizi sağlar.
- Mühendislik ve Güvenlik bilgileri; Mesela yazılımda API anahtarlarını tutmamak, .env dosyasında tutmak, .env dosyasını insanlar ile paylaşmamak (ve git kullanılıyorsa bundan emin olmak için .gitignore kullanmak).
- Model tercihi, yazılım tercihi; Claude Code, Cursor, Codex, Gemma 4, Kimi K3, Claude Opus, Claude Sonnet, Claude Fable, işinizi ve ekonominizi ne uyarsa onu kullanın.

Bazı insanlar, ve mühendislerin bütününe yakın bir kısmı için bunlar hayati meselelerdir. Ben şahsen umursamıyorum, benim yaptığım gibi umursamamanızı tavsiye etmem.

Benim kendi çalışma mantığım

Bu gereksinimler doğrultusunda, benim vibe coding aşamam aslında belli; Önce ne yapacağımı belirliyorum, araştırmamı yapıyorum, yanında asistanlardan birine araştırtma yaptırıyorum, daha sonra asistana amaca ulaşmak için gerekli araçları soruyorum, eğer yapay zeka gerekiyorsa modeli kendim araştırıyorum, çünkü deneyimime göre asistanlar asla yeni yapay zeka modellerini bulamıyor (neden böyle bilemiyorum). Yazacağım yazılımın konusunu, araçları, ve görsel şeklini belirledikten sonra asistana tam olarak ne yapmak istediğimi söylüyor, planımı sunuyor ve ilk temel sürümü yaptırıyorum. İlk temel sürüm basit ve temel özellikleri içeren tam bir prototip oluyor.

Bu prototipi daha sonra dallara ayırıyor ve detaylandırıyorum, bir özellik üzerinde çalışıyorum ve özellikleri modüler ve yeniden kullanılabilir tutmaya çalışıyorum (günümüzde asistanın içerik uzunluğu bir sorun değil, ama okunabilirlik açısından, temiz kod olması açısından, ve hafiflik açısından iyi oluyor).

Bu yöntemle istediğim sonuca bir süre sonra ulaşmış oluyorum, hemen olmuyor tabii ki, ama bilgi, bilinç, ve sabır olduğu sürece prototip aşamasından yapım aşamasına, debugging aşaması dahil, açıkçası benim için keyifli oluyor, ama ben asistanlar popülerleşmeden önce de gece yazılım yapmaya başlayan ve bu süreçte aralıksız çalışıp sabahlayan biriydim.

Vibe Coding yapıyorum ama, bu niye yazılımla ilgilenmeyen birini ilgilendirsin?

Bu yazıyı aslında herkes için yazdım, ve yazıya herkesin bu alanla ilgilenmesi gerekeceği üzerine durdum. Burada yazılım örneğini verdim ama; ben açıkçası yakın bir gelecekte bilgisayarlarda çok küçük ama yetenekli modellerin kurulu olacağına, ve özellikle yazılımcı olmayan insanların bu modeller ile etkileşime geçeceğine inanıyorum.

Örneğin ffmpeg, çok basit bir araç, ama komutları bana çok karmaşık geliyor. Asistana “şunu nasıl yapabilirim” diye soracağız, asistan yazılımın dokümanlarını bir şekilde (kurulu kaynak kodunu baz alarak örneğin, veya yanında gelen dokümanlar ile) okuyacak ve komutu bize verecek, biz de kontrol edip çalıştıracağız.

Çok pratik ve günlük bir örnek.

Bu dediğim aslında günümüzde hafifçe yapılmaya başlandı, ama bulut hizmetlerine bağlanıyorlar, benim tahminim yerel olacağı.

Sonuç

Etkili vibe coding mantığı ve benim de takip ettiğim mantık aslında çok basit; Temelleri ve araçları bilen, araştırma yapan, bilgiyi uygun zamanlarda ve yerlerde kullanan, sabırlı ve bilinçli bir kullanıcı olmak.

Okuyucu Yorumları

Henüz yorum yok.

Yayınlara dön