Come funziona la programmazione guidata dagli eventi

Nella

programmazione informatica, la programmazione guidata dagli eventi è un paradigma di programmazione in cui il flusso del programma è determinato da eventi esterni. Gli eventi dell'interfaccia utente da mouse, tastiere, touchpad e touchscreen e input di sensori esterni sono casi comuni. Gli eventi possono anche essere generati a livello di codice, ad esempio da messaggi provenienti da altri programmi, notifiche da altri thread o altri eventi di rete.

La programmazione guidata dagli eventi è il paradigma dominante utilizzato nelle applicazioni con interfacce utente grafiche e nei server di rete.

In un'applicazione guidata dagli eventi, c'è generalmente un ciclo di eventi che ascolta gli eventi e quindi attiva una funzione di callback quando viene rilevato uno di questi eventi.

I programmi basati sugli eventi possono essere scritti in qualsiasi linguaggio di programmazione, anche se l'attività è più semplice nei linguaggi che forniscono astrazioni di alto livello.

Sebbene non si adattino esattamente al modello basato sugli eventi, la gestione degli interrupt e la gestione delle eccezioni hanno molte somiglianze.

È importante distinguere tra paradigmi basati sugli eventi e basati sui messaggi (ovvero basati sulla coda): i servizi basati sugli eventi (ad esempio AWS SNS) sono disaccoppiati dai loro consumatori. Mentre i servizi basati su code/messaggi (ad es. AWS SQS) sono abbinati ai loro consumatori. [1]

Poiché il ciclo di eventi di recupero/invio di eventi è comune tra le applicazioni, molti framework di programmazione si occupano della loro implementazione e si aspettano che l'utente fornisca solo il codice per i gestori di eventi.

RPG, un primo linguaggio di programmazione di IBM, il cui concetto di progettazione degli anni '60 era simile alla programmazione guidata dagli eventi discussa sopra, forniva un loop di I/O principale incorporato (noto come "programma ciclo") in cui i calcoli hanno risposto in base a "indicatori" (flag) che sono stati impostati in precedenza nel ciclo.

Gestori eventi

La logica effettiva è contenuta nelle routine del gestore eventi. Queste routine gestiscono gli eventi a cui il programma principale risponderà. Ad esempio, un singolo clic con il tasto sinistro del mouse su un pulsante di comando in un programma GUI può attivare una routine che aprirà un'altra finestra, salverà i dati in un database o uscirà dall'applicazione. Molti IDE forniscono al programmatore modelli di evento GUI, consentendo al programmatore di concentrarsi sulla scrittura del codice dell'evento.

Tenere traccia della cronologia è normalmente banale in un programma sequenziale. Poiché i gestori eventi vengono eseguiti in risposta a eventi esterni, strutturare correttamente i gestori in modo che funzionino quando vengono chiamati in qualsiasi ordine può richiedere particolare attenzione e pianificazione in un programma basato su eventi.

Oltre a scrivere i gestori eventi, i gestori eventi devono anche Da associare agli eventi in modo che venga chiamata la funzione corretta quando si verifica l'evento. Per gli eventi dell'interfaccia utente, molti IDE combinano i due passaggi: facendo doppio clic su un pulsante, l'editor crea un gestore eventi (vuoto) associato all'utente che fa clic sul pulsante e apre una finestra di testo in modo che sia possibile modificare il gestore eventi.

La

maggior parte delle architetture GUI esistenti utilizza la programmazione basata sugli eventi. [2] Windows ha un ciclo di eventi. Il framework Java AWT elabora tutte le modifiche dell'interfaccia utente su un singolo thread, denominato thread di invio degli eventi. Analogamente, tutti gli aggiornamenti dell'interfaccia utente nel framework Java JavaFX vengono eseguiti nel thread dell'applicazione JavaFX. [3]

Anche la maggior parte dei server di rete e dei framework, ad esempio Node.js, sono basati su eventi. [4]

Gestione degli interrupt e delle

eccezioni

Questa sezione è vuota. Puoi aiutare aggiungendo ad esso. (Maggio 2024)

Vedi anche

Riferimenti

  1. ^ Chandrasekaran, Premanand; Krishnan, Karthik; Ford, Neal; Byars, Brandon; Buijze, Allard (2022). Progettazione basata su dominio con Java - Guida per professionisti . Packt Publishing. CODICE ISBN.
  2. ^ Samek, Miro (1º aprile 2013). "Chi ha spostato il mio stato?". Il dottor Dobb . URL consultato il 28/01/2018.
  3. ^ Fedortsova, Irina (giugno 2012). "Concorrenza in JavaFX". Documentazione JavaFX Home . Oracolo. URL consultato il 4 gennaio 2018.
  4. ^ Programmazione guidata dagli eventi in Node.js.

Presentazione

dei
  • modelli di concorrenza data su scaleconf
  • Programmazione guidata dagli eventi: Introduzione, Tutorial, Storia, tutorial di Stephen Ferg
  • Event-Driven Programming, tutorial di Alan Gauld
  • Event Collaboration, articolo di Martin Fowler
  • Rethinking Swing Threading, articolo di Jonathan Simon
  • The event-driven programming styleArchiviato il 20/02/2005 in Internet Archive., articolo di Chris McDonald
  • Event Driven Programming using Template Specialization, articolo di Christopher Diggins
  • Schiffer, S.; Frohlich, J.H. (1994). "Concetti e architettura di Vista: un ambiente di programmazione multiparadigma". Atti del simposio IEEE del 1994 sui linguaggi visivi . pagine 40-47. DOI:10.1109/VL.1994.363642. CODICE ISBN. S2CID 15927869.
  • Event-Driven Programming and Agents, capitolo
  • LabWindows/CVI Resources
  • Distributed Publish/Subscribe Event System, un esempio open-source in produzione su MSN.com e Microsoft.com