2011-12-17 4 views
5

Esiste un linguaggio di programmazione in cui non è necessario definire gli attori da soli - ogni funzione viene semplicemente eseguita come un attore separato (che può significare un thread separato se sono disponibili core gratuiti) per impostazione predefinita?Esiste un linguaggio di programmazione in cui ogni funzione viene essenzialmente eseguita come attore separato?

Per esempio vuol dire che se scrivo qualcosa di semplice come

v = fA(x) + fB(y) 

poi Fa e fB potrebbero essere calcolati simultaneamente, prima la somma dei loro risultati è stato assegnato a v.

+0

http://en.wikipedia.org/wiki/Occam_%28programming_l anguage% 29 –

risposta

2

non lo faccio pensate che ci sia qualcosa di così estremo, dal momento che il cambio di contesto e la comunicazione in testa sarebbero troppo grandi.

La cosa più vicina a cui mi viene in mente è la programmazione parallela dei dati, in cui il programma è in gran parte scritto nello stesso stile di una versione sequenziale, ma parti di esso sono eseguite parallelamente ove possibile.

Esempi sono la vettorizzazione del ciclo in Fortran e la magia "par" in Haskell.

2

Il combinatore di Haskell par consente di valutare le espressioni contemporaneamente (che può significare in thread separati se sono disponibili nuclei liberi). Tutto quello che dovete fare è:

x `par` y 

che valuterà x e y contemporaneamente, e restituire il valore di y. Si noti che x e possono essere programmi di complessità arbitraria.