Linguaggi Concorrenti e Mobili
I linguaggi concorrenti ed ancor piu'i linguaggi mobili (cioe'con mobilita'
di codice) sono ormai largamente
diffusi grazie allo sviluppo delle reti di calcolatori ed in particolar
modo di Internet. Comunque, a differenza dei
linguaggi sequenziali, la progettazione di linguaggi concorrenti/mobili
e' raramente suffragata da solide basi
semantiche ma e' piuttosto un'arte. Questo e' accettabile fintanto che si
lavora con sistemi piccoli, ma quando
si passa a sistemi complessi possono sorgere seri (e costosi)
inconvenienti. Ne e' un esempio l'esplosione
del razzo Ariane 5, nell'ottobre del 1994, oppure i "capricci" di Mars Pathfinder
nel Luglio del 1997.
Lo scopo del corso non e' quello di studiare un qualche linguaggio di programmazione,
ma fornire quei concetti e
principi fondamentali che dovrebbero sempre essere alla base di una
corretta programmazione concorrente con o
senza mobilita'. A tal scopo verranno considerati dei modelli algebrici,
vale a dire dei linguaggi molto semplici che
contengono tutte le caratteristiche principali dei linguaggi concorrenti
reali. Tali modelli, chiamati calcoli di processo
(CCS, pi-calcolo, ect), 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.
Per chi fosse interessato, informazioni sulla ricerca nel campo dei
linguaggi mobili puo' essere trovata all'indirizzo
http://move.to/mobility.
Programma del corso:
- Automi and Equivalenze di linguaggi
- Processi sequenziali e la nozione di bisimulazione
- Processi concorrenti ed interazione tra processi
- Transizioni ed Equivalenze forti
- Equivalenze deboli
- Esempi vari e discussioni
- Mobilita'
- Il pi-calcolo
- Applicazioni del pi-calcolo
- Rappresentare oggetti e funzioni in pi-calcolo
- Equivalenze forti e deboli in pi-calcolo
- Accenni di calcoli distribuiti.