Blog

Yazılım Geliştirmede Bir Devrim Yaklaşıyor

23.10.2018

Yıllar boyunca yazılım geliştirme manuel bir şekilde yapıldı.

FORTRAN’daki delikli kartlardan Go’daki yazılı dağıtık sistemlere kadar bu disiplin temelinde aynı kaldı: bir problem hakkında derinlemesine düşünme, zekice bir yaklaşım (algoritma) bulma ve makineye bir takım talimatlar verme.

“Açık programlama” olarak adlandırılabilecek bu yöntem, merkezi işlemciden akıllı telefona, internetin inanılmaz bir şekilde popülerleşmesinden mobil devrime kadar her şeyin bir parçası oldu. Bu, yeni pazarlar oluşturmaya ve Apple, Microsoft, Google ve Facebook gibi ünlü şirketlerin yaratılmasına yardım etti.

Fakat yine de bir şey eksik. Philip Dick’in robot taksisinden George Lucas’ın C-3PO’suna kadar, erken Bilgi İşlem Çağı (Computing Age) yazarlarının öngördüğü akıllı sistemler hala birer bilim kurgu ürünü. Görünüşte basit olan görevler, en iyi bilgisayar bilimcileri aracılığıyla bile otomasyona karşı koyuyor. Bu zorluklara ilişkin olarak uzmanlar, Silikon Vadisi’ni temel ilerlemelerden uzaklaşarak marjinal ya da geçici popülerliğe sahip işlere odaklanmakla suçluyor.

Elbette bu değişmek üzere. Waymo’nun otonom arabaları geçtiğimiz günlerde 12 milyon kilometrelik bir yolculuk yaptı. Microsoft’un çeviri motorunun, altı milyon iletişim formunda aynı şekilde akıcı olamasa da, Çince’den İngilizce’ye çevirme görevlerinde insana eş değer bir doğruluk seviyesine ulaşması mümkün. Bununla birlikte, startuplar; akıllı asistanlar, endüstriyel otomasyon, dolandırıcılık tespiti ve birçok başka alanda yeniliklere imza atıyorlar.

Bireysel anlamda, bu yeni teknolojiler günlük yaşantımızı etkileyeceklerinin garantisini veriyorlar. Toplu olarak ise yazılım geliştirmeye ilişkin düşünme şeklimizdeki büyük bir değişimi ve açık programlama modelinden kayda değer bir ayrılışı temsil ediyorlar.

Bu ilerlemelerin her birinin arkasındaki temel atılım ise insan beyninin yapısından esinlenen bir yapay zeka tekniği olan derin öğrenme. Nispeten dar bir veri analizi aracı olarak başlayan şey artık genel bilgi işlem platformuna yakın bir şey olarak işlev görüyor. Çok çeşitli görevlerde geleneksel yazılımlardan daha iyi performans gösteriyor ve sonunda bilgisayar bilimcilerini uzun zamandır oyalayan akıllı sistemleri sunması mümkün – ki bunlar basının zaman zaman abarttığı beceriler.

Bununla birlikte, derin öğrenmeye ilişkin abartılı tanıtımların arasında, birçok gözlemci bunun geleceği hakkında iyimser olmaya yönelik en büyük sebebi kaçırıyor: derin öğrenme, kodlayıcıların çok az sayıda gerçek kod yazmasını gerektiriyor. Bir derin öğrenme sistemi, önceden belirlenmiş kurallara ya da koşullu ifadelere dayanmak yerine, kuralları, geçmiş örneklere dayanarak otomatik bir şekilde yazıyor. Bir yazılım geliştiricisinin sadece “basit bir iskelet” yaratması gerekiyor, sonrasında bilgisayarlar geri kalan işi yapıyorlar.

