Olay odaklı programlama - Event-driven programming - Wikipedia

İçinde bilgisayar Programlama, olay odaklı programlama bir programlama paradigması içinde programın akışı Tarafından belirlenir Etkinlikler kullanıcı eylemleri gibi (fare tıklamalar, tuşlara basma), sensör çıktılar veya mesajlar diğer programlardan veya İş Parçacığı. Olay güdümlü programlama, kullanılan baskın paradigmadır. grafik kullanıcı arayüzleri ve diğer uygulamalar (ör. JavaScript Web uygulamaları ) yanıt olarak belirli eylemleri gerçekleştirmeye odaklanan kullanıcı girişi. Bu aynı zamanda aygıt sürücüleri (Örneğin., P USB aygıt sürücüsü yığınlarında[1]).

Olay güdümlü bir uygulamada, genellikle bir Ana döngü olayları dinleyen ve ardından bir geri arama işlevi bu olaylardan biri tespit edildiğinde. İçinde gömülü sistemler aynı şey kullanılarak elde edilebilir donanım kesintileri sürekli çalışan bir ana döngü yerine. Olay güdümlü programlar herhangi bir Programlama dili sağlayan dillerde görev daha kolay olsa da üst düzey soyutlamalar, gibi beklemek ve kapanışlar.

Etkinlik sahipleri

Önemsiz bir olay işleyicisi

Çünkü kod, olayları kontrol etmek içindir ve Ana döngü uygulamalar arasında yaygındır, birçok programlama çerçevesi bunların uygulanmasına özen gösterir ve kullanıcının yalnızca olay işleyicileri için kod sağlamasını bekler. Bu basit örnekte, adında bir olay işleyicisine bir çağrı olabilir. OnKeyEnter () bu, kullanıcının ENTER tuşuna basmadan önce yazdıklarına karşılık gelen bir karakter dizisine sahip bir bağımsız değişken içerir. İki numara eklemek için, olay işleyicinin dışındaki depolama alanı kullanılmalıdır. Uygulama aşağıdaki gibi görünebilir.

