Programmazione funzionale parallela: l'esperienza OcamlP3L
L'implementazione di programmi paralleli non e` un compito facile, e la fase di ottimizzazione e debugging sono esperienze di cui i programmatori
farebbero volentieri a meno.
Se si rinuncia al potere espressivo "illimitato", ma pericoloso, fornito dalle primitive di comunicazione di basso livello, e` possibile concepire un approccio strutturato della programmazione parallela basato su un piccolo
insieme di primitive di alto livello (chiamate "skeletons") che catturano gli schemi di parallelismo piu` ricorrenti in pratica, e permettono di programmare in modo semplice, previsibile e portatile una classe limitata
di problemi paralleli.
Vari gruppi di ricerca hanno proposto degli insiemi differenti di primitive; noi abbiamo scelto il P3L, sviluppato all'Universita` di Pisa: i suoi combinatori hanno il vantaggio di poter essere interpretati direttamente come un insieme di combinatori funzionali, e questo ci ha permesso di integrare direttamente P3L in OCaml, uno dei linguaggi funzionali piu` diffusi, anziche` ridurre P3L a un semplice linguaggio di coordinazione.
In questo seminario, faremo una breve introduzione a OCamlP3L, la libreria OCaml che fornisce gli skeleton P3L. Questa libreria e` estremamente compatta, grazie alla possibilita di inviare codice sui canali di comunicazione, e puo` anche essere usata come semplice linguaggio di coordinazione per applicazioni legacy scritte in C, C++ o Fortran.