Programcılar yapay zekâ modelleri için kod yazmak için onlarca yıl harcadı ve şimdi, yapay zekâ kod yazmak için kullanılıyor. Peki bir YZ kod üreticisi bir insan programcıyla nasıl karşılaştırılır? IEEE Transactions on Software Engineering dergisinin Haziran sayısında yayınlanan bir çalışma tam da bu sorunun cevabını bulmak için yola çıktı ve ChatGPT kod yazma yeterlilikleri açısından sınandı.
Çalışmada ChatGPT tarafından üretilen programlama kodları işlevsellik, karmaşıklık ve güvenlik açısından değerlendirildi. Sonuçlar, ChatGPT’nin işlevsel kod üretme konusunda son derece geniş bir başarı aralığına sahip olduğunu gösteriyor; görevin zorluğuna, programlama diline ve bir dizi başka faktöre bağlı olarak başarı oranı yüzde 0,66 gibi son derece düşük bir seviyeden yüzde 89 gibi oldukça iyi bir seviyeye kadar değişiyor.
Bazı durumlarda yapay zekâ üreticisi insanlardan daha iyi kod üretebilirken, analiz aynı zamanda yapay zekâ tarafından üretilen kodla ilgili bazı güvenlik endişelerini de ortaya koymakta. Glasgow Üniversitesi’nde öğretim görevlisi olan ve ilgili çalışmaya katılan Yutian Tang, yapay zekâ tabanlı kod üretiminin üretkenliği artırma ve yazılım geliştirme görevlerini otomatikleştirme açısından bazı avantajlar sağlayabileceğini, ancak bu modellerin güçlü yönlerini ve sınırlamalarını anlamanın önemli olduğunu belirtiyor.
Bu sınırlamaları daha ayrıntılı olarak keşfetmek için Tang ve ekibi GPT-3.5’in LeetCode test platformundaki 728 kodlama sorununu beş programlama dilinde ele alma becerisini test etmeye çalıştı: C, C++, Java, JavaScript ve Python.
ChatGPT tanıdık problemlerde çok daha başarılı
Genel olarak, ChatGPT farklı kodlama dillerindeki problemleri çözmede oldukça başarılıydı, ancak özellikle 2021’den önce LeetCode’da var olan kodlama problemlerini çözmeye çalışırken çok daha başarılı olması dikkat çekti.
Tang “Ancak, 2021’den sonraki algoritma problemleri söz konusu olduğunda, ChatGPT’nin işlevsel olarak doğru kod üretme yeteneği etkileniyor. Bazen kolay seviyedeki problemlerde bile soruların anlamını anlamakta başarısız oluyor,” diyor. Örneğin, ChatGPT’nin “kolay” kodlama problemleri için işlevsel kod üretme yeteneği 2021’den sonra yüzde 89’dan yüzde 52’ye düştü. “Zor” problemler için işlevsel kod üretme becerisi de bu süreden sonra yüzde 40’tan yüzde 0,66’ya düştü.
Tang, “ChatGPT’nin 2021’den önce algoritma sorunlarında neden daha iyi performans gösterebildiğine dair makul bir hipotez, bu sorunların eğitim veri setinde sıklıkla görülmesi” diyor.
Esasen, kodlama geliştikçe, ChatGPT henüz yeni sorunlara ve çözümlere maruz kalmamıştır. Bir insanın eleştirel düşünme becerilerinden yoksundur ve yalnızca daha önce karşılaştığı sorunları ele alabilir. Bu durum, eski kodlama sorunlarını ele almada neden yenilere göre çok daha iyi olduğunu açıklayabilir.
ChatGPT derlemede iyi ama kendi hatalarını düzeltmede başarısız
Araştırmacılar ayrıca ChatGPT’nin LeetCode’dan geri bildirim aldıktan sonra kendi kodlama hatalarını düzeltme yeteneğini de araştırdı. ChatGPT’nin içeriği ya da eldeki sorunu anlamadığı için başlangıçta yanlış kodlama ürettiği 50 kodlama senaryosunu rastgele seçtiler. ChatGPT derleme hatalarını düzeltme konusunda iyi olsa da, genellikle kendi hatalarını düzeltme konusunda iyi değildi.
Araştırmacılar ayrıca ChatGPT tarafından üretilen kodun eksik null testi gibi makul miktarda güvenlik açığına sahip olduğunu, ancak bunların çoğunun kolayca düzeltilebilir olduğunu buldular. Sonuçlar ayrıca C dilinde üretilen kodun en karmaşık kod olduğunu, bunu insan tarafından yazılan kodla benzer karmaşıklığa sahip olan C++ ve Python’un izlediğini gösteriyor.
Tang, bu sonuçlara dayanarak, ChatGPT kullanan geliştiricilerin ChatGPT’nin sorunları daha iyi anlamasına veya güvenlik açıklarından kaçınmasına yardımcı olmak için ek bilgiler sağlamasının önemli olduğunu söylüyor.