Università degli Studi di Bologna
Facoltà di scienze matematiche, fisiche e naturali
Corso di Laurea in Informatica
Per un nuovo orientamento
nella progettazione
dei linguaggi di programmazione
Tesi di Laurea di:
RICCARDO SOLMI
Relatore:
Prof. ANDREA ASPERTI
Sessione II
Anno Accademico 1998-’99
Obiettivi
• Mostrare che esiste una funzionalità generale
non supportabile dagli attuali linguaggi
• Mostrare la rilevanza di questa funzionalità
• Individuare gli aspetti fondazionali responsabili
di questo limite
• Indicare un nuovo punto di partenza per la
progettazione dei linguaggi di programmazione
16 Dicembre 1999
Tesi di Laurea di Riccardo Solmi
2
Adattabilità e ristrutturazione classi
• Programmazione OO obbliga a fissare composizione
delle classi e parametri dei metodi
• Esigenza di ristrutturare le classi accomuna diverse
tendenze di sviluppo attuali (SOP, AOP, IP, classi di
specializzazione dinamica del comportamento)
• Convinzione: rigidità struttura non limita adattabilità
• Introduco operazione di differenziazione in una forma
limitata e adattata al paradigma OO
• La differenziazione evidenzia rigidità nel dominio
dell’applicazione
16 Dicembre 1999
Tesi di Laurea di Riccardo Solmi
3
Operazione di differenziazione OO
object differenziato da var
(object.differentiate(o.var))
client
1
client
2
client
m
object
Oggetto da
differenziare
obj
1
target
1
obj
2
target
2
obj
n
target
n
Oggetti
destinatari
Copie
differenziate
16 Dicembre 1999
o.var
Variabile di
differenziazione
• Si applica ad un oggetto
scegliendo una variabile di
differenziazione
• Coinvolge quattro soggetti
• Un oggetto differenziato ha
stati diversi per ogni valore
della variabile
• Ha effetti sul comportamento
dei clienti
• Sposta un campo dalle classi
cliente alla classe
destinazione
Tesi di Laurea di Riccardo Solmi
4
Esempi di applicazione
Mail & News reader
GRUPPI
admin
Clelia
seminars
students
PREFERENZE
v Mostra mittente
v Mostra destinatario
v Mostra oggetto
Carattere: Arial
Dimensione: 10 punti
Mittente
Riccardo
Clelia
Clelia
INTESTAZIONI
Destinatario Oggetto
Clelia
Ricetta torta Sacher
Riccardo Re: Ricetta torta Sacher
Riccardo
Orari dei treni
MESSAGGIO
Ciao, eccoti la ricetta della Sacher. Questa volta vedi di
non perderla.
Clelia
Sacher torte
Mettere il burro a pezzi in una ciotola; versare la maggior
parte dello zucchero nella ciotola e lavorare a crema
Versare lo zucchero restante in una seconda ciotola.
Spezzettare la cioccolata; metterla in un resipiente nel
forno e farla fondere. Versare la cioccolata fusa nella
ciotola. Rimescolare.
Per ogni uovo: separare rosso da albume. Versare
16 Dicembre 1999
Ogni gruppo deve poter
avere le proprie preferenze di
visualizzazione
Ogni messaggio deve poter
avere il proprio font
Ogni gruppo deve poter
avere la propria vista
messaggi
Ogni vista messaggi deve
poter avere le proprie
preferenze di visualizzazione
Tesi di Laurea di Riccardo Solmi
5
Ricerca di una soluzione OO
Requisiti soluzione:
 Usabile dai
programmatori e dagli
utenti
 Generale (semplice da
usare)
• Trasformazione
persistente del
programma
16 Dicembre 1999
Soluzioni esplorate:
• Design Pattern
• Progr. a soggetti
 Progr. ad aspetti
• Progr. basata su oggetti
• Modelli con predicati
 Modelli ad attori
 Riflessività
