Analisi del modello sostitutivo per applicazioni procedurali
Posted by Dibi Store Wed, 07 May 2008 13:12:00 GMT
Il modello sostitutivo, in ambito informatico, è il più semplice di una serie incrementale di modelli che descrivono come un interprete analizza il programma. L'uso del modello sostitutivo è quotidianamente usato anche dagli utenti per capire come una determinata procedura funziona. Per cogliere al volo il concetto analizziamo il seguente listato:
pi: 3.14159
circonferenza(x): x * x * pi
somma_di_circonferenze(x, y): circonferenza(x) + circonferenza(y)
somma_di_circonferenze(4, 7) = ?
Ipotizzando di possedere un interprete in grado di comprendere la sintassi di questo codice attraverso il modello sostitutivo, esso performerà le seguenti operazioni:
-
valuterà il risultato dei parametri (arity) della funzione, producendo il seguente risultato:
circonferenza(4) + circonferenza(7) - Il processo di sostituzione verrà ora eseguito per entrambe le funzioni circonferenza (questo processo può avvenire attraverso l'uso di una struttura ad albero), ottenendo così (4 * 4 * pi) + (7 * 7 * pi)
- L'interprete provvederà a questo punto alla sostituzione della variabile
picon il relativo valore, e performerà le operazioni di moltiplicazione e somma (sempre il principo del modello sostitutivo, ma applicato alle definizioni interne del linguaggio o del sistema operativo).
Nonostante il processo sia banale e alla base di ogni semplice ragionamento, esso rappresenta un elemento fondamentale del processo di elaborazione di una procedura più sofisticata, ed è necessario averlo compreso perfettamente se si vogliono poi padroneggiare principi più complessi.
Differenza tra ordine normale e ordine applicativo di valutazione
Nell'esempio precedente, abbiamo valutato il risultato di ogni singolo parametro prima di valutare il corpo della funzione. Questo processo viene chiamato ordine applicativo di valutazione; tuttavia possiamo ottenere lo stesso risultato usando un altra tecnica, chiamata ordine normale di valutazione, che consiste nel non calcolare il valore dei parametri, fino a ché ciò non sia strettamente necessario. Consiglio vivamente di approfondire l'argomento attraverso il seguente articolo (in lingua inglese): http://people.csail.mit.edu/jastr/6001/spring06/r23.pdf.

