Command Palette

Search for a command to run...

Vibe coding tanımlaması eskidi. Yaşasın vibe programming?

Yayınlama tarihi:
Okuma süresi:5 dk okuma

Açılın 80x25 siyah terminal ekranların, USB olmayan klavyelerin hatta mouse'un yaygın olmadığı geçmişten geliyorum. O günlerde "programcı" (programmer) tanımlaması daha fazla benimsenmiş, "kodcu" (coder) kavramları alternatif olarak kullanılıyordu. En azından kurumsal dünyalardan bir esinti ile üzerimize biraz Java biraz Microsoft soslu "Developer" örtüsü atılana kadar.

Bu yazı ile birlikte tarihteki desenlerin tekerrür ettiğini, vibe coding devriminin de bizi yeniden programlama kavramına döndürmesi üzerine bir şeyler karalamaya çalışacağım.

Kodlama?

Basitten başlayalım...

Kod, herhangi bir elektronik cihazın bir işlevinin tetiklenmesi için kullandığımız ifade veya ifadeler aslında. Aslında bir "assembly kodu" örneği verirsem tam cihazlar (donanım) ve programlama dilleri dünyası arasında köprü olacak diye düşünüyorum, buyrun:

MOV AH, 09h       ; DOS fonksiyonu: string yazdır
MOV DX, msg       ; DX'e string adresini yükle
INT 21h           ; DOS interrupt'ını çağır (çalıştır)

MOV AH, 4Ch       ; DOS fonksiyonu: programdan çık
INT 21h           ; Çalıştır

msg DB 'Hi!$'     ; Yazdırılacak string ($ = sonlandırıcı)

Bunları bu şekilde peşi sıra yazmak bir "kodlama" eylemi. Yaptığımız işin çıktısı da "kod"un kendisi.

Programlama?

Programlama ise daha sonuç odaklı bir kavramdır. Evinizdeki fırını, buzdolabını kodlayamayabilirsiniz ama programlayabilirsiniz.

Zira programlama bir cihazı istediğiniz ayarlara getirmek, istediğinizi yapacak hale getirmekle ilgili bir eylemdir.

"Fırını programlarken derece ayarını kullanabilirsiniz" dediğimde muhtemelen okurken hayal kırıklığı yaşayacaksınız, ama sıkı durun. Zira o fırının size verdiği arayüzde 2-3 dinamik varken bir bilgisayar sistemini programlamak taş devrinden uzay çağına zıplamak kadar arada mesafeler olan bir konu. Örneğimi daha çok konunun anlaşılması için indirgiyorum.

Bunu daha çok matematik gibi düşünün, ister 2 ile 2'yi toplarsınız, isterseniz bugün 3d modellere can veren, yapay zekayı mümkün kılan çok yüksek işlem kapasiteleri gereksiniminde olan karmaşık hesaplar yaparsınız.

Programlamada da bir bilgisayar sistemini "istediğiniz çıktıyı elde edecek şekle getirmek" için tonla dinamiğe hakim olup bu dinamikleri isteklerinize uygun "hizalamanız", "ayarlamanız" gerekebiliyor.

Programlama yalnızca bilgisayar sistemini programlamakla kalmıyor, "veri katmanı", "kuyruk sistemi" gibi yeni "soyut" kavramlar ve katmanlar oluşturup onları da programlamayı mümkün kılıyor.

Katmanları oluşturdukça, bunları yapacağınız programın çalıştığı düzleme göre (bu cihazlar arası dahi olabilir) konumladığınızda "mimari" bir tasarım;

...Hatta programlamayı bu ölçekte belli bir hesaba, kitaba, literatüre, anlayışa uygun "okullu" bir biçimde yaptığınızda da "mühendislik" yapmış oluyorsunuz.

Kodlama ve Programlama farkı?

Artık pek kullanmasak da, bir nesil önce "kodcu" dediğimiz profil daha çok hobi için kod yazan, sistemlerin geneline hakim olmasa da dergiden okuduğu kod parçalarını alıp kendi bilgisayarında çalıştıran, kendine ufak alarm, takvim yazılımı filan yapan, bunları özelleştiren insanlardı. Biliyorum çünkü ben de onlardan biri olarak başladım! Hatta bana script kiddie dahi diyebilirdiniz ki, o kavrama hiç girmeyeceğim. Meraklısı araştırabilir.

Programcı ise hobinin ötesinde bilgisayar sistemine hakim, kendisi bir şeyler üretebilen, kafasında bir çözümü oluşturup bunu "kodlama" aracılığı ile gerçekleyebilen profillerdi. Programcılık da "developer" (geliştirici) kavramı ile unutuldu, kullanılmaz oldu. Bir gün belki developer kavramını da işleriz.

Konunun özüne dönüp, daha da özetlemek gerekirse:

  • Kodlama = ifade üretimi
  • Programlama = davranış tasarımı

