Programmation événementielle
La programmation événementielle, connue en anglais sous le nom de «event-driven programming», est une structure de contrôle obligeant a effectué le développement d'actions basé sur des événements d'entrée (clavier, souris) et sortie (disque, mémoire,...). Elle s'oppose donc, dans son concept, à la programmation séquentielle, car elle cible des endroits précis où l'exécution doit s'effectuer plutôt que de laisser le plein contrôle à une application décidant d'interroger une application au moment qu'il souhaite le clavier par exemple. La façon d'effectuer la programmation événementielle est intéressante, car elle oblige une application à être bien structurée dès le départ, elle s'applique cependant pas bien à toutes les méthodologies de développements, ainsi, la programmation Web client-serveur peut l'intégrer que de façon très légère dans ses processus, tout comme un compilateur n'a pas vraiment une vision dans ce sens. Par contre, lorsqu'on développe dans un environnement multifenêtre ou qu'on souhaite transformer en application une page Web (avec du JavaScript par exemple), la programmation événementielle révèle toute sa force !
Pourquoi précisément dans une page Web, la programmation événementielle devient un avantage aussi important ? Lorsqu'on doit gérer plusieurs processus en même temps, et qu'on leur donne 100% du temps, on fait travailler inutilement la machine pour des situations où il ne devrait rien faire. Par exemple, si le processus ne fait qu'attendre qu'on clic sur un bouton avant d'agir, pourquoi devrait-on consommer 50% de la puissance de la machine alors qu'un autre processus lui aurait besoin bien au contraire d'être en permanence actualisée pour un système de clavardage par exemple. En théorie, on peut donc mieux distribuer la charge des processus en utilisant la «Programmation événementielle» !
Les règles générales appliquées
- Le déroulement est contrôlé par le déclencheur d'événements ou les actions de l'utilisateur
- Il n'a pas de processus principal (elle est plutôt déplacée dans la bibliothèque)
- Les fonctions sont des réactions aux événements
- Le programme principal ne contient que l'initialisation
- L'application n'a pas à ce souciez de problème de mémorisation de plusieurs fois le même événement, ainsi les événements sont placés dans une file d'attente (FIFO).
Avantage
- Oblige les applications à être mieux structurées.
- Elle facilite grandement la gestion des mouvements de la souris.
- Elle est bien adaptée au langage de programmation moderne comme le Java et C#.
- Peut être combiné avec le modèle technologie MVC.
Inconvénient
- Limite parfois les possibilités d'une application. Par exemple, si aucun événement n'a été créé pour 3 clics de souris, il devient difficile de l'appliquer à un programme.
- Peut très difficilement s'appliquer aux applications consoles.
- Sur les systèmes d'exploitation lents ou mal développés, on peut parfois constater des effets de «lag».
- Codes d'applications parfois difficiles à étendre et mettre en pratique dans des applications complexes.
Dans la pratique, la plupart des applications avec du développement basé sur GUI utilisent la programmation événementielle. De plus, même des moteurs d'exécution JavaScript comme Node.js utilise des événements pour gérer les demandes. Pour ceux cherchant des alternatifs à la programmation événementielle, il existe entre autre les «Automate fini», laquelle est utilisé, par exemple, pour les compilateurs.
Remarques
- Si vous souhaitez programmer avec la méthode de la programmation événementielle au niveau matériel, vous devriez plutôt envisager d'utiliser la programmation avec des interruptions.
- Si vous avez développé une application en programmation séquentielle, il sera très difficile de l'adapter pour la programmation événementielle, il faudra donc prévoir à l'avance le programme dans cette optique si vous comptez utiliser les deux types de programmations.