Programmazione guidata dagli eventi: perché è di tendenza adesso?
Pubblicato: 2019-09-17La programmazione basata su eventi (EDP) sta cambiando il mondo dei servizi di sviluppo software e sta diventando parte integrante dello sviluppo odierno. La sua diffusione è stata stimolata da Windows e dalla diffusione degli ambienti visivi RAD. Come suggerisce il nome, l'approccio di programmazione si concentra sugli eventi. Quest'ultimo può essere avviato dall'utente, sistemico e generato dal programma. Le aree più comuni dell'applicazione EDP oggi includono la creazione di GUI, app server e sviluppo di giochi multi-player.
A differenza dei programmi vecchio stile che controllano le opzioni dell'utente e predeterminano il flusso di eventi, la programmazione più adattiva e innovativa ha creato un'interfaccia utente grafica (GUI). La GUI ha cambiato l'interazione uomo-computer offrendo agli utenti più opzioni sotto forma di menu a discesa, finestre, pulsanti e caselle di controllo. Pertanto, invece di seguire l'ordine predeterminato di azioni impostato dal computer, gli utenti sono stati in grado di scegliere autonomamente uno dei tanti comandi disponibili.
Cos'è la programmazione guidata dagli eventi? Come viene implementato oggi? Quali vantaggi e svantaggi offre a programmatori, aziende e utenti finali? Quali esempi di questo approccio allo sviluppo software sono disponibili?
Leggi questa guida completa che abbiamo creato in associazione con LitsLink per trovare tutto ciò che potrebbe interessarti.
- Che cos'è la programmazione guidata dagli eventi?
- La gestione degli eventi come nucleo dell'EDP
- Caratteristiche delle applicazioni basate su eventi
- Linguaggi di programmazione guidati dagli eventi
- Vantaggi della programmazione guidata dagli eventi
- Svantaggi della programmazione guidata dagli eventi
- Esempi di programmazione guidata dagli eventi
Che cos'è la programmazione guidata dagli eventi?
Mentre la programmazione tradizionale è lineare e basata sul flusso di esecuzione, con operazioni in esecuzione per un intervallo fisso o fino al raggiungimento di punti decisionali prestabiliti, la programmazione guidata dagli eventi procede in base all'attivazione di determinati eventi (ad esempio, clic del mouse, pressione di alcuni tasti sulla tastiera, selezionando un'opzione da un menu a tendina). Questo tipo di programmazione è più comune per i programmi con interfacce utente grafiche (GUI). Nel caso in cui venga utilizzato, il programma attende che si verifichino eventi e quindi risponde.
Affrontiamo un po' di terminologia introduttiva per una migliore idea di EDP.
- Evento: un evento è una condizione che si verifica durante la vita del programma e che richiede alcune azioni da parte del sistema di runtime. Gli eventi sono diversi per natura. Alcuni richiedono al programma di recuperare e visualizzare determinate informazioni. Altri avviano alcuni calcoli e cambiano stato.
- Messaggio: un messaggio è una struttura dati che rappresenta un evento in fase di esecuzione. Fornisce informazioni sul tipo di evento e sui parametri necessari al programma per gestirlo.
- Gestore di eventi: un gestore di eventi è una determinata unità nel programma attivata per reagire all'evento.
- Ciclo di messaggi: è un algoritmo di polling utilizzato per l'implementazione EDP tramite esame continuo della coda dei messaggi e instradamento del traffico ai gestori di eventi.
Consigliato per te: una guida per principianti all'uso di Scala in Apache Spark.
La gestione degli eventi come nucleo dell'EDP
La gestione degli eventi costituisce la base dell'EDP e distingue questo paradigma di programmazione dagli altri. Le azioni del programma che seguono i fondamenti dell'EDP vengono avviate da eventi pianificati, eventi hardware, eventi del sistema operativo, eventi di runtime del linguaggio ed eventi attivati dalle istruzioni dell'utente fornite attraverso l'interazione con la GUI del programma. I programmatori specificano queste azioni durante lo sviluppo del software sotto forma di gestori di eventi. Nel senso più semplice, i programmatori devono rispondere alla domanda "cosa dovrebbe accadere quando si verifica un evento specifico?"
Il modello EDP più basilare è il modello hardware. Presuppone che il funzionamento dell'unità di elaborazione centrale sia interrotto da qualsiasi stimolo esterno che richieda la sua risposta. In tali condizioni, una piccola elaborazione dell'evento viene eseguita da un gestore di interrupt primitivo, mentre le funzioni di livello superiore del sistema operativo rimangono intatte. Tuttavia, questo modello è piuttosto primitivo, privo della coda dei messaggi, mentre i moderni sistemi ODP funzionano diversamente.
Uno dei più antichi strumenti di gestione degli eventi nell'ingegneria del software è la funzione di callback. È un modello procedurale EDP basato sul modello della tabella vettoriale di interrupt. Le funzioni di richiamata hanno interfacce predeterminate, che possono differire leggermente a seconda del tipo di evento. I tipi di evento sono piccoli numeri interi in fase di esecuzione che calcolano la posizione dell'evento nella tabella di callback. Il ciclo di messaggi richiama la funzione di callback dopo aver scoperto il messaggio all'inizio della coda corrispondente a quel tipo di evento. Affinché la funzione venga eseguita nel processo EDP, il linguaggio di programmazione in cui ciò viene eseguito dovrebbe fornire un metodo per associare gli eventi a specifiche funzioni di callback.
Caratteristiche delle applicazioni basate su eventi

