PROGRAMACIÓN DIRIGIDA POR EVENTOS
Programación Dirigida por Eventos, o event-driven programming, es un paradigma de programación en el que el flujo del programa no sigue una secuencia fija de instrucciones escrita por el programador, sino que está determinado por eventos (sucesos) que ocurren en el sistema o por el usuario.En lugar de que el código diga "haz paso 1 → paso 2 → paso 3", el programa espera (escucha) a que pase algo interesante y reacciona solo cuando ocurre ese evento.Componentes principales
- Evento (Event): Algo que ocurre: clic en botón, tecla presionada, llegada de mensaje por red, timer que termina, sensor que detecta movimiento, archivo modificado, etc...
- Escuchador / Listener / Suscriptor: Código que "registra interés" en un tipo de evento (ej. "quiero saber cuando alguien haga clic en este botón").
- Manejador / Handler / Callback: Función que se ejecuta automáticamente cuando ocurre el evento.
- Event Loop (bucle de eventos); El "motor" que está constantemente preguntando: "¿Ha pasado algún evento?" y despacha (envía) el manejador correspondiente.
Ejemplos: el event loop de JavaScript (en navegador o NodeJS), el de GUI en Windows/Linux, etc...
Un ejemplo sencillo sería:
document.getElementById('miBoton').addEventListener('click', function() {
alert('¡Has hecho clic!');
// Aquí va toda la lógica que se ejecuta SOLO cuando ocurre el evento 'click'
});
El código no se ejecuta hasta que el usuario haga clic.h2 style="color:#333; border-bottom:2px solid #0a5; padding-bottom:8px; margin:40px 0 20px;">Ventajas de event-driven
- Muy reactivo y eficiente (no gasta CPU esperando).
- Ideal para asincronía (no bloquea el hilo principal).
- Escalable en sistemas distribuidos (microservicios con eventos, Kafka, RabbitMQ).
- Natural para interfaz de usuario y aplicaciones en tiempo real.
Desventajas
- Código puede volverse difícil de seguir ("callback hell" o "spaghetti events").
- Depuración más compleja (¿por qué se disparó este evento?).
- Gestión de estado más complicada en apps grandes.
document.getElementById('miBoton').addEventListener('click', function() {
alert('¡Has hecho clic!');
// Aquí va toda la lógica que se ejecuta SOLO cuando ocurre el evento 'click'
});
- Código puede volverse difícil de seguir ("callback hell" o "spaghetti events").
- Depuración más compleja (¿por qué se disparó este evento?).
- Gestión de estado más complicada en apps grandes.