Bu yeni dünyada geliştiricilerin, her bir sorun için benzersiz bir algoritma tasarlaması gerekmiyor. Bunun yerine, çoğu çalışma, istenen davranışı yansıtan ve eğitim sürecini yöneten veri kümeleri oluşturma üzerine odaklanıyor. Google’ın TensorFlow ekibinden Pete Warden, bu konuyu 2014 yılında belirtmişti: “Eskiden bir kodlayıcıydım. Artık bilgisayarlara kendi programlarını yazmayı öğretiyorum.”

Altını çizmek gerekiyor ki: günümüzde yazılımdaki en önemli ilerlemeleri kullanan programlama modeli, önemli miktarda gerçek programlama gerektirmiyor.

Peki bu, yazılım geliştirmenin geleceği için ne anlama geliyor?

  1. Programlama ve veri bilimi giderek daha fazla birleşecek. Çoğu yazılım, öngörülebilir gelecek için “uçtan uca” öğrenme sistemlerini içermeyecek. Kullanıcılarla arayüz kuracak ve sonuçları yorumlayacak temel biliş yeteneklerini ve açık mantığı sağlamak için veri modellerine dayanacak. “Bu problem için yapak zeka mı yoksa geleneksel yaklaşım mı kullanmalıyım?” sorusu giderek daha fazla ortaya çıkacak. Akıllı sistemlerin tasarlanması, her ikisinde de uzmanlık gerektirecek.
  2. Yapay zeka uygulayıcıları süper star olacak. Yapay zeka yaratmak zor. Sıradan yapay zeka geliştiricileri -sadece çok zeki akademisyenler ve araştırmacılar değil- gelecekte yazılım şirketleri için en değerli kaynaklar arasında yer alacak. Bu, 1950’lerden beri diğer endüstrilerde işleri otomasyona geçiren ve şimdi kendi işlerinin kısmi otomasyonuna yönelen geleneksel kodlayıcılar için bir ironi anlamına geliyor. Bu kişilerin hizmetleri için olan talep kesinlikle azalmayacak olsa da ön planda kalmak isteyenler, belirli bir dozda şüpheci olmak durumunda ve yapay zekadaki gelişmeleri test etmek zorunda.
  3. Yapay zekaya ilişkin birbiriyle uyumlu şekilde çalışan yazılım uygulamaları oluşturulması gerekiyor. Lyft’te makine öğrenimi yöneticisi olan Gil Arditi, “Makine öğrenimi şu an ilkel bir aşamada. Bu, 80’lerin başlarındaki ya da 70’lerin sonlarındaki veri tabanına benziyor. Bu şeylerin çalıştırmak için dünya çapında bir uzman olmanız gerekiyor.” diyor. Ayrıca yapılan çalışmalar, birçok yapay zeka modelinin açıklanması zor, aldatılması kolay ve önyargıya  elverişli olduğunu gösteriyor. Yapay zeka geliştiricilerinin potansiyelini açığa çıkarmak için, diğerlerinin yanında bu meseleleri de ele alan araçlar gerekli olacak.
  4. Tahmin edilemez davranışlar konusunda iyi olmamız gerekiyor. Bir bilgisayar talimatı metaforuna, geliştiriciler ve kullanıcılara aynı şekilde aşinadır. Bu, bilgisayarların tam olarak söylediğimiz şeyi yaptığına ve benzer girdilerin her zaman benzer çıktılar ürettiğine dair inancı güçlendiriyor. Buna karşın, yapay zeka modelleri canlı, nefes alan sistemler gibi davranıyor. Yeni araçlar, bunların, özellikle güvenlik açısından kritik olan ortamlarda daha çok açık programlar gibi davranmasını sağlayacak, fakat koruyucuları çok sıkı bir şekilde kurduğumuz takdirde, bu sistemlerin değerini kaybetmesi riskiyle karşı karşıya kalıyoruz. Yapay zeka uygulamalarını geliştirip kullandığımızdan dolayı, olasılıksal sonuçları anlamamız ve kabul etmemiz gerekiyor.

Umarız ki yapay zekanın kontrolü ele geçirme olasılığı sıfıra yakındır.

 

Kaynak: Forbes