¿Qué tan adecuados son los programas controlados por eventos para aplicaciones no gráficas?

Depende totalmente de lo que intentes lograr. Si tiene un sistema que está diseñado para monitorear y responder a alertas aleatorias, como una aplicación de monitoreo de centro de datos, entonces definitivamente puede usar la programación dirigida por eventos.

Otra aplicación podría ser monitorear los precios de las acciones y activar órdenes de compra o venta basadas en el precio actual de las acciones o fondos que está monitoreando.

Sin embargo, también hay aplicaciones donde la programación dirigida por eventos es inapropiada. Por ejemplo, si tiene una fábrica que hace widgets, las acciones y las respuestas son todas secuenciales. Incluso la mayoría de sus alertas están en determinados puntos de la producción, como el selector A no tiene más partes. En este caso, la elección de la programación controlada por eventos para la parte principal de la aplicación no sería aconsejable. Sin embargo, como algunas alertas dicen que algo así como un interruptor automático puede ser aleatorio, puede estar justificado monitorear aquellos que usan un sistema controlado por eventos.

Como tal, para los dos primeros escenarios, usar JavaScript sería una opción válida, pero no es una buena opción para el procesamiento secuencial y el monitoreo que se requiere para la fábrica, aunque desafortunadamente lo he visto utilizado para eso.

Los programas de conducción de eventos son perfectos para cualquier cosa que necesite reaccionar al estímulo.

Pensando en Node, rápidamente, tenemos un núcleo muy pequeño y muy útil para un servidor web:

var http = require (“http”);
servidor var = http.createServer (/ *… * /);
server.on (“solicitud”, handleConnection);

función handleConnection (solicitud, respuesta) {
response.write (“¡Hola, mundo!”);
respuesta.end ();
}

server.listen (“…”);

Hay muchos otros casos de esto; en lugar de sentarse y votar, ser molestado cuando todo está listo es una excelente manera de manejar la complejidad de la asincronía.

Ya sea a través de devoluciones de llamada, futuros / promesas, asíncrono + espera, transmisiones, canales, pub-sub … … como quiera lidiar con eso …
No es un patrón que resuelva todas las cosas (nada lo es), pero hace la vida menos difícil.

Es muy aplicable al control integrado en tiempo real y a las áreas de redes.

En sistemas en tiempo real, la CPU tiende a hacer muy poco, excepto reaccionar a los eventos de los sensores. Como ‘botón de inicio presionado’ y ‘temperatura correcta alcanzada’. El código hace que los actuadores hagan cosas; que podría ser “encender el calentador de agua” y “apagar el calentador de agua”. Las condiciones de alarma como ‘temperatura demasiado alta’ también forman eventos agradables.

Las redes como con TCP o HTTP son similares. El paquete recibido, la conexión disponible, etc., son eventos agradables.

Los sistemas basados ​​en eventos definitivamente tienen una aplicabilidad más amplia que solo las GUI

Muy adecuado en realidad. Piense en cualquier aplicación nodejs, servidores web como nginx, colas de mensajes, controladores de dispositivos, hojas de cálculo, etc.

Esos son solo algunos ejemplos fuera de mi cabeza, pero cualquier tipo de programación reactiva utiliza el modelo impulsado por eventos.

Depende totalmente de lo que estés construyendo. Si está construyendo algún tipo de calculadora, entonces probablemente no. Pero quizás esté creando una aplicación que indexe archivos de un directorio en una base de datos. Bueno, es posible que desee ejecutar ese código en un evento de cambio de directorio.

Los idiomas, las tecnologías, los patrones y los enfoques deben estar justificados por el contexto de la solución que está intentando construir.