Vibe kodlaması: Tavuk yemi veya yemi meselesi


Yazılım mühendisliğinde yapay zekanın durumu Harness’in ABD, İngiltere, Fransa ve Almanya’daki 900 yazılım mühendisinin katıldığı Coleman Parker anketine dayanan raporu, ankete katılan kişilerin neredeyse üçte ikisinin (%63) kod oluşturmak için halihazırda yapay zeka (AI) araçlarını kullandığını ve yarıdan biraz fazlasının (%51) AI araçlarının kod oluşturma hızını önemli ölçüde etkileyeceğini öngördüğünü ortaya çıkardı.

Yapay zeka, geliştiricilerin kodlamayı hızlandırmasına yardımcı olmak için kullanılıyor. Eylül ayında, Devlet Dijital Hizmetleri (GDS), yapay zeka kodlama asistanlarının kullanıldığı bir denemenin sonuçlarını bildirdi ve deneme katılımcılarının bu tür araçları kullanırken iş gününde ortalama 56 dakika tasarruf ettiğini ortaya çıkardı. Bildirilen en büyük etki, günde ortalama 24 dakika tasarruf sağlayan kod ve analiz oluşturmada yaşandı.

GDS’nin denemesi, kullanıcıların yarısından fazlasının bilgi veya örnek aramak için daha az zaman harcadığını, görevleri daha hızlı tamamladığını, sorunları daha verimli çözdüğünü ve işlerinden daha fazla keyif aldığını bildirdiğini ortaya çıkardı.

Ancak titreşim kodlama, hızlı kodlama yeteneğini başka bir düzeye taşıyarak yazılım mühendislerinin neyi başarmak istediklerini doğal dilde belirlemelerine olanak tanır. Anthropic’in Claude Code’u gibi üretken yapay zeka (GenAI) araçlarını, insanların yazılım oluşturmak için doğal dil sorgularını kullanmasını sağlayacak şekilde kullanıyor. Bu, yazılım geliştiricilerin giriş engelini azaltmayı ve uygulama yazılımlarını çok daha kolay oluşturmalarını sağlamayı vaat ediyor. Ancak bir takım uyarılar var.

Azul Systems’in teknolojiden sorumlu başkan yardımcısı Simon Ritter, yakın zamanda Computer Weekly’ye program yazmak için doğal dil kullanmanın bazı zorlukları hakkında konuştu.

Bir programcının kendi deneyimine göre karşılaşacağı ilk sorun, programların çoğunluğunun deterministik olan İngilizce benzeri programlama dillerinde yazılmış olmasıdır; bu, programcının bilgisayara tam olarak ne yapması gerektiğini etkili bir şekilde söylemesi anlamına gelir: programcının kod olarak yazdığı şey, bu kodun bilgisayar tarafından nasıl yorumlandığı ve bilgisayarın merkezi işlem birimine (CPU) ne yapması gerektiğini söyleyen makine koduna nasıl dönüştürüldüğü arasında hiçbir yanlış anlaşılma olmamalıdır.

Bir derleyici kaynak kodunu daha sonra çalıştırılabilecek makine koduna çevirir. Bir tercüman kodu gerçek zamanlı olarak dönüştürür ve çalıştırır. Her iki durumda da programcılar, makine koduna dönüşümü doğru bir şekilde yapmak için derleyicilere ve yorumlayıcılara güvenirler.

Yoruma açık

Ancak programın neyi başarması gerektiğini belirtmek için doğal dil kullanıldığında durum böyle değildir.

Ritter, doğal dilin kaprislerini göstererek şunları söyledi: “Tavuk yemeye hazır. Bu aslında ne anlama geliyor? Bu, yerde canlı bir tavuk olduğu ve artık aç olduğu ve yemek istediği anlamına mı geliyor? Yoksa süpermarketten bir tavuk aldım, fırına koydum ve şimdi yemeye hazır mı?”

