Programowanie sterowane zdarzeniami: dlaczego jest teraz popularne?
Opublikowany: 2019-09-17Programowanie sterowane zdarzeniami (EDP) zmienia świat usług tworzenia oprogramowania i staje się nieodłączną częścią dzisiejszego rozwoju. Jego rozprzestrzenianie się było stymulowane przez system Windows i rozpowszechnianie wizualnych środowisk RAD. Jak sama nazwa wskazuje, podejście programistyczne koncentruje się na wydarzeniach. Te ostatnie mogą być inicjowane przez użytkownika, systemowe i generowane przez program. Najpopularniejsze obecnie obszary aplikacji EDP obejmują tworzenie graficznych interfejsów użytkownika, aplikacji serwerowych i tworzenie gier wieloosobowych.
W przeciwieństwie do programów w starym stylu kontrolujących opcje użytkownika i z góry określających przebieg zdarzeń, bardziej adaptacyjne i innowacyjne programowanie pojawiło się z graficznym interfejsem użytkownika (GUI). GUI zmienił interakcję człowiek-komputer, dając użytkownikom wiele opcji w postaci rozwijanych menu, okien, przycisków i pól wyboru. W ten sposób, zamiast podążać za z góry ustaloną przez komputer kolejnością działań, użytkownicy otrzymali możliwość samodzielnego wyboru jednego z wielu dostępnych poleceń.
Co to jest programowanie sterowane zdarzeniami? Jak to jest realizowane dzisiaj? Jakie zalety i wady oferuje programistom, firmom i użytkownikom końcowym? Jakie przykłady takiego podejścia do tworzenia oprogramowania są dostępne?
Przeczytaj ten obszerny przewodnik, który stworzyliśmy we współpracy z LitsLink, aby znaleźć wszystko, co może Cię zainteresować.
- Co to jest programowanie sterowane zdarzeniami?
- Obsługa zdarzeń jako rdzeń EDP
- Funkcje aplikacji sterowanych zdarzeniami
- Języki programowania sterowane zdarzeniami
- Zalety programowania sterowanego zdarzeniami
- Wady programowania sterowanego zdarzeniami
- Przykłady programowania sterowanego zdarzeniami
Co to jest programowanie sterowane zdarzeniami?
Podczas gdy tradycyjne programowanie jest liniowe i oparte na przepływie wykonywania, z operacjami wykonywanymi przez określony czas lub do momentu osiągnięcia wcześniej zapisanych punktów decyzyjnych, programowanie sterowane zdarzeniami postępuje zgodnie z określonymi zdarzeniami (np. kliknięcie myszką, naciśnięcie niektórych klawiszy na klawiaturze, wybierając opcję z rozwijanego menu). Ten typ programowania jest najbardziej powszechny w przypadku programów z graficznym interfejsem użytkownika (GUI). W przypadku jego użycia program czeka na wystąpienie zdarzeń, a następnie odpowiada.
Zajmijmy się wstępną terminologią, aby lepiej zrozumieć EDP.
- Zdarzenie: Zdarzenie jest stanem pojawiającym się podczas życia programu i wymagającym pewnych działań ze strony systemu wykonawczego. Zdarzenia mają różny charakter. Niektóre z nich wymagają, aby program pobierał i wyświetlał określone informacje. Inne inicjują pewne obliczenia i zmieniają stan.
- Komunikat: komunikat to struktura danych reprezentująca zdarzenie w czasie wykonywania. Podaje informacje o typie zdarzenia i parametrach wymaganych od programu do jego obsługi.
- Obsługa zdarzeń: Obsługa zdarzeń to określona jednostka w programie aktywowana w celu reagowania na zdarzenie.
- Pętla komunikatów: Jest to algorytm odpytywania używany do implementacji EDP poprzez ciągłe badanie kolejki komunikatów i kierowanie ruchu do procedur obsługi zdarzeń.
Zalecane dla Ciebie: Przewodnik dla początkujących dotyczący używania Scali w Apache Spark.
Obsługa zdarzeń jako rdzeń EDP
Obsługa zdarzeń stanowi podstawę EDP i odróżnia ten paradygmat programowania od innych. Działania programu zgodne z podstawami EDP są inicjowane przez zaplanowane zdarzenia, zdarzenia sprzętowe, zdarzenia w systemie operacyjnym, zdarzenia w czasie wykonywania języka oraz zdarzenia wyzwalane przez instrukcje użytkownika dostarczane poprzez interakcję z graficznym interfejsem użytkownika programu. Programiści określają te działania podczas tworzenia oprogramowania w postaci procedur obsługi zdarzeń. W najprostszym sensie koderzy muszą odpowiedzieć na pytanie „co powinno się stać, gdy ma miejsce określone zdarzenie?”
Najbardziej podstawowym modelem EDP jest model sprzętowy. Zakłada ona, że działanie jednostki centralnej jest przerywane przez jakikolwiek bodziec zewnętrzny wymagający jej reakcji. W takich warunkach prymitywny program obsługi przerwań wykonuje niewielką część przetwarzania zdarzenia, podczas gdy funkcje wyższego poziomu systemu operacyjnego pozostają nienaruszone. Model ten jest jednak dość prymitywny, pozbawiony kolejki komunikatów, podczas gdy współczesne systemy ODP funkcjonują inaczej.
Jednym z najstarszych narzędzi do obsługi zdarzeń w inżynierii oprogramowania jest funkcja wywołania zwrotnego. Jest to model proceduralny EDP oparty na modelu tablicy wektorów przerwań. Funkcje wywołania zwrotnego mają z góry określone interfejsy, które mogą się nieznacznie różnić w zależności od typu zdarzenia. Typy zdarzeń to małe liczby całkowite podczas obliczania pozycji zdarzenia w tabeli wywołań zwrotnych w czasie wykonywania. Pętla komunikatów wywołuje funkcję wywołania zwrotnego po wykryciu komunikatu na początku kolejki odpowiadającej temu typowi zdarzenia. Aby funkcja była wykonywana w procesie EDP, język programowania, w którym jest wykonywana, powinien zapewniać metodę kojarzenia zdarzeń z określonymi funkcjami wywołania zwrotnego.
Funkcje aplikacji sterowanych zdarzeniami