Peki bugün?

Bugünse herkesin dilinde popüler olan bir kavram var "vibe coding". Vibe coding Cursor'un etkisiyle önce IDE'nin içinde zuhur etti ve bazı kodlama eyleminin tam ortasında comment olarak yazdığımız işlevleri auto-complete/intellisense (Cursor Tab) benzeri koda dönüştürmeye başladı. Yine Cursor'un Composer'ı ile birlikte yavaş yavaş içinde kodun içinde AI aracı görmekten, AI aracı içinde kod görmeye geçiş yaptık.

Vibe coding kavramının "Yazılım Mühendisliği"nin antiteziymişcesine plansız, programsız, "tınıya, kafamızın estiğine göre" kod çıkartmak olduğunun farkındayım. Bir tarafta jazz aritmetiği varken diğer taraf punk'ı işaret ediyor. Çıktı istenene yaklaşsın yeterli. O nedenle kalkıp "Vibe coder"lık eylemine zaten ne inşa ettiğinin gayet farkında olan kitleyi katıp kavramı genişletmeyeceğim.

Kaldı ki geçmişinde yıllarca harıl harıl kod yazan biri olarak vibe coding'e düşman bir gatekeeper olduğumu düşünüyorsanız yanılıyorsunuz. Bilakis o kodları yazarken TDD nasıl bir "yöntem" ise, vibe coding'i de "niyetin koddan önce geldiği" bir yöntem olarak görüyor ve bol bol kullanıyorum.

Benim noktam yalnızca araçların gelişmesine işaret ediyor. Vibe coder'lığı mümkün kılan, gelen prompt'ların modelleri Tool Use dediğimiz özelliği de kullanarak agentic döngüde sonuca doğru ilerletmesiydi. Ancak hem "Tool Use"a giren araçlar, hem de modellerin dağarcığı o kadar genişledi ki... Cursor örneğinde işaret ettiğim gibi promptların karşılığı olarak modeller "kod" dışında da yetenekler sergileyebiliyorlar.

Dolayısıyla artık "vibe" yaklaşımıyla yalnızca kod üretmek veya değiştirmek değil, gelişen araçlar sayesinde bilgisayarı istediğimiz çıktıyı üretmek üzere programlamak için kullanabilir hale geldik.

Basit ve İleri Örnekler

Şöyle iki örnek vereyim, biri teorik diğeri ise daha sektörden:

Bugün herhangi bir ortalama düzey agentic araç kullanılarak "internetten süperkahraman temalı 10 resim bul, bunu John Williams'ın bestelerine yakın bir arkaplan müziği ile video haline getirip kuzenime mail at" prompt'unun başarıya ulaşma olasılığı oldukça yüksek. Burada kod üretmiyoruz. Aslında bilgisayarın imkanlarını istediğimizi gerçekleştirecek şekilde programlıyoruz. Belki bir script yazıyor, belki tek seferlik belki birden fazla kez çalışacak halde bir kurgu ile içinde download'dan ffmpeg'e, web aramasından e-mail çağrısına birçok farklı bileşenin kullanılması, konfigure edilmesiyle ilgili karmaşık bir işi halletmemiz kodlamanın ötesinde bir kapsama giriyor.

Diğer örnek ise, şu anda çalıştığım startup'da Opus 4.5'ü Claude Code / Kiro ile kullanan ancak daha önce Kubernetes tarafında elini kirletmemiş çalışma arkadaşlarım mevcut. Her ne kadar muazzam geliştiriciler olsalar da, operasyonel olarak Kubernetes önlerine engel koyduğu anda o Kiro penceresine "neden deploy ettiğimde no healthy upstream alıyorum?" gibi promptlar yazıyorlar. Bir 5 yıl önce olsa herkesin kubectl indirip, Kubernetes Manual'ı okuduğu, ekipteki Senior'lara özelden "bi gelir misin?" mesajı attığı dünyadan tamamen "vibe coding"in tariflediği davranış şemasını burada gözlemleyebiliyoruz. Ama yine burada da içinde konfigurasyonların olduğu, canlı pod/deployment'ların CPU/memory kaynaklarının komutlarla kontrol edildiği bir dünya var, yani bu bir kodlama değil programlama faaliyeti.


Sonuç olarak: Karpathy geçen sene konunun adını koyduğunda "vibe coding" doğru bir tanımlamaydı. Ancak araçlar güçlendikçe, "vibe" yaklaşımıyla yapabildiklerimiz terimin kendisinin de benzer bir genişlemeye uğraması gerektiğini hissettirdi.

Paylaş:

E
Yazan
Fellow @ T-Fashion • Content Creation @ YouTube • Açık Kaynak, DevRel, DevOps and Agile Evangelist • Generalist
Yayınlar

Tartışma

Henüz yorum yok

İlk yorumu siz yapın!