K sayacını ve T tamsayısını global olarak beyan edin .OnKeyEnter (karakter C) {K sıfırsa C'yi N sayıya dönüştür ve T'de N deposu, aksi takdirde K'yi T'ye ekle, sonucu yazdır ve K'yi sıfıra sıfırla}

Olay işleyicileri harici olaylara yanıt olarak yürüttüğü için geçmişi takip etmek normalde önemsiz olsa da, işleyicileri herhangi bir sırayla çağrıldığında doğru çalışacak şekilde yapılandırmak, olay güdümlü bir programda özel dikkat ve planlama gerektirebilir.

Olay işleyicileri oluşturma

Olay odaklı bir program geliştirmenin ilk adımı, bir dizi alt programlar veya yöntemler, olay işleyici rutinleri olarak adlandırılır. Bu rutinler, ana programın yanıt vereceği olayları ele alır. Örneğin, bir komut düğmesinin sol düğmesiyle tek bir fare tıklaması GUI program başka bir pencere açacak bir rutini tetikleyebilir, verileri bir veri tabanı veya uygulamadan çıkın. Günümüzün birçok programlama ortamı, programcıya olay şablonları sağlayarak programcının olay kodunu yazmaya odaklanmasına olanak tanır.

İkinci adım, olay işleyicilerini olaylara bağlamaktır, böylece olay gerçekleştiğinde doğru işlev çağrılır. Grafik düzenleyiciler ilk iki adımı birleştirir: bir düğmeyi çift tıklar ve düzenleyici, düğmeyi tıklatan kullanıcıyla ilişkili (boş) bir olay işleyici oluşturur ve olay işleyiciyi düzenleyebilmeniz için bir metin penceresi açar.

Olay odaklı bir program geliştirmenin üçüncü adımı, Ana döngü. Bu, olayların oluşumunu kontrol eden ve ardından onu işlemek için eşleşen olay işleyicisini çağıran bir işlevdir. Çoğu olay güdümlü programlama ortamı zaten bu ana döngüyü sağlar, bu nedenle uygulama programcısı tarafından özel olarak sağlanmasına gerek yoktur. RPG, eski bir programlama dili IBM 1960'ların tasarım konsepti, yukarıda tartışılan olay odaklı programlamaya benzeyen, yerleşik bir ana G / Ç Hesaplamaların "göstergelere" (göstergelere) göre yanıt verdiği döngü ("program döngüsü" olarak bilinir)bayraklar ) döngüde daha önce ayarlanmış olanlar.

PL / I'deki özel durum işleyicileri

İçinde PL / I, bir programın kendisi ağırlıklı olarak olay güdümlü olmasa bile, donanım hatası gibi bazı anormal olaylar, taşma veya daha fazla işlemeyi muhtemelen engelleyen "program kontrolleri" meydana gelebilir. Özel durum işleyiciler arayanlarda (görünmeyen) "ON ifadeleri" tarafından sağlanabilir temizlik sonlandırmadan önce daha sonra temizlemek veya kurtarma işlemlerini gerçekleştirmek ve kesintiye uğrayan prosedüre geri dönmek için rutinler.

Yaygın kullanımlar

Mevcut GUI geliştirme araçlarının ve mimarilerinin çoğu olay odaklı programlamaya dayanır.[2] Java AWT çerçevesi, tüm UI değişikliklerini tek bir iş parçacığı üzerinde işler. Olay gönderme iş parçacığı. Benzer şekilde, Java çerçevesindeki tüm UI güncellemeleri JavaFX JavaFX Uygulama Dizisinde oluşur.[3]

Ek olarak, Node.js gibi sistemler de olay güdümlüdür.[4]

Eleştiri

Olay-eylem modeline dayanan programların tasarımı eleştirilmiş ve olay-eylem modelinin programcıları hataya açık, genişletmesi zor ve aşırı karmaşık uygulama kodu oluşturmaya yönlendirdiği öne sürülmüştür.[2] Masaya dayalı devlet makineleri uygulanabilir bir alternatif olarak savunulmuştur.[5] Öte yandan, masa güdümlü durum makinelerinin kendileri de dahil olmak üzere önemli zayıflıklardan muzdariptir devlet patlaması fenomen.[6] Bunun için bir çözüm kullanmaktır Petri ağları.

İstifsiz diş açma

Olay odaklı bir yaklaşım, donanım açıklama dilleri. Bir iş parçacığı bağlamı, bir olayı aktif olarak işlerken yalnızca bir CPU yığınına ihtiyaç duyar; İşlem tamamlandıktan sonra, CPU diğer olay güdümlü iş parçacıkları işlemeye devam edebilir, bu da son derece büyük sayıda iş parçacığının işlenmesine izin verir. Bu aslında bir sonlu durum makinesi yaklaşmak.

Ayrıca bakınız

Referanslar

  1. ^ Vivek Gupta, Ethan Jackson, Shaz Qadeer ve Sriram Rajamani (Kasım 2012). "P: Güvenli Asenkron Olay Odaklı Programlama". Microsoft Araştırma. Alındı 20 Şubat 2017.CS1 Maint: yazar parametresini kullanır (bağlantı)
  2. ^ a b Samek, Miro (1 Nisan 2013). "Eyaletimi Kim Taşıdı?". Dr. Dobb's. Alındı 2018-01-28.
  3. ^ Fedortsova, Irina (Haziran 2012). "JavaFX'te Eş Zamanlılık". JavaFX Belgeleri Ana Sayfası. Oracle. Alındı 4 Ocak 2018. Bir JavaFX uygulamasının grafik kullanıcı arayüzünü temsil eden JavaFX sahne grafiği iş parçacığı açısından güvenli değildir ve yalnızca JavaFX Uygulama iş parçacığı olarak da bilinen UI iş parçacığından erişilebilir ve değiştirilebilir.
  4. ^ Node.js ve Olay odaklı programlama.
  5. ^ Samek, Miro (11 Mart 2009). "Olay Odaklı Sistemler için Durum Makineleri". Alındı 19 Mart 2013.
  6. ^ Patrick Schaumont (2012-11-27). Donanım / Yazılım Kod İşaretine Pratik Bir Giriş. ISBN  978-1-4614-3737-6.

Dış bağlantılar