Doç. Dr. Tolga Komut, tolga.komut@gmail.com
Çanakkale Onsekiz Mart Üniversitesi
Yapay zekâ bugün kod yazabiliyor ve bu kapasitenin daha ileri gitmesi bekleniyor. Kod üretmek kolaylaştıkça başka bir soru öne çıkıyor: Peki hangi kod üretilecek? Yapay zekâ doğru tarif edilmiş bir sistemi hızla kodlayabilir. Fakat yanlış tarif edilmiş bir sistemi de aynı hızla kodlayabilir.
“Programlama dili biliyor musunuz?” şeklindeki bir değerlendirme, yazılım üretme becerisini anlamakta giderek daha eksik kalıyor. Çünkü bir programlama dilini bilmek ile yazılacak programın ne yapması gerektiğini doğru tarif edebilmek aynı şey değil. Bu farkı anlatmanın kısa ama ilk bakışta biraz şaşırtıcı bir yolu var: Çok iyi kod “readme” (beni oku) yazabilmek.
Buradaki “readme”, program tamamlandıktan sonra yazılan “şuraya tıklayın, şu komutu çalıştırın” türünden bir kullanım açıklaması değildir. Program daha ortada yokken onun ne yapacağını tarif eden bir bilgidir. Girdileri neler olacak? Hangi çıktıları verecek? Birbirine benzeyen iki durum nasıl ayrılacak? Hangi durum hata sayılacak? Veri eksikse ne olacak? İş yarıda kesilirse kayıtlar nasıl korunacak? Bir sonraki çalışma öncekinin hangi sonucundan devam edecek?
Bu sorular cevaplanmadan da kod yazılabilir. Hatta teknik bakımdan çok iyi kod yazılabilir. Fakat temel bir soru ortada kalır: Yazılan programın tam olarak ne yapması gerektiği yeterince düşünülmüş müdür?
Programlama dili bilme, algoritmayı koda çevirme, kütüphaneleri kullanma ve hataları ayıklama gibi beceriler teknik bir disiplin altında yer alır. Buna karşılık, karmaşık bir programın görevini, veri akışını, sınırlarını, istisnalarını ve hata davranışlarını çözümleyip açık bir readme’ye dönüştürmek bunlardan ayrı bir kabiliyettir.
İnsan tarafından okunabilen bir sistem tarifidir: Karmaşık bir problemi kodlanabilecek kadar kesin, denetlenebilecek kadar anlaşılır hâle getirir.
YAPAY ZEKÂYLA GELEN DEĞİŞİM
Yapay zekâ teknolojisi bu ayrımı daha da önemli hâle getiriyor. Yapay zekâ bugün kod yazabiliyor ve bu kapasitenin daha ileri gitmesi bekleniyor. Kod üretmek kolaylaştıkça başka bir soru öne çıkıyor: Peki hangi kod üretilecek?
Yapay zekâ doğru tarif edilmiş bir sistemi hızla kodlayabilir. Fakat yanlış tarif edilmiş bir sistemi de aynı hızla kodlayabilir. Kod üretiminin ucuzlaması, yanlış düşünülmüş mimarinin maliyetini ortadan kaldırmaz. Tersine, artık çok miktarda yanlış kodu da çok kısa sürede elde etmek mümkündür.
Bu sebeple yapay zekâ çağında programlama kabiliyetinin ağırlık merkezi ciddi ölçüde kaymaktadır. “Bunu hangi dilde ve nasıl yazarım?” sorusunun yanında, hatta çoğu zaman ondan önce, “Bu sistem tam olarak ne yapmalı?” sorusu gelecektir.
Burada önemli bir kabiliyet alanı beliriyor: Hesaplanabilir ve uygulanabilir şekilde düşünebilmek. Bir fikri, makinenin uygulayabileceği kadar açık; insanın denetleyebileceği kadar anlaşılır bir yapıya dönüştürebilmek.
“Readme” de bu durumda koddan sonra gelen bir belge olmaktan çıkar. Süreç eskiden çoğu zaman şöyle düşünülürdü: Kod → dokümantasyon.
Yapay zekâ destekli yazılım geliştirmede ise giderek şu akış önem kazanabilir: Problem → readme/spesifikasyon → yapay zekâ → kod → doğrulama.
Bu düzende insanın görevi yalnız yapay zekâya “bir program yaz” demek değildir. Amaçları, kavramların sınırlarını, neyin istenip neyin istenmediğini, istisnaları ve doğru sonucun ölçütlerini tarif etmek gerekir. Yapay zekâ teknik uygulamayı üstlenebilir; insan ise ortaya çıkan kodun gerçekten tarif edilen sisteme uygun çalışıp çalışmadığını kontrol eder.
Bu yüzden artık işe alımda “Hangi programlama dillerini biliyorsunuz?” sorusundan çok başka sorular öne çıkmaktadır:
Karmaşık bir problemi yazılım görevlerine ayırabiliyor musunuz? Veri akışını kurabiliyor musunuz? Sınır durumlarını önceden görebiliyor musunuz? Hata ile gerçek veriyi birbirinden ayırabiliyor musunuz? Bir programın davranışını, onu yazacak kişiye veya yapay zekâya yanlış anlaşılmayacak açıklıkta tarif edebiliyor musunuz?
Bütün bunları yapabilen birinin “çok iyi kod readme'si yazabiliyorum” demesi sanıldığından çok daha ciddiye alınabilecek bir mesleki tanım olabilir.
Çünkü bu cümlenin altında yalnızca iyi metin yazmak yoktur. Karmaşıklığı çözümlemek, doğru ayrımları bulmak, sistemi teşkilatlandırmak, sınır durumlarını görmek, hatayı önceden düşünmek ve bütün bunları uygulanabilir bir mimariye dönüştürmek vardır.
Gelecekte programlama alanında öne çıkacak kabiliyetlerden biri artık şu olabilir: “Bir programın mimarisini kodlanabilir açıklıkta tarif edebilirim.”
Bunun kısa hâli ise oldukça güçlüdür: Çok iyi kod readme’si yazabilirim.
.....
Not: Bu yazı bir yapay zekâ asistanı tarafından yazılmamış; bu not da dâhil olmak üzere, bir yapay zekâ asistanına yazdırılmıştır.

