¿El bucle de eventos de JavaScript lo convierte en un lenguaje bastante ideal para codificar software de simulación de eventos discretos?

¿Qué …? ¿Qué? ¿”Lenguaje ideal”? ¿Solo porque tiene devoluciones de llamada? Veamos:

¿Qué son las devoluciones de llamada ?
Vamos a aclarar algo para aquellos que no están familiarizados con “Callbacks”. Es el principio de Hollywood: no me llames, te llamaré .

Entonces, en lugar de llamar al estudio y preguntar constantemente si tienen una apertura (encuesta), lo llaman cuando tienen una (devolución de llamada).

¿Es este un “patrón”?
¡Sí! Comúnmente se llama el patrón Observador. Incluso puede considerarlo como un modelo de publicación / suscripción. Y es bastante fácil de implementar en “cualquier” lenguaje de programación.

¿Cómo lo implementas?
Digamos que Hollywood está siendo observado por los actores. Usted “suelta su nombre y detalles de contacto” en una plantilla predefinida a Hollywood. Una vez que surge una apertura, se envía una “notificación” a todos los que enviaron la plantilla, sin ningún orden en particular.

Algo como:

  for (int i = 0; i <interestedActors.length; i ++) {
    interesadosActores [i] .informAboutOpening ("11 am 1234 Hollywood Blvd");
 }

Cada “actor” debe tener la capacidad de recibir el mensaje “informAboutOpening” (es decir, debe implementar una interfaz que exponga dicho método que pase la hora / ubicación como un parámetro de cadena).

Una vez que los actores reciben ese mensaje, ¡pueden hacer lo que quieran con él! Callbacks en acción!

Entonces, ¿cómo funciona bajo el capó?

Bueno, el observador (actor, en este caso) llama a un método predefinido del observable (hollywood) para “registrarse” a sí mismo para que él / ella pueda saber acerca de la apertura. Cuando el observable tiene algo, revisa su lista de observadores “suscritos” y les envía un mensaje, haciéndoles saber acerca de la apertura. Eso es. Llano y simple.

Implementable en todas partes?
Este patrón se puede implementar en todos los idiomas. Algunos idiomas tienen funciones como ciudadanos de primera clase, por lo que puede pasar el método para llamar directamente al “suscribirse” al observable. En otros casos (como Java) debe implementar una interfaz para poder llamar al mismo método para todos los observadores. Eso es todo 🙂

Le sugiero que lea sobre el patrón Observer / PubSub. Se parece a esto para los lenguajes clásicos de OOP:


¿Qué pasa con el “lenguaje ideal”?
Puede codificar un DES en CUALQUIER idioma que elija. ¡Incluso los he codificado en Excel! A veces solo como números, cambiando en celdas y a veces usando VBA. Las devoluciones de llamada son agradables, pero no son necesarias y no deberían ser la característica definitoria para elegir ese idioma. De hecho, ¡el idioma ideal es aquel con el que usted (y / o su equipo) se sienten más cómodos! 🙂