Aplikacje oparte na zdarzeniach różnią się między sobą w zależności od ich przeznaczenia i funkcjonalności. Niemniej jednak wszystkie muszą posiadać uniwersalny zestaw cech, takich jak:
- Abstrakcja zdarzenia jest często podawana jawnie jako monada;
- Możliwość synchronizacji zdarzeń;
- Implementacja stylu przekazywania kontynuacji w formie wywołania zwrotnego;
- Źródła zdarzeń pierwotnych.
Języki programowania sterowane zdarzeniami
Możliwe jest tworzenie programów sterowanych zdarzeniami w dowolnym nowoczesnym języku programowania, a Visual Basic, Visual C++ i Java są specjalnie do tego przystosowane. Na przykład wizualne języki programowania Visual C++ i Visual Basic są wyposażone w pakiet zintegrowanego środowiska programistycznego (IDE) z licznymi standardowymi opcjami sterowania, zdarzeniami i szablonami kodu obsługi zdarzeń. Python jest również używany jako odpowiednie narzędzie EDP.
Może ci się spodobać: Wprowadzenie do programowania: krótki opis Node JS, Laravel, React, Ruby, Vue i Python.
Zalety programowania sterowanego zdarzeniami
Takie podejście do kodowania oprogramowania ma wiele zalet dla wszystkich interesariuszy. Wymaga mniejszej liczby zakodowanych decyzji niż aplikacje konsolowe. Wiele zdarzeń jest określanych na podstawie działań użytkownika, a nie wcześniejszego kodowania wszystkich możliwych scenariuszy. Podczas gdy aplikacje konsolowe działają, reagują aplikacje sterowane zdarzeniami. Po drugie, eliminuje możliwość wprowadzenia nieprawidłowej wartości. Aplikacja konsolowa zadaje pytanie i umożliwia użytkownikowi wpisanie odpowiedzi. Aplikacje oparte na zdarzeniach zwykle oferują zestaw opcji w postaci przycisków lub rozwijanego menu.
ODP doskonale pasuje do najnowszych trendów w inżynierii oprogramowania, takich jak przetwarzanie w chmurze, mikrousługi i potrzeba zwiększonej skalowalności dzięki elastycznym, rozproszonym systemom. Zastosowanie ODP eliminuje konieczność poprawiania i dostosowywania istniejącego kodu przy dodawaniu lub usuwaniu jakiegoś modułu. System ODP działa bez zarzutu niezależnie od tego typu regulacji. Dlatego programiści chwalą paradygmat ODP za intuicyjność i dobre dopasowanie do aplikacji z przepływami sterowania opartymi na kompleksie zdarzeń wewnętrznych i zewnętrznych, a nie na strukturze. Inne zalety ODP to:
- Wykorzystanie jako podstawy programowania obiektowego;
- Lepsze wyniki projektowania oprogramowania;
- Lepsza responsywność i elastyczność powstałych programów;
- Szybsze przetwarzanie dzięki rozpowszechnianiu danych między wieloma procesorami i programami obsługi zdarzeń;
- Poprawiona skalowalność aplikacji;
- Lepsze luźne sprzęgło.
Wady programowania sterowanego zdarzeniami
Jedną z najczęściej wymienianych wad programowania opartego na zdarzeniach jest złożony przepływ sterowania i ręczne zarządzanie stosem. Z powodu tych upadków to podejście do kodowania nie jest najlepszą opcją dla prostych, małych aplikacji, ponieważ wysiłki nie są rozsądne.
Poza tym należy pamiętać, że programowanie sterowane zdarzeniami nie zastępuje tradycyjnego programowania strukturalnego, a jedynie je uzupełnia. Konwencjonalne techniki programowania są nadal krytyczne dla pisania rzeczywistego programu, podczas gdy elementy kodowania sterowane zdarzeniami mogą pomóc w projektowaniu GUI.
Elastyczność ODP, jego niezaprzeczalna zaleta, w niektórych scenariuszach okazuje się również oszustwem. Jednym z takich przejawów jest nieprzewidywalność programu ODP w przypadku zmian oraz słabsza kontrola nad całym systemem. Podczas gdy programiści lubią ODP do bezproblemowych dostosowań, np. usuwania lub dodawania niektórych modułów funkcjonalnych, te dostosowania mogą powodować nieoczekiwane zmiany w funkcjonalności. W tradycyjnym programowaniu system natychmiast wykrywa takie nieprawidłowości funkcjonalności i przekazuje koderowi raport o ich przyczynach, w środowisku ODP wykrywanie takich dysfunkcji jest wolniejsze i bardziej złożone.
Może Cię również zainteresować: Plusy i minusy języka programowania Elixir.
Przykłady programowania sterowanego zdarzeniami
Programy sterowane zdarzeniami stały się dziś bardzo powszechne. Najpopularniejsze przykłady obejmują edytory tekstu, zestawy narzędzi do rysowania, arkusze kalkulacyjne itp. Większość nowoczesnych systemów przesyłania wiadomości również stosuje wzorce sterowane zdarzeniami, podczas gdy duże witryny internetowe wykorzystują skalowalne, sterowane zdarzeniami architektury o charakterze rozproszonym. ODP zdobyło również solidne miejsce w nowoczesnych wielozadaniowych systemach operacyjnych i różnych platformach programistycznych. Dzięki takim zaletom oraz wysokiemu stopniowi intuicyjnych i elastycznych dostosowań, ODP z pewnością pozostanie bardzo popularną opcją kodowania w społeczności konsumentów, którzy chcą większej personalizacji i indywidualizacji oprogramowania, z którego korzystają.