İfadenin her iki yorumu da geçerlidir, ancak Ritter’in işaret ettiği gibi, bunların iki farklı anlamı vardır. “Bir şeyin ne yapmasını istediğinizi net bir şekilde tanımlamaya çalışırken doğal dilin gerçek bir sorunu var” dedi.

Vibe kodlaması yapay zeka modellerinin eğitilmesine dayanır. Bu onu bazı programlama görevlerine uygun hale getirir, ancak hepsi için uygun değildir. Vibe kodlama için ideal bir kullanım örneği olması gereken bir örnek, belirli bir iş gereksinimini karşılamak için ek işlevsellik veya özel kod oluşturmanın gerekli olduğu kurumsal yazılımdır. Yazılımın orijinal geliştiricisi bu ekstra işlevselliği sağlamaya istekli olmayabilir veya bunu yapmanın maliyeti çok yüksek olabilir. Vibe kodlama, dahili yazılım geliştirici ekiplerinin gerekli işlevselliği kolaylıkla eklemesine olanak tanır.

Ancak Ritter’in işaret ettiği gibi yapay zeka destekli kod oluşturucunun, özelleştirme gerektiren kurumsal uygulamaların özellikleri konusunda eğitilmiş olması pek olası değil. “Vibe kodlamayla ilgili sorun, modelinizi özellikle ilgilendiğiniz belirli bir uygulama üzerinde nasıl eğiteceğiniz ve uygun değişiklikleri yapabilmesi için bu uygulamayı anlamasını nasıl sağlayacağınızdır” dedi.

Yazılımı sağlayan şirket, müşterilerin ek işlevsellik oluşturmasına olanak tanıyan bir yapay zeka modeli sunmadıkça Ritter, kurumsal uygulamaları özelleştirmek için üçüncü taraf bir yapay zeka aracı kullanmanın oldukça zor olacağını belirtti.

Kurumsal bilgi işlemdeki başka bir kullanım durumu, yazılım entegrasyonu içindir; örneğin birinin işini gerçekleştirmek için iki veya daha fazla uygulamayı kullanması gerektiği durumlar. Bu, kurumsal BT’deki diğer bir yaygın sorundur ve robotik süreç otomasyonuna yönelik araçların çözmeye çalıştığı bir sorundur. Ancak Ritter, farklı uygulamaları kullanan yüzlerce kişinin kullanıcı etkileşimini izleyen ve bunlardan öğrenen bir yapay zekanın, titreşim kodlaması kullanarak kurumsal uygulama entegrasyonunu güçlendirmek için zengin bir eğitim verisi sağlayacağına inanıyor.

Ritter’e göre, sınırlamaları olsa da, titreşim kodlaması, görev açısından kritik olmayan kod oluşturmak için yararlı bir tekniktir. Basit kullanım örneklerinden bazıları, e-tablolarda olduğu gibi basit otomasyon için makrolar oluşturmayı veya veri kümelerini anlamlı raporlara ayırmayı içerir.

GDS, hükümetteki yazılım geliştiricilere yönelik bir kılavuz belgesinde, yapay zeka kodlama asistanlarının belirleyici ve test edilebilir çıktılar üretebileceğini, bunun da titreşim kodlaması tarafından oluşturulan kaynak kodunun kolayca test edilip doğrulanabileceği anlamına geldiğini belirtti.

Dolayısıyla, Ritter’in tavuk örneğine baktığımızda, eğer çıktı doğru görünmüyorsa (çünkü yapay zeka, programcının basit İngilizce talimatlarını yanlış anladı), programcı, yapay zeka kabul edilebilir bir kod üretene kadar programcıdan tekrar denemesini isteyebilir. Bu, programcının titreşim kodlama yoluyla üretilen kodun sahipliğini alması gerektiği anlamına gelir.

Bu, hükümetin AI kodlama asistanlarına yönelik rehberliğinde kabul ettiği bir şeydir. GDS, yapay zeka kodlama asistanlarının sorumlu kullanımının, programcının ortaya çıkan kodu anlamasını ve herhangi bir değişikliğin sorumluluğunu tek başına üstlenmesini gerektirdiğini belirtiyor.



Source link