La disponibilità del primo compilatore Prolog, realizzato da David H. D. Warren nel 1977, incrementò la diffusione del linguaggio proponendolo come un efficace strumento di programmazione per classi di applicazioni in cui i linguaggi tradizionali si erano rivelati inadeguati. Nel 1983, lo stesso Warren definì un modello di macchina astratta (Warren Abstract Machine - WAM) che è diventata di fatto uno standard nello sviluppo di macchine astratte e compilatori per il linguaggio Prolog. Come per altri linguaggi, lo scopo della compilazione è quello di estrarre tutta l'informazione possibile prima dell'esecuzione in modo da ottimizzare il tempo di esecuzione di un programma. Nel caso del linguaggio Prolog, la compilazione scompone l'unificazione in una sequenza di operazioni elementari con le quali sono possibili molte ottimizzazioni, individua le situazioni particolari che possono richiedere una soluzione ottimizzata (per le variabili temporanee, per la prima occorrenza di una variabile, ecc.) e traduce il codice cercando di rinviare il più possibile l'esecuzione di certe operazioni che potrebbero risultare inutilii a causa del fallimento di operazioni successive.

Macchina Astratta di Warren e compilatore Prolog

DOMENICI, ANDREA;PRETE, COSIMO ANTONIO
1993-01-01

Abstract

La disponibilità del primo compilatore Prolog, realizzato da David H. D. Warren nel 1977, incrementò la diffusione del linguaggio proponendolo come un efficace strumento di programmazione per classi di applicazioni in cui i linguaggi tradizionali si erano rivelati inadeguati. Nel 1983, lo stesso Warren definì un modello di macchina astratta (Warren Abstract Machine - WAM) che è diventata di fatto uno standard nello sviluppo di macchine astratte e compilatori per il linguaggio Prolog. Come per altri linguaggi, lo scopo della compilazione è quello di estrarre tutta l'informazione possibile prima dell'esecuzione in modo da ottimizzare il tempo di esecuzione di un programma. Nel caso del linguaggio Prolog, la compilazione scompone l'unificazione in una sequenza di operazioni elementari con le quali sono possibili molte ottimizzazioni, individua le situazioni particolari che possono richiedere una soluzione ottimizzata (per le variabili temporanee, per la prima occorrenza di una variabile, ecc.) e traduce il codice cercando di rinviare il più possibile l'esecuzione di certe operazioni che potrebbero risultare inutilii a causa del fallimento di operazioni successive.
1993
Domenici, Andrea; Prete, COSIMO ANTONIO
File in questo prodotto:
Non ci sono file associati a questo prodotto.

I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/11568/22668
 Attenzione

Attenzione! I dati visualizzati non sono stati sottoposti a validazione da parte dell'ateneo

Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus ND
  • ???jsp.display-item.citation.isi??? ND
social impact