2010-02-25 16 views
9

Bueno, el título es más o menos así: si me sentara frente a usted y le pidiera que me explicara el actors, ¿por dónde empezaría? Lo pregunto porque mi master's project los involucra en gran medida, y cada dos días alguien me pide que les diga lo que estoy haciendo. Cuando hablo con otras personas en mi curso no es tan malo, por lo general el concepto es extraño pero comprensible, pero recientemente mi compañero de piso, un químico, me pidió que se lo explicara, y decir que luché sería una gran cosa. atenuación.¿Cómo explicarías los actores a un no programador?

Estoy buscando algún tipo de explicación que transmita la idea, en lugar de los fundamentos técnicos. Puede ser una metáfora, y no tiene que ser precisa; solo quiero que entiendan lo que estoy haciendo con ellos. ¿Algunas ideas?

+5

¿Las personas votan para cerrar como "una pregunta no real" simplemente porque no pueden pensar inmediatamente en una respuesta? –

+1

¿Por qué siento que estoy haciendo el proyecto de su maestro? –

+4

Heh ... Estoy bastante seguro de que no lo eres, Joe. Mi proyecto es escribir un marco que utiliza actores para crear procesos modulares que se ejecutan tanto en el cliente como en el servidor, así como una serie de casos de prueba. Tengo dificultades para explicar cosas técnicas de una manera no técnica, es por eso que hice esta pregunta. –

Respuesta

10
  • Puede haber muchos actores. Todos los actores actúan "al mismo tiempo". La concurrencia es una parte clave de este modelo.

  • Los actores no pueden saber lo que otros actores están pensando. La única forma de mover información es con un mensaje. (Sin estado compartido)

  • actores pueden recibir mensajes y actuar sobre ellos por:

    • haciendo el cálculo con los datos en ellos

    • el envío de mensajes a otros actores

    • creando otros actores.

    • ignorando/descartando el mensaje.

Básicamente, esto hace que actores como ... personas. Las personas no saben lo que piensan los demás, deben enviar mensajes para transmitir información, tienen la opción de ignorar los mensajes entrantes, considerarlos o comunicarse con otras personas. Cosas negativas aleatorias pueden sucederle a la gente. Mucha gente hace cosas al mismo tiempo. Para manejar más carga, agregue más personas.

En cuanto a su proyecto de máster, le sugiero que descubra el marco web de Erlang. El lenguaje de programación Erlang se basa en el modelo Actor y se utiliza con gran eficacia en sistemas escalables, incluidos los conmutadores telefónicos ... y el Facebook messaging system.

+0

Esto es más o menos exactamente lo que estaba buscando. Brillante. En cuanto a Erlang: investigué un poco y se ve muy bien. Sin embargo, el marco que estoy escribiendo pretende facilitar el uso de actores en la web, y aprender un nuevo idioma es demasiado para la mayoría de la gente, así que fui con Python y construí mis propias clases que se comportan como actores. Estoy tentado de portarlo en el futuro sin embargo. –

+0

Esto es como decir "Escuché que los hilos fueron geniales ... ¡así que tenemos que conectar los hilos a la web!" ... bueno, el navegador web YA PUEDE considerarse un actor ... envía un mensaje, no comparte estado con el servidor, espera la recepción de otro mensaje y realiza el cálculo en él. –

+0

Erlang lleva a los actores "completamente abajo" ... y admite millones de actores concurrentes (llamados procesos) en un nodo, y escala de manera transparente a múltiples nodos mientras maneja todas las comunicaciones automáticamente. Es agradable tener este tipo de "raíces" cuando realmente intentas realizar una gran tarea concurrente. –

5

voy a tratar de una simple metáfora:

Los actores son personas que realizan un trabajo dentro de sus casas. En frente de cada casa, hay un buzón. Para comunicarse entre ellos y realizar el trabajo, los mensajes se envían entre los actores.

+0

Esto es básicamente exactamente el modelo que ToonTalk usa para concurrencia. Excepto que despacha un "pájaro" en lugar de enviar una carta. http://www.toontalk.com/English/concur.htm –

1

no estoy seguro de que esto será bueno, pero voy a tratar:

Imaginemos un mercado clásico-Oriente Medio. Hay compradores (supongamos que son turistas que caminan) y vendedores. Los compradores están caminando por el mercado, y los vendedores gritan el nombre de sus productos: ¡alfombras! ¡¡¡Especies!!! ¡¡¡Caballos!!! ¡¡Andies !!! ¡¡¡Joyas!!! y así sucesivamente ... Algunos compradores no están interesados ​​en productos específicos y van a la siguiente tienda, pero algunos compradores se interesan y preguntan: "¿Cuánto cuesta?", vendedor: "50 $", comprador: " ¿Me puede dar un descuento? ", Y así sucesivamente ...

Los actores son compradores y vendedores aquí. Los vendedores están enviando mensajes con tipos de sus productos. El comprador puede omitir un mensaje o puede enviar un mensaje por el precio solicitado.

1

Actor - es algo que también podemos llamar sujeto. Los actores están haciendo algo con los objetos. Actor es llamadas así, porque es alguien que actúa.

0

Yo diría: "Los actores son una forma sencilla de decirle a las computadoras que hagan más de una cosa al mismo tiempo. Son diferentes de otras maneras de decirle a las computadoras que hagan más de una al mismo tiempo porque toman menos recursos que algunas de las alternativas y porque son más fáciles de usar por los programadores que algunas de las otras alternativas ".

+0

Si mi audiencia realmente quiere saber * cómo * funcionan los actores, entonces me gustaría ir con el ejemplo de personas en diferentes casas que solo hablan entre sí poniendo letras en los buzones, como ya sugirió @Dario. Sin embargo, la mayor parte del tiempo, no creo que mi esposa/madre/vecina/quien quiera realmente tenga tantos detalles. ;-) –

Cuestiones relacionadas