Anno Accademico 96/97
Corso di
Linguaggi di Programmazione
Docente: Professor Catuscia
Palamidessi
Materiale didattico
-
Appunti delle lezioni, a cura di Luca Bazzocchi, Davide Sobrero,
Carla Baldissara e Sara Sciarrino. (In preparazione).
-
Per la programmazione funzionale:
-
Elements of Functional Programming, di Chris Reade, pubblicato dalla
Addison-Wesley. Ottimo testo per lo studio di ML e della sua versione lazy.
Contiene anche molti esercizi. Disponibile in biblioteca DISI-DIMA.
-
Per le esercitazioni di laboratorio: E' disponibile sulle macchine Linux
l'interprete dello Standard ML, che si attiva col comando sml.
Per il suo funzionamento vedi Introduction
to Standard ML: Note di Robert Harper sul linguaggio ML e l'uso
dell'interprete SML.
-
Per la programmazione logica:
-
Per la parte sulla Teoria del Logic Programming: uno a scelta fra i seguenti
-
I primi due capitoli di Fondamenti di Programmazione Logica, di
John Lloyd, Franco Muzio Editore (in italiano). Il terzo capitolo tratta
la negazione per fallimento, ad un livello molto piu' approfondito di quanto
visto a lezione. Esiste anche la versione inglese Foundations of Logic
Programming, edito dalla Springer Verlag.
-
I primi tre capitoli di Logic Programming, di Krzysztof R. Apt,
Chapter 10 of the Handbook of Theoretical Computer Science. Elsevier Science
Publisher (in inglese). Il quinto e il sesto capitolo trattano la negazione
per fallimento, ad un livello molto piu' approfondito di quanto visto a
lezione.
-
Nota 1:
-
Nel caso i testi suddetti non fossero disponibili in biblioteca, rivolgersi
alla docente.
-
Nota 2:
-
In entrambi i libri il modello di Herbrand minimo viene costruito attraverso
il cosiddetto "Operatore di Punto Fisso" Tp, mentre a lezione l'abbiamo
visto definito costruttivamente dal sistema induttivo associato al programma
(i due approcci sono equivalenti). La conoscenza della parte relativa alla
Tp e' pertanto opzionale, e alternativa a quella della definizione induttiva.
-
Nota 3:
-
La parte sulla semantica dichiarativa e' esposta piu' chiaramente nel libro
di Lloyd, mentre l'algoritmo di unificazione e' esposto piu' chiaramente
su quello di Apt.
-
Per la pratica della programmazione in Prolog: The Art of Prolog,
di Leon Sterling e Ehud Shapiro, pubblicato dalla The MIT Press. Disponibile
in biblioteca DISI-DIMA.
-
Per la parte sul Lambda Prolog: Lambda Prolog:
An Introduction to the Language and its Logic, di Dale Miller. Testo
sul Lambda Prolog ad un livello molto piu' approfondito ed esaustivo di
quanto visto a lezione. Ovviamente ai fini dell'esame e' richiesta la conoscenza
solo di cio' che e' stato fatto a lezione.
-
Per le esercitazioni di laboratorio sul Prolog: E' disponibile sulle macchine
Linux l'interprete Swi-Prolog, che si attiva col comando pl. Per
il suo funzionamento vedi il Reference Manual di Jan Wielemaker Swi-Prolog.
-
Per le esercitazioni di laboratorio sul Lambda Prolog: E' disponibile sulle
macchine Linux l'interprete "Terzo". Attenzione: in questa implementazione
sono cambiate le priorita' di alcuni operatori, per cui alcuni degli esempi
del testo sul Lambda Prolog potrebbero non funzionare bene. Per ovviare
all'inconveniente, si consiglia di mettere le parentesi in tutti i casi
ambigui.
Istruzioni per l'uso di
Terzo.
-
Per la programmazione Object-Oriented:
-
Il capitolo 2 (escluso il paragrafo 2.6) del libro A Theory of Objects,
di Martin Abadi e Luca Cardelli, pubblicato dalla Springer. Disponibile
in biblioteca DISI-DIMA.
-
La parte sul C++ del libro Linguaggi di Programmazione, di Ravi
Sethi, pubblicato dalla Zanichelli, o un qualsiasi altro libro sul C++
che illustri le caratteristiche object oriented di questo linguaggio. Grazie
all'iniziativa di Luca Bazzocchi e' disponibile il libro Introduction
to Object-Oriented Programming Using C++, di Peter Mueller.
-
Per le esercitazioni di laboratorio: E' disponibile sulle macchine Linux
il compilatore Gnu-C++, la cui attivazione si effettua tramite il comando
g++
Altri testi di consultazione (opzionali)
-
Per la programmazione funzionale:
-
Functional Programming, di Anthony J. Field e Peter G. Harrison,
pubblicato dalla Addison-Wesley.
Questo libro fornisce una discreta introduzione alla programmazione
funzionale higher order, illustrata tramite HOPE, un linguaggio funzionale
simile ad ML. La qualita' principale di questo testo, comunque, e' quella
di contenere una parte piuttosto approfondita ed esaustiva sulle problematiche
riguardanti l'implementazione di linguaggi funzionali.
Disponibile in biblioteca DISI-DIMA.
-
Per la programmazione logica:
-
Un po' di Logica: Gerardo Costa
e Catuscia Palamidessi. Breve introduzione al Calcolo Proposizionale e
alla Logica del Primo Ordine.
-
Programming in Prolog, di William F. Clocksin e Christopher S. Mellish,
pubblicato dalla Springer-Verlag. Testo per la programmazione in Prolog.
Disponibile in biblioteca DISI-DIMA.