CEYD Yapısına Detaylı Bakış
CEYD dili, daha çok Android dünyasında bilinen CEYD-A Türkçe Sesli Asistanı’nın geliştirme dilidir. Kodlama yapısı başka bir platformdan örnek alınan bir yapıda değildir. İnovatif bir fikirle ortaya çıkmış birebir benzeri olmayan bir tasarımdır. Amaç, geliştirmeyi ilk geliştiricisinden bağımsız olarak da sağlamak ve tüm bu geliştirmelerin ortak bir havuzda birleşip genel yapıya katkı sağlaması hatta yeni geliştirmelerde kullanıcıların oluşturduğu kodların da kullanılabilmesidir.
CEYD spesifikasyonunun ilk olarak bir uygulamada kullanılması Eylül 2014 tarihine uzanmaktadır. O zamanlarda Yardımcı ismiyle bilinen uygulama, sonraki dönemde CEYD dilinin Asistanı olarak CEYD-A ismini almıştır.
İlerleyen senelerde komut sayısı ve programatik desteğini arttıran CEYD yapısı yakın dönemde NLP ve Derin Öğrenme yapı algoritmalarına da destek vermeye başlamıştır.
CEYD, heterojen bir yapıdadır: Yapısal programlama özelliklerini kapsamakta, nesne yönelimli sınıflandırmanın da bazı özelliklerini desteklemektedir.
Genel açıdan programlamanın temel sınıflandırmaları şu şekildedir
- Sıralı (Sequential veya Imperative)
- Yapısal (Procedural veya Functional)
- Nesne-yönelimli (Object-oriented)
CEYD için bu sınıflandırmaları detaylandırırsak:
- Modüler bir programlama stilidir. (Yapısal)
- Hesaplama adımları içeren ve prosedür, rutin, yordam veya fonksiyon adı verilen program modüllerinden oluşur. (Yapısal)
- Bir modül, programın istenilen bir noktasında çağrılabilir ve dolayısıyla modülün içerdiği komutlar çalıştırılmış olur. (Yapısal)
- Büyük ve karmaşık programların geliştirilmesi ve bakımı kolaylaşır. (Yapısal)
- Kod tekrarlaması azalır. (Yapısal)
- Olay Güdümlü Programlama desteği vardır (Nesne-yönelimli)
Dil, uzaktaki kullanıcıların da katkıda bulunabileceği tamamen yerel ortamda çalışabilecek, kendi kendine genişleyebilecek ve mevcut kodlama stillerine uygun olarak kendine özgü bir yapıdadır. Yapay zeka gelişim ihtiyaçlarına göre esnek bir yapı ile gelişir.
CEYD-A, sesli asistan olarak öne çıkmasına rağmen gerçekte bu geliştirme ortamının sonucudur.
Rakip platformlarda asıl amaç asistan olarak ele alınırken, CEYD-A için asistan bir sonuçtur. Geliştiriciler için hazırlanan CEYD platformu daha çok ön plandadır.
Öyle ki CEYD-A geliştirmelerinin büyük bir oranı kendi öz dili olan açık kaynak kodlama imkanı sunan CEYD ile yapılmaktadır. Bu da günden güne daha güçlü bir sonuç ortaya çıkarmaktadır. Halen düz metinler dahil olmak üzere kullanıcıların oluşturduğu 235 bin civarında komut bulunmaktadır*.
Artı yönleri nelerdir?
Dili sesli asistanın kurulu olduğu cihazda yorumlanıp çalıştığı için diğer asistanlar gibi sunucuya erişme zorunluluğu yoktur. Böylece , sunucunun kaynaklarını harcamaz ve özel bilgiyi dışarı çıkartma ihtiyacı duymaz. Kişisel verileri koruma adına rakiplerinden üstün tarafı bilgileri cihaz üzerinde işlemesidir.
Rakip ortamlarda farklı modüller değişik sunucu ve istemcilerde bulunur ve bu modüller farklı ortamlarda birbirleriyle konuşturulur. CEYD-A ise benzer yapıyı desteklemekle beraber yapısal programlama yapısını da destekleyen bir yol izleyebilmektedir. Bir komut içinde sıralı çalışan detaylandırılmış kod parçası yazmak mümkündür.
Bilgileri yerel cihaz üzerinde işleyip çalıştırdığı için çalışma hızı cihazın gücü ile sınırlıdır.
Değişkenler ve dizilerin içerikleri uygulamanın ömrüne bağımlı değildir. Veriler cihaz üzerindeki yerel veritabanında tutulur.
Komut çalıştırma prensiplerinde muhakkak sonuç döndürme prensibi uygulanır. Sonuç bulunana kadar var olduğu sürece alternatif komutlarda aranır. Sadece en alt seviyedeki sistem komutlarında bu yol izlenmez. Alternatif komutlarda çalışma sırası için her komuta öncelik katsayısı verilebilir.
Değişkenler, cihaz bazlı olarak tüm komutların kodlarında globaldir. Bu şekilde verilerin farklı kod bloklarına kullanılabilmesi mümkündür.
Kodlar, CEVAP alanına yazılır ve iç içe çağrılır yapıdadır. Önce en alt seviyedeki kod bloğu çağrılır ve sonucu dış kod bloğuna döndürülür. Komut kodlarının devreye girmesini önce SORU bölümündeki sizin cümlenizin içinde mutlaka geçecek kelime belirler sonra cümleniz ŞABLON tanımına uyuyorsa CEVAP alanındaki kod çalıştırılır.
Mevcut CEYD yorumlayıcıları 2 farklı sistem üzerinde çalışabilmektedir. CEYD yorumlayıcıları kapalı kaynaktır. Yorumlayıcılar Java diliyle yazılmıştır.
1) Android İşletim Sistemi: Oluşturulan komutlar sistemde bulunan CEYD-A uygulamasında asistan olarak işlev görmektedir.
2) Linux İşletim Sistemi: Internet sunucusunda kurulu olan CEYD derleyicisi web servis vasıtasıyla farklı işletim sistemlerine hizmet verebilmektedir.
CEYD ile geliştirilen kodlar ise açık kaynaktır.Kısacası başka bir kullanıcının oluşturduğu kod bloklarını yayınlama onayı geldiğini varsayarsak, kendi kodlarımızda kullanabilmek mümkündür. Yazılan kodlar kişisel amaçlı yukarıda bahsedilen yorumlayıcılarda kısıtlama olmadan kullanılabilir.
Kodlarda kullanılan komutların büyük çoğunluğu yine CEYD dili ile geliştirilmiştir. cmd ile başlayan komut isimleri sistem komutlarıdır. Sistem komutları genelde yorumlayıcının dili olan Java ile geliştirilmiştir . Ancak aşağıdaki örnekteki cmdfetchjsonforlocation gibi bazı komutlar CEYD dili ile geliştirilebilmektedir. Bu da dildeki birçok yeniliğin CEYD ile ortam bağımsız uzaktan cihazlara yansıyabilecek şekilde yapılabileceğini göstermektedir.
Bahsedilen cmdfetchjsonforlocation komutunu kullanan cmdsearchlocations komutu da CEYD dili ile yazılmış başka bir örnek. Gün geçtikçe farklı özellikler içeren komut kodları gelişmeye devam etmektedir.
Yukarıdaki cmdsearchlocations komutunu kullanan yer bilgisi gösterkomutu da CEYD dili ile aşağıdaki gibi yazılmıştır. Görüldüğü üzere tüm komutlar çoklu katmanlarda yorumlayıcı tarafından dallanarak çağrılmaktadır.
Son aşamada aşağıdaki soruyu sesli/yazılı sorduğumuzda sistem CEYD yorumlayıcısının iç içe komut çağırma özelliği ile aşağıdaki gibi sesli/yazılı cevap verebilmektedir.
(*) 23.08.2019 tarihli istatistik verisidir.