Linguaggi modulari e ad oggetti - Risultati


La ricerca riguarda fondamenti, design ed implementazione di linguaggi modulari ed object-oriented. Il filone vede coinvolte le unità di Genova, Padova, Torino e Udine.

Vi sono collaborazioni/sovrapposizioni con le tematiche 2 (Linguaggi logici) e 5 (Modelli, linguaggi e tecniche di specifica algebrica).
La ricerca afferente a questa tematica si articola nei seguenti sottotemi:

redball.gif (904 byte) Calcoli di oggetti (4.1)

redball.gif (904 byte) Linguaggi di moduli (design e fondamenti) (4.2)

redball.gif (904 byte) Linguaggi object-oriented riflessivi (design ed implementazione) (4.3)




Calcoli di oggetti

L'attività di ricerca in questo sottotema ha visto la partecipazione dei ricercatori dell'unità di Padova, Torino ed Udine.
Il contesto generale della ricerca è quello dei calcoli ad oggetti, cioè calcoli che costituiscono l'astrazione di linguaggi object-oriented, nello stesso modo in cui il lambda calcolo fornisce un modello per la programmazione funzionale: esempi ormai "classici" sono l'Object Calculus di Abadi e Cardelli ed il Lambda Calculus of Objects di Fisher, Honsell, Mitchell (LCO nel seguito).
Tra gli scopi dello sviluppo e studio di tali calcoli vi è la definizione di sistemi di tipo "safe" che consentano di prevenire a tempo di compilazione errori di "messaggio non compreso", e il fornire un modello matematico di vari concetti dell'object-oriented evidenziandone eventuali interazioni o ortogonalità.
Si tratta di una ricerca di tipo fondamentale ma con una ricaduta immediata sul design e l'implementazione di linguaggi reali.

L'attività di ricerca si è svolta in questo settore è stata relativa a svariati aspetti. Ne elenchiamo qui sotto quattro: l'estensione di calcoli di oggetti con oggetti incompleti, la definizione di sistemi di tipi e algoritmi di type-inference, la modellazione della nozione di classe e il trattamento di caratteristiche imperative; molti lavori sono tuttavia relativi a più aspetti contemporaneamente.

