2010-02-25 13 views
9

Beh, il titolo è più o meno così: se io sedessi davanti a te un non-techie/mia mamma/dodicenne/cocker spaniel e ti chiedessi di spiegare loro , da dove inizieresti? Chiedo perché il mio master's project li coinvolge in misura abbastanza grande, e ogni altro giorno qualcuno mi chiede di dire loro cosa sto facendo. Quando parlo con altre persone nel mio corso non è poi così male - di solito il concetto è estraneo ma comprensibile - ma di recente il mio coinquilino, un chimico, mi ha chiesto di spiegarglielo, e dire che ho faticato sarebbe stato un po 'gigantesco eufemismo.Come spiegheresti gli attori a un non-programmatore?

Sto cercando una sorta di spiegazione che trasmetta l'idea, piuttosto che le basi tecniche. Può essere una metafora e non deve essere precisa, voglio solo far capire loro cosa sto facendo con loro. Qualche idea?

+5

Le persone votano per chiudere come "non una vera domanda" semplicemente perché non possono immediatamente pensare a una risposta? –

+1

Perché mi sento come se stessi facendo il progetto del tuo padrone? –

+4

Heh ... Sono abbastanza sicuro che tu non lo sia, Joe. Il mio progetto è scrivere un framework che utilizzi gli attori per creare processi modulari in esecuzione sia sul client che sul server, oltre che su un numero di casi di test. Ho difficoltà a spiegare le cose tecniche in un modo non tecnico: è per questo che ho fatto questa domanda. –

risposta

10
  • Possono esserci molti attori. Tutti gli attori recitano "allo stesso tempo". La concorrenza è una parte fondamentale di questo modello.

  • Gli attori non possono sapere cosa pensano gli altri attori. L'unico modo per spostare le informazioni è con un messaggio. (Nessuno stato condiviso)

  • attori possono ricevere messaggi, e agire su di essi da:

    • facendo il calcolo con i dati in essi

    • invio di messaggi ad altri attori

    • creando altri attori.

    • ignorare/scartare il messaggio.

Questo rende praticamente attori proprio come ... persone. Le persone non sanno cosa pensano l'un l'altro, devono inviare messaggi per trasmettere informazioni, hanno la possibilità di ignorare i messaggi in entrata, considerarli o comunicare con altre persone. Le cose brutte casuali possono accadere alle persone. Molte persone fanno tutte le cose allo stesso tempo. Per gestire più carico, aggiungi più persone.

Per quanto riguarda il progetto dei master, suggerisco di scoprire il framework Web Erlang. Il linguaggio di programmazione Erlang si basa sul modello di attore e viene utilizzato con grande efficacia in sistemi scalabili inclusi gli switch telefonici ... e lo Facebook messaging system.

+0

Questo è praticamente esattamente quello che stavo cercando. Brillante. Per quanto riguarda Erlang: ho fatto qualche ricerca in esso e sembra fantastico. Tuttavia, il framework che sto scrivendo ha lo scopo di rendere più facile l'uso degli attori sul web, e l'apprendimento di una nuova lingua è un po 'troppo per la maggior parte delle persone, quindi sono andato con Python e ho costruito le mie classi che si comportano come attori. Sono tentato di portarlo in futuro però. –

+0

Questo è come dire "Ho sentito che i thread erano fantastici ... quindi abbiamo bisogno di portare i thread sul web!" ... beh, il browser web può già essere considerato un attore ... invia un messaggio, non lo condivide stato con il server, attende la ricezione in attesa di un altro messaggio e esegue il calcolo su di esso. –

+0

Erlang porta gli attori "fino in fondo" .... e supporta milioni di attori simultanei (chiamati processi) su un nodo e scala in modo trasparente su più nodi gestendo automaticamente tutte le comunicazioni. È bello avere questo tipo di "radici" quando si sta veramente provando ad assumere un grosso compito concorrente. –

5

cercherò una semplice metafora:

Gli attori sono persone che fanno un lavoro all'interno delle loro case. Di fronte a ciascuna casa c'è una casella di posta. Per comunicare tra loro e ottenere il lavoro svolto, i messaggi vengono inviati tra gli attori.

+0

Questo è sostanzialmente il modello utilizzato da ToonTalk per la concorrenza. Tranne che spedisci un "uccello" invece di preparare una lettera. http://www.toontalk.com/English/concur.htm –

1

non sono sicuro che questo sarà buono, ma ci proverò:

Immaginiamo un mercato medio-orientale classica. Ci sono acquirenti (supponiamo che siano solo turisti ambulanti) e venditori. I compratori stanno camminando attraverso il mercato, e i venditori gridano il nome dei loro beni: Tappeti !! Specie!!! Cavalli!!! Сandies !!! Gioielli!!! e così via ... Alcuni acquirenti non sono interessati a tipi specifici di merci e vanno al negozio successivo, ma alcuni acquirenti diventano interessati e chiedono: "Quanto costa?", venditore: "50 $", acquirente: " Puoi darmi uno sconto? ", E così via ...

Gli attori sono compratori e venditori qui. I venditori inviano messaggi con tipi dei loro prodotti. L'acquirente può saltare un messaggio o può inviare un messaggio per chiedere il prezzo.

1

Attore: è qualcosa che possiamo anche chiamare soggetto. Gli attori stanno facendo qualcosa con gli oggetti. L'attore è chiamato così, perché è qualcuno che agisce.

0

Direi, "Gli attori sono un modo semplice per dire al computer di fare più di una cosa allo stesso tempo: sono diversi dagli altri modi per dire ai computer di fare più di uno allo stesso tempo perché prendono meno risorse rispetto ad alcune alternative e perché sono più facili da utilizzare per i programmatori rispetto ad altre alternative ".

+0

Se il mio pubblico vuole davvero sapere * come * gli attori lavorano, allora vorrei seguire l'esempio di persone in case diverse che si parlano solo mettendo lettere nelle cassette postali, come già suggerito da @Dario. Tuttavia, la maggior parte delle volte, non penso a mia moglie/madre/vicina/a chiunque voglia veramente tanti dettagli. ;-) –

Problemi correlati