Symbolics ve Sembolik İşleme Üzerine

LISP ile uygulama satan bir firmanın, 1986 senesinde, “biz AI Şirketi değiliz” diye yaptığı serzenişlerinden, bir DRAFT. Bunu yayınladılar mı bilmiyorum ama günümüz için çok komik olmuş.

Not: LISP eskiden bu yana yapay zeka dili diye bilinir ve bu yüzden sevilmezdi. ;-)

AI Şirketi Algısının Verdiği Zarar

Symbolics gerçekte ne yapıyor? Ne satıyoruz? Yapay zekâ (AI) ile ne ilgimiz var? Pazarımızı nasıl genişletiriz? Bu sorular, şirketin tamamı için doğrudan önem taşıyor.

Geçmişte biz “AI şirketi” olarak algılandık (ne anlama geliyorsa artık), ancak bence kimse tam olarak ne kadar AI yaptığımızı söyleyemez. Elbette AI üzerinde çalışan veya AI ile ilgili olan pek çok şirkete, laboratuvara ve üniversiteye katkıda bulunduk. Ancak biz kendimiz — pratik anlamda — hiç AI yapmadık. İlginçtir (ve benim için oldukça sinir bozucu) ki “tek kârlı AI şirketi” olarak ve “AI yazılımında en yüksek dolar hacmine” sahip şirket olarak anılıyoruz.

Yanlış Pozisyonlama Sorunu

Bu bakış açısını sürdürdüğümüz sürece kendimize büyük zarar veriyoruz. “AI seminerleri” vermeye devam ediyor, medyanın meydana getirdiği yanlış izlenimleri düzeltmiyoruz ve satış ekibimiz bile gerçekte ne yaptığımız konusunda eğitimli değil. Peki biz gerçekten ne yapıyoruz? Ve neden bu AI imajını sürdürmek bize zarar veriyor?

Sembolik İşleme Tanımı

Bence biz “sembolik işleme” (symbolic processing) yapıyoruz. Bu terim, “yapay zeka” kadar tanımlaması zor bir terim. Benim kullandığım iki çalışma tanımı var. Standart bir tanım oluşturmak için ortak bir çaba göstermemiz gerekiyor.

Benim tanımlarım şunlar:

  • Sayısal işlemeye kıyasla: Bir insanın düşünme biçimini daha yakından modelleyen veri yapılarıyla hesaplama yapmak.
  • Çözülen probleme uygun: Yalnızca sayılarla sınırlı olmayan veri yapılarıyla hesaplama yapmak.

Tanımın Rafine Edilmesi

Bu tanımlara yönelik en büyük itirazlardan biri, “veri yapısı” (data structure) teriminin “sembolik işleme”'den daha anlamlı olmadığıdır. Veri yapısı dediğimde, gevşek anlamda, bilgisayar içindeki bilginin (verinin) bir temsili anlamını kastediyorum.

İşte yeniden yazılmış bir tanım: Bilgisayar içinde, sayısal işlemeye kıyasla, bir insanın düşünme biçimini daha yakından modelleyen bilgi temsilleriyle hesaplama yapmak.

Bilgisayar içinde, çözülmekte olan probleme uygun olan, ancak salt sayılarla sınırlı olmayan bilgi temsilleriyle hesaplama yapmak.

AI ile İlgisi Yok

Peki, hâlâ bir kişinin düşünmesinden bahsediyor. Bu, yapay zeka ile ilgili değil mi? Hayır.

Çünkü buradaki “kişi” rastgele biri değil, programcı ya da problemi tanımlayan kişidir. Ve “sayısal işlem” dediğimde aslında Fortran gibi yalnızca sayılarla ilgilenen geleneksel programlama ortamı/dilinden söz ediyorum.

Daha net tanım:

Bilgisayar içinde, programcı veya problemi tanımlayan kişinin, Fortran tarzı "sayılarla hesaplama"da kullanılan temsillerden ziyade, problemi düşünme biçimine daha yakın bilgi temsilleriyle hesaplama yapmak.

Analoji: IBM ve Lotus

Bence bu tanım iddiamı kanıtlıyor. Eğer sembolik işlem gerçekten yaptığımız işin özünde ise, bunun yapay zeka ile çok az ilgisi var.

Bu, “IBM, mikro bilgisayarlar için en çok elektronik tablo programı satıyor” demek gibi olurdu. Lotus Development Corporation’ın, ürünlerini üretmek için IBM assembler kullandığını inkâr etmeyeceğini, ancak IBM’in elektronik tablo programını sattığını reddedeceğini düşünüyorum. Biz de aynı durumdayız.

Araç Şirketi Analojisi

Başka bir benzetme:

  • Stanley ve Sears kaç ev inşa etti?
  • Stanley ve Sears’ın sattığı aletlerle kaç ev yapıldı?

Bu şirketler ev satmıyor. Ama neredeyse her evde bu şirketlerin ürettiği aletler kullanılmıştır.

Symbolics bir araç satar. Ve bizim aracımız, bilgisayar programlarını verimli ve etkili şekilde uygulamak için sembolik işlemeden yararlanmanın daha iyi bir yoludur.

Sembolik İşlemenin Avantajı

  • Gerçek Dünyayı Modelleme: Gerçek dünyanın sayısal olmayan yönleriyle ilgili programlar için uygundur.
  • Doğal İfade: Geleneksel programlama dilleri programcıyı problemi sayısal terimlerle ifade etmeye zorlar; sembolik işleme ise bilgisayara çeviri işinin çoğunu yaptırarak daha doğal bir iletişim sağlar.

Temel Özellikler

  • Çeşitli Veri Türleri: Sayısal (büyük sayılar, rasyonel sayılar vb.) ve sayısal olmayan (conses, listeler, diziler, tiplenmiş nesneler).
  • Dinamik Bellek Yönetimi: Gerektiğinde bellek ayırma, iş bitince serbest bırakma ve çöp toplama (garbage collection).
  • Kimlik Kavramı (Identity): İki nesnenin eşit görünmesinin ötesinde, aynı nesne olup olmadığını kontrol edebilme.
  • Generic Operations: Veri türünden bağımsız işlemler.
  • Çalışma Zamanında Tip Kontrolü: Hataları program çalışırken yakalama.
  • Nesne Yönelimli Programlama (Flavors): Veri ve yöntemi birleştirir, uygulama detaylarından bağımsız algoritmalar ve modülerlik sağlar.
  • Metaprogramming: Programlar derlenmiş kodu üretebilir ve çalıştırabilir.

Tarihin İronisi

Kişisel Not: 1986’da Symbolics “biz AI şirketi değiliz, sembolik işleme araçları yapıyoruz” derken, bugün her şirket “biz AI şirketiyiz” diyor. Symbolics’in tanımladığı sembolik işleme özellikleri (dynamic typing, garbage collection, OOP, rich data structures) bugün Python, JavaScript gibi modern dillerin temelini oluşturuyor. Symbolics zamanının çok ilerisindeydi, sadece yanlış etiketlenmişti.