Le app basate su eventi differiscono l'una dall'altra, a seconda dei loro scopi e funzionalità. Tuttavia, tutti devono possedere un insieme universale di caratteristiche, come ad esempio:
- L'astrazione dell'evento spesso si presenta esplicitamente come monade;
- La capacità di sincronizzazione degli eventi;
- Un'implementazione di stile di passaggio di continuazione sotto forma di callback;
- Fonti di eventi primitivi.
Linguaggi di programmazione guidati dagli eventi
È possibile creare programmi guidati da eventi in qualsiasi linguaggio di programmazione moderno, mentre Visual Basic, Visual C++ e Java sono particolarmente adatti a questo scopo. Ad esempio, i linguaggi di programmazione visiva Visual C++ e Visual Basic sono dotati di una suite IDE (Integrated Development Environment) con numerose opzioni di controllo standard, eventi e modelli di codice del gestore di eventi. Python è anche utilizzato come strumento EDP adatto.
Potrebbe piacerti: Introduzione alla programmazione: una breve descrizione di Node JS, Laravel, React, Ruby, Vue e Python.
Vantaggi della programmazione guidata dagli eventi
Questo approccio alla codifica del software possiede numerosi vantaggi per tutte le parti interessate. Richiede meno decisioni codificate rispetto alle applicazioni console. Molti eventi sono determinati dalle azioni dell'utente anziché dalla codifica anticipata di tutti i possibili scenari. Mentre le app basate su console agiscono, le app basate su eventi reagiscono. In secondo luogo, rimuove la possibilità di inserimento di valori non validi. Un'app basata su console pone una domanda e consente all'utente di digitare la risposta. Le app basate su eventi offrono comunemente una serie di opzioni come pulsanti o come menu a discesa.
ODP è perfettamente adatto alle recenti tendenze dell'ingegneria del software, come il cloud computing, i microservizi e la necessità di una maggiore scalabilità con sistemi flessibili e distribuiti. L'uso di ODP elimina la necessità di correggere e regolare il codice esistente quando si aggiungono o si rimuovono alcuni moduli. Il sistema ODP continua a funzionare perfettamente indipendentemente da eventuali aggiustamenti di questo tipo. Pertanto, i programmatori elogiano il paradigma ODP per essere intuitivo e adatto ad applicazioni con flussi di controllo basati su un complesso di eventi interni ed esterni piuttosto che sulla struttura. Altri vantaggi di ODP includono:
- Uso della programmazione orientata agli oggetti come base;
- Migliori risultati di progettazione del software;
- Migliore reattività e flessibilità dei programmi risultanti;
- Elaborazione più rapida grazie alla diffusione dei dati su più processori e gestori di eventi;
- Migliore scalabilità dell'app;
- Migliore accoppiamento libero.
Svantaggi della programmazione guidata dagli eventi
Uno degli svantaggi più comunemente citati della programmazione basata su eventi è il complesso flusso di controllo e la gestione manuale dello stack. A causa di questi inconvenienti, questo approccio alla codifica non è l'opzione migliore per app semplici e di piccole dimensioni poiché gli sforzi non sono ragionevoli.
Inoltre, va tenuto presente che la programmazione event-driven non sostituisce la tradizionale programmazione strutturata, ma la integra. Le tecniche di programmazione convenzionali sono ancora fondamentali per scrivere il programma vero e proprio, mentre gli elementi di codifica guidati dagli eventi possono aiutare nella progettazione della GUI.
La flessibilità dell'ODP, suo indiscutibile vantaggio, si trasforma anche in una truffa in alcuni scenari. Una di queste manifestazioni è l'imprevedibilità di un programma ODP in caso di modifiche e un controllo più debole sul sistema in generale. Mentre i codificatori apprezzano ODP per aggiustamenti senza attriti, ad esempio l'eliminazione o l'aggiunta di alcuni moduli funzionali, questi aggiustamenti possono causare alterazioni impreviste nella funzionalità. Nella programmazione tradizionale, il sistema rileva immediatamente tali anomalie di funzionalità e fornisce un report al codificatore sulle loro cause, in ambiente ODP, il rilevamento di tali disfunzioni è più lento e complesso.
Ti potrebbe piacere anche: I pro e i contro del linguaggio di programmazione Elixir.
Esempi di programmazione guidata dagli eventi
I programmi guidati dagli eventi sono diventati molto comuni oggi. Gli esempi più popolari includono l'elaborazione di testi, i toolkit di disegno, i fogli di calcolo, ecc. Anche la maggior parte dei moderni sistemi di messaggistica segue i modelli guidati dagli eventi, mentre i siti Web su larga scala utilizzano le architetture scalabili e guidate dagli eventi di natura distribuita. ODP ha anche rivendicato un posto solido nei moderni sistemi operativi multi-tasking e in una varietà di framework di programmazione. Con tali vantaggi e un alto grado di regolazione intuitiva e flessibile, ODP rimarrà sicuramente un'opzione di codifica molto popolare nella comunità dei consumatori che desiderano una maggiore personalizzazione e personalizzazione dal software che consumano.