Tesi di Laurea di Riccardo Solmi
6
Implementazioni possibili
Caratteristiche comuni:
• Ridefiniscono
interamente il
comportamento degli
oggetti
• Ridirigo tutti i metodi
sulla copia differenziata
object differenziato da var
(aspetti, attori)
client
1
object
client
2
client
m
o.var
map
obj
1
target,obj
obj
2
target
1
obj
n
target
2
target
n
16 Dicembre 1999
Tesi di Laurea di Riccardo Solmi
7
Insufficienza della riflessività
Fornisce operazioni sufficienti nelle mani di un
programmatore ma introduce conflitti di responsabilità
• La ristrutturazione richiede di definire nuovi percorsi
di inizializzazione/instradamento per i dati
• Esistono diverse soluzioni ragionevoli
• I programmatori sono gli unici garanti della linearità
dello sviluppo di nuove versioni e della compatibilità
dei formati dei file
16 Dicembre 1999
Tesi di Laurea di Riccardo Solmi
8
Fatti che orientano la ricerca
• È possibile implementare l’operazione di
differenziazione (seppure limitatamente)
• Una singola operazione può localizzare scelte
progettuali che solitamente vengono disperse nella
struttura del programma
Ipotesi: la programmazione ad oggetti sovraspecifica
la struttura dei programmi. Non è necessario assumersi
la responsabilità di definire i percorsi di
inizializzazione dei dati e la composizione delle classi
16 Dicembre 1999
Tesi di Laurea di Riccardo Solmi
9
Sovraspecificazioni obbligate
• Sono interessato al risultato di una funzione;
non ho bisogno, in generale, di vincolare tutti i
parametri attuali
• Spesso mi basta fissare il vincolo che il
chiamante e la funzione chiamata usino lo
stesso oggetto senza precisare quale
16 Dicembre 1999
Tesi di Laurea di Riccardo Solmi
10
Domande funzionali alla soluzione
Posso ripartire la responsabilità della
determinazione dei parametri attuali tra la
chiamata a funzione e la funzione chiamata?
• Posso trovare un sostituto ai puntatori che lasci
aperta la determinazione dell’oggetto puntato?
• E posso come programmatore sottrarmi alla
responsabilità di definire la struttura per
rappresentare una entità complessa?
16 Dicembre 1999
Tesi di Laurea di Riccardo Solmi
11
Programmazione procedurale
Paradigma imperativo:
Paradigma funzionale:
• Dominato dal flusso del
controllo
• I dati hanno esclusivamente
un ruolo passivo
• Le funzioni non cercano di
produrre i parametri attuali
• Dominato dal flusso del
controllo però si può
scegliere la strategia di
valutazione
• I dati possono propagarsi
verso il risultato
• Le funzioni possono
propagare la richiesta del
risultato verso i parametri
attuali
16 Dicembre 1999
Tesi di Laurea di Riccardo Solmi
12
Programmazione dataflow e logica
Paradigma dataflow:
Paradigma logico:
• Dominato dal flusso dei dati
• I dati si propagano sul grafo
dataflow verso tutte le
operazioni che possono
contribuire a calcolare
• Dominato dal flusso della
domanda
• La richiesta di un dato si
propaga verso tutte le
funzioni che possono
contribuire a calcolarlo
16 Dicembre 1999
Tesi di Laurea di Riccardo Solmi
13
Una nuova unità funzionale: Step
Entry
Call
Step
Action
Done
EntryCall
Idle
Done
EntryDone
Action
• Due linee di ingresso/uscita: entry-call
e done-action
• Una richiesta (entry) si propaga (call)
solo se il risultato (done) non è
disponibile
• Un risultato (done) si propaga (action)
solo quando viene richiesto (entry)
• La propagazione del risultato (action)
è una continuazione della richiesta
(entry) e non dipende dalla persistenza
del risultato (done)
Entry
Action
16 Dicembre 1999
Tesi di Laurea di Riccardo Solmi
14
Soluzione prospettata
• Programmazione esplicita dei
flussi della domanda e dei dati
• Funzioni definite a partire dal
risultato, lungo la sequenza inversa
• Chiamante e chiamato legati da
una comune richiesta non da un
comune valore
• Rappresentazione disaggregata
delle entità. Per ogni attributo
definisco un albero di funzioni per
determinare il valore in diversi
contesti
16 Dicembre 1999
dato A
disponibile
richiesta
dato B
Tesi di Laurea di Riccardo Solmi
15
Conclusioni
• I linguaggi attuali obbligano il programmatore a
fare delle scelte vincolanti per l'utente finale
• Tutti gli identificatori legati a valori (parametri,
campi) sovraspecificano gli algoritmi
• L'Obiettivo di Adattabilità si può raggiungere
sottraendo delle responsabilità al programmatore
16 Dicembre 1999
Tesi di Laurea di Riccardo Solmi
16
Scarica

Per un nuovo orientamento nella progettazione dei linguaggi di