I linguaggi concorrenti, ed in particolar modo i linguaggi mobili
(cioe' con mobilita'
di codice), sono ormai largamente e rappresentano uno strumento
cruciale per lo
sviluppo di applicazioni Internet.
Comunque, a differenza dei linguaggi sequenziali, per i quali negli
ultimi decenni sono
stati sviluppati vari modelli per descriverne formalmente la semantica,
la programmazione
attraverso linguaggi concorrenti/mobili e' raramente suffragata da
solide basi semantiche.
Di conseguenza, in assenza di una semantica precisa, risulta
estremamente difficile
interpretare il comportamento di un sistema concorrente complesso in
cui le numerose
componenti evolvono in parallello ed interagiscono tra di loro.
Cio' puo dar luogo a seri
(e costosi) inconvenienti, come ad esempio l'esplosione del razzo
Ariane 5, nell'ottobre del
1994, oppure i "capricci" di Mars Pathfinder nel Luglio del 1997.
Obiettivi formativi:
Lo scopo del corso non e' quello di studiare un qualche linguaggio di
programmazione,
ma fornire quei concetti e principi fondamentali che sono alla base
di una corretta
programmazione concorrente con o senza mobilita' di codice. A tal scopo
verranno
considerati dei modelli algebrici, vale a dire dei linguaggi molto
semplici, che racchiudono
tutte le caratteristiche principali dei linguaggi concorrenti reali.
Tali modelli, chiamati
calcoli di processo (quali CCS, Pi-calcolo, Mobile Ambient), essendo
piu semplici dei
linguaggi reali, ben si prestano allo studio delle problematiche
tipiche della concorrenza.
Durante il corso verrano forniti vari esempi ed applicazioni.
Infine, nell'ultima parte del corso verrano mostrati modelli
distribuiti in cui agenti
concorrenti migrano all'interno di reti di calcolatori.
Attivita' formative:
Il corso e' costituito da 44 ore di lezione frontale. Nelle 44 ore di
lezione sono comprese
15 ore di di esercitazione durante le quali gli studenti devono
risolvere problemi specifici
sotto la guida del docente.
Programma del corso:
- Richiami di teoria degli automi ed equivalenze tra linguaggi
- Processi sequenziali e la nozione di bisimulazione
- Processi concorrenti ed interazione tra processi
- Semantica operazionale per processi sequenziali e concorrenti.
- Equivalenze comportamentali forti e deboli
- Mobilita' di codice sotto varie forme
- Il pi-calcolo
- Applicazioni del pi-calcolo
- Equivalenze forti e deboli in pi-calcolo
- Accenni di linguaggi concorrenti distribuiti: Mobile Ambients e
Distributed pi.