Nesne mi? Etmen mi?
Etmenler, nesnelerin pabucunu dama atacak mı?
14 Temmuz 2010
Yazılım problemlerinin tümünü çözebilecek tek bir şey olsa, hem programlama dili, hem altyapı, hem yöntem… “Sihirli değnek” gibi bir şey olurdu… İstersen veritabanı sorgula, istersen Windows uygulaması yaz, istersen Mobil uygulama geliştir… Nesneymiş, etmenmiş, cepheymiş, yapısalmış, bildirimselmiş uğraşmasak…
Hayal kurmak iyidir. Yaratıcılığımızı geliştirir :)
Gerçeklere dönecek olursak; mühendislik elindeki araçları kullanarak en iyi çözümü en uygun maliyetle, en kısa zamanda üretmektir. O zaman elimizde neler var onlara bakacağız. Bundan önce iki programlama yaklaşımını incelemiştik: Nesneye Yönelik Programlama (NYP) ve Etmene Yönelik Programlama (EYP). Şimdi bunları bir karşılaştıralım.
Kronolojik açıdan EYP yaklaşımı NYP’den sonra gelmektedir. EYP doğal olarak NYP de dâhil olmak üzere kendinden önce gelen programlama yaklaşımlarından ve teknolojilerden etkilenmiştir. Bir EYP uygulaması geliştirmek için özel olarak EYP uygulamaları oluşturmak için geliştirilmiş bir dil kullanılabileceği gibi, NYP destekleyen bir dille de EYP uygulamalar geliştirmek mümkündür.
NYP ile EYP nin ilişkisine genel olarak bakıldığında, EYP uygulamalarını kendi başlarına çalışabilir ve belirli amaçları olan NYP uygulamaları olarak nitelemek mümkündür. Kullanıcı etkileşimine ya da dışarıdan bir müdehaleye gerek duymaksızın çalışmak üzere tasarlanmış, belirli bir amacı olan, bu amacına ulaşmak için çeşitli planlara sahip, etrafını algılayıcılarıyla dinleyen ve duruma göre etkinlik gösteren bir NYP uygulaması geliştirildiğinde aslında bir EYP uygulaması geliştirilmiş olunur.
Diğer taraftan etmene yönelik programlama tüm yazılım sorunları için mükemmel tek çözüm değildir. Aslında aynı şey diğer programlama paradigmaları için de geçerlidir. En uygun çözümü geliştirmeniz için doğru olan, Problemin büyüklüğüne, karmaşıklığına ve tipine göre en uygun programlama yaklaşımını seçmektir. Matematiksel bir ispat için mantıksal programlama, tek bir işlevi yerine getirmek için prosedürel programlama, bir firma için gerekli otomasyon için nesneye yönelik programlama ve programlandığı görevi yerine getirmesi gereken bir insansız uçak için de etmene yönelik programlama en uygun yaklaşım olacaktır.
Aşağıdaki başlıklarda etmen ve nesne ile EYP ve NYP kavramları aktiflik/pasiflik, iletişim/mesajlaşma ve kontrol/çalışma başlıklarıyla ele alınmıştır.
Aktiflik / Pasiflik
NYP’de temel öğe “nesne”dir. EYP’de ise etmendir. Nesneler gerçek yaşamdaki pasif varlıkların soyutlanması için çok uygundur. Örneğin gerçek yaşamdaki otomobil pasif bir öğedir. Ancak bir insan tarafından kullanıldığında harekete geçer ve çeşitli fonksiyonları çalışır. Bu tip bir öğe için nesne kullanılır. Nesneler ancak dışarıdan gelen etkilere tepki gösterirler. Diğer taraftan kendi başına eyleme geçebilen aktif varlıklar için etmenler çok daha uygun olacaktır. Örneğin bir web sitesi arama motoru, belirli aralıklarla interneti tarayarak değişen ve yeni oluşturulan sayfaları indeksler. Bunun için dışarıdan bir etkinin gelmesini beklemez.
Nesneler pasiftir. Dışarıdan gelen etkilere ve çağrılara cevap verir fakat kendi başlarına belirli bir amaca ulaşmak için harekete geçemez, eylem gerçekleştiremezler. Etmenler ise nesneler gibi dışarıdan gelen çeşitli etkilere tepki vermekle kalmazlar, ayrıca kendileri de harekete geçebilirler. Ayrıca etmenler dışarıdan gelen etkilere nasıl tepki vereceklerini iç ve dış durumlarına bakarak karar verebilirler.
Bu bağlamda etmenlere aktif nesneler denilebilir. Diğer bir deyişle bir etmeni, amaçları olan ve bu amaçlar doğrultusunda kendi başına hareket edebilen ve yüksek seviyeli bir dille iletişim kurabilen nesneler olarak kabul edilebilir.
İletişim/Mesajlaşma
Nesneler nesnenin yapısına sıkı olarak bağlı bir biçimde mesajlaşmaya gerek duyarlar. Bir nesneye gönderilen mesaj, aslında temel olarak ilgili nesneden bir iş yapmasını istemek anlamına gelir. İş isteğini alan nesnenin, gelen istek karşısında ne yapacağı önceden belirlenmiştir. Nesnelerle iletişim kurmak için ara birimlerden faydalanılır.
Etmenler tipik olarak diğer etmenlerin de kullanabileceği/anlayabileceği yüksek seviyeli bir dil kullanarak iletişim kurarlar. Etmenlerle iletişim kurmak için yüksek seviyeli bir dil kullanarak eşleyici etmenlerden faydalanılır.
Kontrol/Çalışma
Etmenler de nesnelere benzerler. Fakat onlar nesnelerden farklı olarak fikir, amaç, niyet gibi mental tavırları da desteklerler.
Nesnelerin dışarıdan kontrol edilmesine rağmen, etmenler kendi kendilerini kontrol edebilirler.
Geleneksel nesneye yönelik programlar tek bir iş parçacığı üzerinden çalışır. Etmenlerse eşzamanlı çalışan öğelerdir.
Etmenler nesnelerden farklı olarak birlikte çalışabilir, rekabet edebilir, uzlaşabilir.
Etmenlerin nesnelere göre daha yüksek yeniden kullanılabilirlik oranına sahiptir. Ayrıca etmenlerin soyutlama düzeyleri de daha kapsamlıdır.
Nesneye yönelik programlamada hangi eylemin yapılacağı ve bir eylemin yapılıp yapılmayacağı, nesneyi çağıran tarafından belirlenir. Ancak etmenler çevrelerindeki değişime, bilgi dağarcığına ve planlarına göre hangi eylemleri gerçekleştireceklerine kendileri karar verirler.
Etmenler diğer etmenlere neyi yapmaları gerektiğini nasıl yapılacağını belirtmeden söyler. Nesnelerdeyse, neyin yapılması gerektiğini nasıl yapılacağını belirterek söylemek gerekir. Bu yapılacak işlemin sabit olarak kodlandığı belirli bir metodu çağırmak anlamına gelmektedir.
Nesneler içlerinde bulundukları ortamla olaylar (events) aracılığıyla iletişim kurarlar. Ancak nesnelerin olayları algılayabilmeleri için, uygun şekilde programlanmış olmaları gerekir. Etmenlerse etraflarını bünyelerinde var olan algılayıcılarla algılarlar ve bu algılama sonrasında ne yapacaklarına yine aynı ortamı etkileyecek tepkilerde bulunurlar.
Nesneler sadece oluşturuldukları zaman belirlenen işlemleri uygulayabilirler. Etmenler de nesneler gibi mesaj iletimiyle çalışırlar. Ancak etmenler nesnelerden farklı olarak bu mesajlara farklı durumlara göre farklı tepkiler verebilirler. Etmenlerin mesajlara farklı cevaplar vermesini sağlayan şey öğrenebilir olmalarıdır.
EYP, NYP den farklı olarak mental durum tavırları taşıdığından fikir, yetenek ve karar gibi özelliklere sahiptir. Etmenler bilgilenme, talepte bulunma, öneride bulunma, kabul etme, reddetme ve diğer etmenlere yardım etme gibi işlemler gerçekleştirebilirler.
Etmenler de nesneler gibi durum bilgisi ve davranışları içerir (encapsulate). Ama etmen bir nesneden fazla olarak akılcı karar verme sistemidir.
Nesneler durumlarını diğer nesnelerin erişebileceği özellikler (attributes) ya da gizlenmiş bilgiler olarak tutarken, etmenler oluşturulurken belirlenen bilgiler, etraflarından algıladıkları, diğer etmenlerden gelen bilgiler ve kendi yaptıkları eylemler de dahil, sürekli gelişen bir bilgi tabanı tutarlar.
Nesneler belirli bir işlem (process) üzerinde çalışırken, etmenler (özellikle dağıtık-etmenler) FIPA standartlarına uygun olarak geliştirilmiş dağıtık etmen platformları üzerinde çalışmaktadırlar.
Nesneler dinamik davranışlar sergileyebilirler. Ancak bu davranışların dışarıdan tetiklenmesi gerekmektedir. Etmenlerse kendi başlarına hareket edebilirler.
SONUÇ
Sonuç olarak proaktif olarak, belirli bir kullanıcının yönlendirmesinden bağımsız olarak, çalışması gereken uygulamalar için en uygun programlama yaklaşımının EYP olduğu söylenebilir. Sistem üzerinde sürekli çalışan ve kendine verilen görevlere uygun olarak çalışması gereken sistemleri akıllı etmen olarak tasarlamak doğru bir yaklaşım olarak görülmektedir. Ancak kullanıcıyla etkileşimin zorunlu olduğu yerlerde olay-güdümlü programlama ve NYP daha uygun ve kaçınılmaz bir tercih olacaktır. Çünkü EYP kullanıcıdan bağımsız çalışmaktadır ve bu yaklaşımla kullanıcı arayüzü tasarımı mümkün olmaz. Diğer taraftan geniş kapsamlı sistemler için etmene yönelik ve nesneye yönelik programlama paradigmaları birlikte kullanılarak çözüm geliştirilmesi mümkündür ve bu yaklaşım en optimum çözümlerin geliştirilmesini olanaklı kılmaktadır.
Hoşça ve sağlıcakla kalın.
Toplam 2387 kez okundu.
Oyla:
En Düşük
En Yüksek
Lütfen bu bölüme sadece
yorumlarınızı yazın. Teknik yardıma ihtiyaç duyduğunuz konuları lütfen
forumda ilgili bölüme veya
Uzmanına Sorun bölümümüze yazın, yanıtınızı çok daha sağlıklı ve hızlı olarak alabilirsiniz