15.06.2013 Views

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Carnielli Efrem: Programmazione a componenti<br />

Pr<strong>in</strong>cipi <strong>di</strong> progettazione<br />

computazioni perchè sono limitate alla JVM della macch<strong>in</strong>a su cui sono stati<br />

def<strong>in</strong>iti. L'application server <strong>di</strong>stribuito consente <strong>di</strong> spostare le computazioni da<br />

una macch<strong>in</strong>a all'altra.<br />

Gli attributi statici vengono utilizzati per como<strong>di</strong>tà, ma sono limitati alla macch<strong>in</strong>a<br />

su cui le istanze della classe, <strong>in</strong> cui sono def<strong>in</strong>iti, vengono lanciate.<br />

Browser<br />

richiesta<br />

richiesta<br />

ri<strong>di</strong>rezionata al<br />

secondo server<br />

Server 1<br />

Server 1<br />

Server 1<br />

Application<br />

server<br />

Figura 3.7. Fail over e migrazione delle computazioni. In rosso il fail over del Servr1 e la<br />

migrazione delle computazioni.<br />

3.1.3 Ricorsione <strong>in</strong> Fortran<br />

In fortran tutti gli activation record <strong>di</strong> una funzione vengono caricati, una funzione<br />

può avere un solo activation record, non esiste lo stack, la funzione può chiamare<br />

se stessa ma se gli passo un parametro come nei casi visti f<strong>in</strong>ora, il valore si<br />

mo<strong>di</strong>fica <strong>di</strong> volta <strong>in</strong> volta e non ho traccia del valore precedente.<br />

Ripren<strong>di</strong>amo il fattoriale del numero 3. Alla chiamata f(3), viene creato l’activation<br />

record della funzione che conterrà n=3. Quando la funzione si richiama<br />

ricorsivamente, f(2), il valore <strong>di</strong> n viene mo<strong>di</strong>ficato <strong>in</strong> 2 e si perde il vecchio valore<br />

(per quanto detto sopra).<br />

Questo problema può essere ovviato utilizzando la ricorsione <strong>di</strong> coda. Si è <strong>in</strong><br />

presenza della ricorsione <strong>di</strong> coda quando la chiamata ricorsiva alla funzione è<br />

l’ultima istruzione del corpo della funzione.<br />

La ricorsione <strong>di</strong> coda mi consente <strong>di</strong> utilizzare un solo activation record.<br />

58

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!