Calcoli object-based con oggetti incompleti L'attività relativa a tale filone di ricerca ha come base di partenza LCO. Tale calcolo integra il lambda calcolo con primitive object-based. Gli oggetti che si possono rappresentare in tale calcolo sono sia modificabili (tramite overriding), sia estensibili (tramite un'operazione di "method addition"). Il fatto che gli oggetti siano estensibili implica, a livello del sistema di tipi, che si modelli la cosidetta ereditarietà "MyType", ovvero che i metodi siano tipati in modo polimorfo.
Tale calcolo è stato sviluppato in direzioni diverse.
In [BonoEtAl00], si sono combinate due interessanti caratteristiche: la possibilità di lavorare con oggetti "incompleti", ovvero con oggetti che contengono solo parte della loro implementazione, permettendo di modellare un'interessante forma di "rapid prototyping", e una forma di sottotipaggio compatibile con l'operazione di method addition.
Sistemi di tipi e type-inference Un'altra direzione di ricerca relativa ad LCO ha riguardato la semplificazione del sistema di tipi originale, dove l'ereditarietà MyType viene modellata in modo elegante ma molto complesso. Questo risultato [BonoBugliesi99], anche se piuttosto tecnico, ha il pregio di permettere una comparazione più diretta di LCO con altri calcoli object-based (quali quelli di Abadi e Cardelli e di Bruce), nonchè di essere una base più semplice sia per uno studio dal punto di vista semantico degli oggetti estensibili via una codifica in un lambda calcolo higher-order [BonoBugliesi98], sia come punto di partenza per risolvere il problema di trovare un algoritmo di inferenza di tipo per un calcolo con MyType ("work-in-progress"). Relativo al problema della type inference è [Bugliesi Pericas00]. In questo lavoro viene definito un sistema di tipi per un calcolo ad oggetti senza estensione, ma con override, che ammette subtyping in depth; è dato un algoritmo di inferenza polinomiale per il sistema. In [Liquori99] si propone un'estensionde del calcolo di Abadi e Cardelli con "MyType", compatibilmente con estensione e subtyping, e variabili private e pubbliche.
Modellazione dell'entità classe Se il concetto di "oggetto" può essere ormai considerato chiarito da un punto di vista fondazionale, non altrettanto si può dire per il concetto di "classe".
L'attività di ricerca riguardo questo filone ha seguito due strade, essenzialmente ortogonali, proprio per poter esplorare più possibilità differenti.
In un approccio, le classi sono viste come combinazione di oggetti estensibili e tipi di dati astratti, secondo l'idea di Fisher e Mitchell. In [BonoFisher98] viene studiato un linguaggio object-based imperativo che modella, appunto, le classi come oggetti estensibili ed encapsulabili. Nell'altro approccio, le classi sono rappresentate come entità primitive, piuttosto che generabili a partire da altri costrutti. In [BonoEtAl98], [BonoEtAl99] viene presentato un calcolo class-based imperativo, che unisce in sè un'inizio di studio formale dell'entità classe e una serie di buoni requisiti di software engineering.
Calcoli imperativi Oltre ai lavori [BonoEtAl98], [BonoEtAl99] precedentemente menzionati, caratteristiche imperative sono considerate in [LangEtAl99], [DoughertyEtAl99]. Questi articoli fondano le basi per un framework ad oggetti dove le caratteristiche funzionali, imperative e ad oggetti si possono combinare in modo modulare. Il formalismo è basato sulle sostituzioni esplicite e la graph rewriting è alla base della semantica operazionale.

Infine, una ricerca confinante con la tematica 2 (Linguaggi logici) ha riguardato la codifica di diversi calcoli di oggetti in logica lineare [BugliesiEtAl00].

Articoli

[BonoBugliesi98] V. Bono, M. Bugliesi,"Interpretation of Extensible Objects and Types", FCT'99, 1999.

[BonoBugliesi99] V. Bono, M. Bugliesi, "Matching for the Lambda Calculus of Objects".

[BonoEtAl00] V. Bono, M. Bugliesi, M. Dezani-Ciancaglini, L. Liquori, "A Subtyping for Extensible, Incomplete Objects".

[BonoFisher98] V. Bono, K. Fisher, "An Imperative, First-Order Calculus with Object Extension".

[BonoEtAl98] V. Bono, A. Patel, V. Shmatikov, J.C. Mitchell, "A Core Calculus of Classes and Objects", MFPS'99, 1999.

[BonoEtAl99] V. Bono, V. Shmatikov, A. Patel, "A Core Calculus of Classes and Mixins", ECOOP'99, LNCS, Springer Verlag, 1999.

[BugliesiPericas00] M. Bugliesi, S. Pericas, "Depth subtyping and Type Inference for Object Calculi", FOOL'00.

[BugliesiEtAl00] M. Bugliesi, G. Delzanno, L. Liquori, M. Martelli, "Object Calculi in Linear Logic".

[DoughertyEtAl99] D. Dougherty, F. Lang, P. Lescanne, L. Liquori, K. Rose, "A Generic Object-Calculus Based on Addressed Term Rewriting Systems".

[LangEtAlAl99] F. Lang, P. Lescanne, L. Liquori, "A Framework for Defining Object Calculi".

[Liquori99] L. Liquori, "Bounded Polymorphism for Extensible Objects".


Linguaggi di moduli (design e fondamenti)

L'attività di ricerca in questo sottotema ha visto la partecipazione dei ricercatori dell'unità di Genova.

