La programación dirigida por eventos se caracteriza por no controlar la secuencia de ejecuciones. Más bien, en la programación dirigida por eventos se reacciona a los sucesos ocurridos. Para ello, generalmente los programas corren indefinidamente integrando manejadores de eventos (event handlers).
Eventos y event handler
Los programas dirigidos a eventos se mantienen en estado de reposo, hasta que una acción dispara un event handler. Este se encarga de procesar el evento en cuestión. Algunos eventos comunes son:
Clics (ya sea en un mouse, teclado, pantalla, etc.)
Sensores (de temperatura, movimiento, etc.)
Mensajes
Triggers
Casos de aplicación
Solicitudes HTTP
Casos de uso
Entre los casos de uso de la programación dirigida a eventos encontramos.
GUIs
Aplicaciones web
Sistemas de booking
Sistemas de alarmas
Robótica
Videojuegos
Funcionamiento
En la programación imperativa tenemos una secuencia de pasos que se van a ejecutar de manera secuencial, y después puede repetirse el ciclo o puede llegar a detenerse el programa porque así lo decidimos o porque forzamos su detención.
Por otro lado, en la programación dirigida por eventos, tenemos un ciclo el cual mientras haya una condición que sea verdadera, se puede estar ejecutando de manera indefinida. Este ciclo va a escuchar ciertos eventos que van a modificar algunas variables de estado (por ejemplo, el contador de vidas en un videojuego). La modificación de estas variables puede resultar en que el ciclo se detenga, y que el programa finalice.
Lenguajes y ejemplos
Algunos lenguajes que implementan este paradigma son:
Java
JavaScript
C#
Librerías/Frameworks de GUI
JavaFX, React.js, PyQT
Prácticamente, cualquier lenguaje orientado a objetos.
Aquí vemos un ejemplo en JavaScript. Nota el uso de addEventListener
Y un ejemplo en Java. Añadimos un event listener con addMouseListener
Conclusión
La programación dirigida por eventos nos permite tener programas que corran indefinidamente, y que respondan cuando ocurre un evento. Deja en los comentarios si consideras que la programación orientada a eventos es un paradigma imperativo o declarativo 😉.
Contribución creada por: Ciro Villafraz con los aportes de Valentina Barrios.
Aportes 62
Preguntas 3
Ordenar por:
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
La programación orientada a eventos es una mezcla de ambas, ya que en algunos casos tienes qué decirle que quieres hacer o en otros decirle cómo hacerlo.
.
Este paradigma lo conocí con Java al ver que tenía manejadores de eventos en sus ventanas gráficas jaja.
.
Otro ejemplo de programación orientada a eventos es Arduino, ¿recuerdan ese Arduino que hizo Freddy en el curso de programación básica? Eso reaccionaba a los niveles de luz que detectaba el sensor, eso es reaccionar a un evento 👀
Hola Platzinauta. 👋
Te comparto mis apuntes para que #NuncaParesDeAprender. 👀✍
Programación dirigida por eventos
Se caracteriza porque no controla la secuencia de ejecuciones, reacciona a los sucesos ocurridos.
Generalmente los programas corren indefinidamente integrando manejadores de eventos (event handlers).
Eventos
Clicks
Teclas
Sensores
Mensajes
Triggers
Casos de aplicación
GUIs
Aplicaciones web
Sistemas de booking
Sistemas de alarmas
Robótica
Videojuegos
Cómo funciona
Sí lo comparamos con la programación imperativa, tenemos una secuencia de pasos que se van a ejecutar de manera secuencial y después puede repetirse el ciclo o puede llegar a detenerse el programa porque así lo decidimos o porque forzamos su detención. En la programación dirigida por eventos, tenemos un ciclo que puede ser un while el cuál mientras haya una condición sea verdadera o falsa, se puede estar ejecutando de manera indefinida. Entonces este ciclo va a recibir ciertos eventos que van a modificar algunas variables de estado, que puede ser como el caso de un videojuego, el contador de vidas, en el cual la condición dice que mientras que el número de vidas sea mayor que 0, se va a estar ejecutando el programa, pero habrán ciertos eventos que van a hacer que ese número de vidas disminuya o aumenten y por consecuencia el videojuego termine en ese ciclo.
Lenguajes
Java
Javascript
C#
Librerías/Frameworks de GUI
-JavaFX, React.js, PyQT
Prácticamente cualquier lenguaje orientado a objetos.
Un evento puede ser un clic en un botón de un formulario. Otro que se usa mucho en web es cuando carga una pagina. Todo esos son eventos y son los que controlan el flujo del programa.
Me acabo de dar cuenta que cuando hice un programa en python con un desarrollo grafico con SimplePY, lo hice con el paradigma dirigida a eventos. Como dijo al principio, podemos usar un paradigma y ni saber que es eso… 😁
Considero que está programación dirigida por eventos tiene elementos de imperativo y un elemento de declarativo,
Dado que nosotros no especificamos cómo escuchará, simplemente le decimos qué escuchar (en JavaScript agregamos un eventListener con el elemento y ya) pero si definimos paso a paso qué hará y cómo lo hará cuando el evento suceda. No sé si estaré equivocado que piensan los demás compañeros?
Yo veo a la programación dirigida por eventos, más allegada al paradigma declarativo, dado que en la programación por eventos, estamos en espera de que ocurra alguna acción del usuario, por ejemplo, para responder a dicha petición o acción.
Como mencionan mis otros compañeros, este tipo de programación puede incluir otros paradigmas de programación. Por ejemplo, cuando creamos una intefaz CRUD C# mediante Windows Forms, o en Visual Basic, desarrollamos clases donde tendremos la conexión a la Base de Datos, otras clases que se encarguen de la lógica de negocio, y en la interfaz tendremos eventos por ejemplo un Buttom “Guardar”, una vez que el usuario haga click sobre el boton, se disparará el evento y realizará las acciones que definimos.
📦 La programación dirigida por eventos permite que la estructura como la ejecución de los programas sean determinados por los sucesos que ocurran en el sistema, definidos por el usuario.
PARADIGMA DE PROGRAMACIÓN DIRIGIDA A EVENTOS
.
El paradigma de programación dirigida a eventos (event-driven) se caracteriza porque no controla la secuencia de ejecución sino que reacciona a los suceso que ocurren. Estos sucesos son percibidos por manejadores de eventos (event handlers).
.
Cuando el programa se ejecuta de manera indefinida pueden ocurrir estos eventos y de ahí se generan una serie de acciones o procedimientos.
. Tipos de eventos
.
La programación dirigida por eventos es un paradigma de programación imperativa, ya que requiere de la especificación de la lógica de la aplicación a través de un conjunto de instrucciones explícitas. En un programa dirigido por eventos, el flujo de control de una aplicación se basa en la detección y respuesta a eventos externos como pulsaciones de teclado, movimientos del ratón, señales de red, etc. Los ejemplos de código a continuación muestran cómo esto se lleva a cabo en diversos lenguajes de programación:
// JavaScript -document.addEventListener("click", function(){
alert("Has hecho click!");
});
El padre del desarrollo estructurado (que no de la programación estructurada ojo) fue Larry LeRoy Constantine bajo el ala del Instituto de Investigación de Sistemas de IBM.
Se caracteriza más que nada a que no se basa en un orden de ejecuciones, sino que reacciona a ciertos sucesos más conocidos como eventos, los cuales corren indefinidamente en un programa a traves de manejadores de eventos (event handlers).
Eventos
Los eventos pueden ser más que nada, acciones que realiza el usuario o tambien señales que envia la computadora. Por ejemplo, Clicks, Teclas, Sensores, Mensajes, Triggers.
Los casos más comunes de uso son, aplicaciones web, interfaces de usuarios, alarmas, robotica, etc.
Funcionamiento
La programación dirigida por eventos funciona como si tuviera un ciclo while que se ejecuta de manera indefinida, y dentro de este tuvieramos los event handler que nos avisará si ocurrió cierto evento, los cuales activarian cierta acción.
La programación dirigida por eventos se considera un paradigma de programación declarativo. En este enfoque, el programador se enfoca en especificar qué eventos desencadenan qué acciones, en lugar de controlar explícitamente el flujo de la aplicación. En otras palabras, se especifica qué debe hacerse en respuesta a un evento, pero no cómo debe hacerse. Por lo tanto, el énfasis está en la descripción de las relaciones entre los eventos y las acciones, en lugar de en los detalles de implementación.
En resumen, la programación dirigida por eventos es declarativa porque describe el comportamiento deseado en términos de relaciones entre eventos y acciones, en lugar de especificar paso a paso cómo lograr ese comportamiento.
La **programación dirigida por eventos** se caracteriza por no controlar la secuencia de ejecuciones. Más bien, en la **programación dirigida por eventos** se reacciona a los sucesos ocurridos. Para ello, generalmente los programas corren indefinidamente integrando manejadores de eventos (**event handlers**).
En la programación existe la programación orientada a eventos, en la que un evento es un mensaje de software que indica que algo ha ocurrido, como un tecleo o un click de un mouse. En el control de procesos, un evento es una ocurrencia que ha ocurrido y que ha sido registrado.
Me parece que la declaración dirigida por eventos es declarativa pues también en el video el profe hizo un contraste entre la programación imperativa (lo secuencial que es) y procesos dirigidos por eventos.
Programación dirigida por eventos:
Es un paradigma de programación en el que el flujo del programa está determinado por eventos o mensajes desde otros programas o hilos de ejecución, estas interrupciones pueden suceder en cualquier momento y no cuando el programa lo indique.
Si aun no has tomado el curso gratis de de programación básica, un ejemplo practico es la clase 15: Eventos y Formularios en HTML y JavaScript y la clase 16:** Detectar eventos del teclado con JavaScript**, aun así es un buen repaso, para entender mejor si vas iniciando así como yo :3
Yo considero que la programación dirigida por eventos tiene ambos mundos de los paradigmas, tanto imperativa como declarativa. Principalmente, por que cuando, por ejemplo, se quiere programar un botón no sabes como funciona la lectura de ese evento, solo declaro que va a pasar cuando le de click, por ejemplo. Y en esas instrucciones puede darse el caso de utilizar programación estructurada y orientada a objetos. En Java es común que cuando le des un click a un botón de registrar se cree un nuevo objeto de una clase.
Yo creo que puede ser una mezcla de los dos paradigmas, debido a que no sabemos como funciona un action listener, pero lo usamos porque sabemos cuál será el resultado de que se active esa acción. Por otra parte, hay que hacer algunos funcionamientos en el programa que solo nosotros sabemos cómo se realizan, por ejemplo obtener dos números y sumarlos como en una calculadora.
Creo que la programación por eventos, es en parte declarativa y en parte imperativa.
- Declarativa: Porque no impone un flujo rígido. Maneja una serie de condicionales, adaptando la ejecución del código, a los eventos que van sucediendo.
- Imperativa: Porque para un evento concreto, posee una serie de instrucciones definidas, que sí son imperativas.
En mi concepto según pude notar, viene combinando las dos, ya que responde a un episodio recurrente, al que se crea la condición, para dar salida o para decirle al usuario las acciones que tiene que hacer para continuar o simplemente para salir.
Para mi punto de vista la programación dirigida por eventos responde en cierta medida al paradigma de programación imperativa, ya que el algoritmo esta estructurado para responder a cada uno de los eventos al que puede estar sometido el sistema durante su tiempo de ejecución.
Este tipo de paradigma no controla la secuencia de ejecucion, solo lo maneja por medio de eventos que pueden ser clicks, que presionen una tecla en específico, sensores, mensajes o disparadores automáticos.
Ejemplos de esto son sistemas de booking, sistema de alarmas (ya que hay un programa o codigo que esta activamente monitoreando los sensores hasta que detecte movimiento) o los videojuegos.
Bueno de la programacion orientada a eventos no tenia ni idea que se puede usar de este modo. Ahora que tengo la teoria bastante clara ya entiendo porque este evento es muy usado en JS o en frameworks. La verdad si que es importante conocer esto para no estar perdido en los lenguajes.
Pensando su definición se usa mucho en procesos industriales. También veo que, a la final, al desarrollar software, vamos a trabajar con casi todos los paradigmas en conjunto.
Mi experiencia con este paradigma de programación es algo distinta, en mi caso la entiendo gracias a microcontroladores, donde hay un núcleo de procesamiento y pequeños periféricos con hardware bien definido esperando eventos o Interrupciones programados por el desarrollador para iniciar su trabajo, estos periféricos serian contadores, módulos de comunicación o moduladores de ancho de pulso. al definirlos el paradigma es declarativo a mi entender.
Yo diría que esta compuesto por ambos factores, ya que imperativamente como desarrolladores le estamos indicando a través de código que ejecute una serie de pasos y este de manera declarativa los va a a ejecutar según como le hayamos indicado.
La programación dirigida por eventos es un tipo de programación imperativa. En la programación dirigida por eventos, se especifican tanto qué se quiere lograr como cómo se quiere lograr, y el control del flujo de ejecución es esencial.
En la programación dirigida por eventos, el programa espera a que ocurra un evento (como un clic en un botón o una entrada de teclado del usuario) y luego ejecuta ciertas acciones en respuesta a ese evento. Esto significa que el programa tiene un cierto control sobre el flujo de ejecución, ya que espera a que ocurran ciertos eventos antes de realizar ciertas acciones.
En comparación, en la programación declarativa, el enfoque se centra en lo que se quiere lograr y no en cómo se quiere lograr, y el control del flujo de ejecución es menos importante.
La programación dirigida por eventos es un paradigma/término común en el vocabulario científico y en expresiones epistemológicas cuando se hacía necesario hablar de modelos o patrones. de programación en el que la estructura y la ejecución de los programas van determinados por los sucesos o acciones que ocurren en el sistema, definidos por el usuario o por el propio sistema.
La programación dirigida por eventos es muy fácil de usar y es adecuada para aquellas personas que tienen poco conocimiento en programación. Con los lenguajes orientados a eventos se pueden realizar en poco tiempo aplicaciones sencillas y muy funcionales, utilizando interfaces gráficas en las que se insertan componentes o controles a los que se le programan eventos. Dichos eventos permiten al usuario realizar una serie de acciones lógicas para un determinado programa.
Dentro de las herramientas de programación dirigida por eventos se encuentra el Mit App Inventor, este maneja una serie de componente/elemento que presta un servicio de comunicación cuando se diseñan interfaces o controles con propiedades que se pueden cambiar para que el componente se muestre en pantalla de forma diferente o actúe de otra manera dentro de la aplicación. Para cambiar las propiedades de un componente, primero debemos seleccionar el componente deseado en la lista de componentes, también debemos tener en cuenta que hay algunos valores de propiedades de algunos componentes que no son modificables y otros que sí lo son.
Otro aspecto a tener en cuenta en la programación dirigida por eventos es el comprender y tener bien claro el concepto de los siguientes términos:
Considero que la PDE contiene de las dos: imperativas y declarativas, por el mismo modo que estás deben de estarse sujetando para cumplir con un inicio y final.
Yo considero que en cierta forma abarca ambos paradigmas, en un principio saber que la programación dirigida por eventos se encuentra más en programas desarrollados bajo la _POO _ciertamente nos da la idea de que estamos trabajando bajo un paradigma imperativo, puesto de describimos objetos con órdenes específicas y detallando circunstancias para que se ejecuten ciertos métodos; no obstante, una vez que el programa funciona en su integridad y apreciamos el resultado final podemos decir que estamos ante un programa que corre bajo un paradigma declarativo,pues todo está automatizado y evitamos dar demasiados detalles para el proceso, simplemente ocurre un estímulo y este se procesa automáticamente para determinar si ocurre o una una acción predefinida, y también evitamos generar efectos colaterales.
A lo mejor y estoy mezclando conceptos y estoy bien equivocado xD pero es mi respuesta
Por lo aprendido en clase, la programación por Eventos llega a ser Declarativa ya que desde una visión del concepto de Paradigma, es la forma como estaríamos controlando y ejecutando diferentes acciones de una aplicación independientemente de que los disparadores sean secuenciales o eventuales lo que nos hace pensar que no podría ser Declarativa.
El paradigma por eventos tiene una combinación de los dos, tanto se programa para un resultado, como se ordena una secuencia de acciones al ocurrir ese evento.
Considero que la programacion dirigida por eventos es imperativa, ya que con los eventos se va a definir el flujo del programa o el desarrollo que se haya creado.
Desde mi punto de vista la programación orientada a eventos tiene detrás el imperativo y el declarativo. Ya que, el evento ya sea como el eventListener ha tenido que ser desarrollado siguiendo un procesos ordenados paso por paso y también hace uso de funciones.
Considero que la programacion por eventos es declarativa, pero tambien tiene
bases de programacion imperativa ya que se deben controlar los estados de finalización y control de los programas.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?