Questa ricerca è relativa al design ed allo studio dei fondamenti dei linguaggi di moduli. Negli ultimi anni infatti vi è stato un notevole sviluppo di linguaggi con caratteristiche di modularità molto avanzate: citiamo ad esempio il sistema di moduli di ML nelle diverse varianti proposte, i meccanismi caratteristici dell'approccio object-oriented (inheritance ed overriding), i mixin (classi o, in generale, moduli con componenti "deferred", cioè non definite), il crescente interesse per la fase di linking, dovuto allo sviluppo di linguaggi, come Java, in cui i moduli in codice intermedio (bytecode) conservano molte informazioni di tipo.
In parallelo, una rilevante attività di ricerca è stata dedicata all'analisi ed ai fondamenti formali di tali linguaggi. Un principio che è emerso come idea comune dai vari approcci proposti è quello di vedere un linguaggio come strutturato in due livelli: il linguaggio core (secondo la terminologia introdotta con ML) e il linguaggio dei moduli, un linguaggio autonomo con proprie regole di tipo ed il più possibile indipendente dal livello sottostante, anzi in principio istanziabile su diversi linguaggi core.

L'attività di ricerca svolta in questo settore può essere riassunta come segue.



Inoltre, altre attività di ricerca sono confinanti con la tematica 5, sottotematica 1 (Metodi formali e semiformali nelle varie fasi dello sviluppo dei sistemi informatici).

Articoli

[Ancona99] D. Ancona, "An Algebraic Framework for Separate Type-Checking.

[AnconaEtAl99] D. Ancona, M.Cerioli, E. Zucca, "A Formal Framework with Late Binding".

[AnconaEtAl99b] D. Ancona, M.Cerioli, E. Zucca, "Extending Casl with Late Binding".

[AnconaEtAl99a] D. Ancona, G. Lagorio, E. Zucca, "Jam: A Smooth Extension of Java with Mixins".

[AnconaZucca97] D. Ancona, E. Zucca, "Overriding Operators in a Mixin-Based Framework".

[AnconaZucca98] D. Ancona, E. Zucca, "An Algebra of Mixin Modules".

[AnconaZucca98a] D. Ancona, E. Zucca, "A Theory of Mixin Modules: Basic and Derived Operators".

[AnconaZucca99] D. Ancona, E. Zucca, "A Primitive Calculus for Module Systems".

[AnconaZucca99b] D. Ancona, E. Zucca, "A Calculus of Module Systems".


Linguaggi object-oriented riflessivi (design ed implementazione)

L'attività di ricerca in questo sottotema ha visto la partecipazione dei ricercatori dell'unità di Genova.

Il contesto della ricerca è quello dei sistemi riflessivi, ossia sistemi che contengono al loro interno una rappresentazione di se stessi per cui possono automodificarsi. Molti linguaggi object-oriented hanno caratteristiche riflessive, ad esempio Smalltalk ed in parte Java.
I risultati della ricerca sono relativi ai seguenti argomenti:


Articoli

[AnconaEtAl97a] M. Ancona, W. Cazzola, G. Dodero, V. Gianuzzi, "Channel reification: a reflective model for distributed computation".

[AnconaEtAl97b] M. Ancona, W. Cazzola, G. Dodero, V. Gianuzzi, "Communication modelling in channel reification".

[AnconaEtAl98] M. Ancona, W. Cazzola, G. Dodero, V. Gianuzzi, "Channel reification: a reflective model for distributed computation".

[AnconaEtAl98a] M. Ancona, W. Cazzola, E. Fernandez, "Reflective authorization systems".

[Cazzola98] W. Cazzola, "Evaluation of Object-Oriented reflective models".

[CazzolaEtAl98] W. Cazzola, A. Clematis, V. Gianuzzi, A. Romanosvky, A. Tyrrel, "Approaches to designing complex dependable systems".



Commenti e suggerimenti a: zucca@disi.unige.it
Ultimo aggiornamento: 13 gennaio 2000