Concetti dei linguaggi di programmazione

Carlo Ghezzi, Mehdi Jazayeri

Concetti dei linguaggi di programmazione

Edizione a stampa

53,50

Pagine: 456

ISBN: 9788820488499

Edizione: 2a edizione 1994

Codice editore: 1385.5

Disponibilità: Fuori catalogo

Questo libro analizza in modo sistematico i linguaggi di programmazione, fornendo criteri per comprendere, valutare, confrontare e scegliere tra diversi linguaggi. Un accento particolare è posto sui linguaggi come «strumenti per lo sviluppo di applicazioni». In tal senso i linguaggi vengono valutati facendo riferimento alla qualità del software prodotto, e in particolare alla sua affidabilità e facilità di modifica.

Il successo di questo approccio è testimoniato dalla grande diffusione a livello mondiale del libro, edito in inglese, spagnolo, portoghese, tedesco e olandese. In un'analisi comparata con altri volumi sui linguaggi di programmazione apparsa sul Computing Reviews, della prestigiosa associazione americana A.C.M. (Association for Computing Machinery), viene definito «splendido nel fornire una rassegna e una introduzione all'argomento». L'opera emerge anche come il trattato più completo e come «il più vivace e il meglio scritto».

Carlo Ghezzi è titolare della cattedra di ingegneria del software presso il Dipartimento di elettrotecnica del Politecnico di Milano. In precedenza ha svolto la propria carriera didattica e scientifica presso lo stesso Politecnico di Milano, l'Università della California a Los Angeles, l'Università della North Carolina a Chapel Hill e l'Università di Padova. Autore di oltre 60 articoli scientifici e di 5 libri pubblicati a livello nazionale e internazionale, ha svolto (e svolge) attività di ricerca nell'ambito dei linguaggi di programmazione, della teoria dei linguaggi e dell'ingegneria del software, con particolare riguardo agli ambienti per la specifica formale e alla riusabilità del software.

Mehdi Jazayeri è ricercatore presso i laboratori di ricerca della Hewlett Packard a Palo Alto, California. In precedenza ha partecipato ad alcune iniziative di lancio di aziende high-tech nella zona di San Francisco. E' stato anche professore di Computer Science presso l'Università della North Carolina a Chapel Hill. La sua attuale attività di ricerca è nell'ambito dei linguaggi di programmazione e dei metodi di progetto di software per sistemi distribuiti. In precedenza si è dedicato ai linguaggi di programmazione e, in particolare, alle tecniche di tradizione basate sulle «grammatiche ad attributi»; in questi settori ha prodotto numerose importanti pubblicazioni.

• Introduzione
* Ciclo di vita del software
* Il linguaggio di programmazione come componente di un ambiente di sviluppo software
* Metodologia di progetto del software e linguaggi di programmazione
* Architettura dei computer e linguaggi di programmazione
* Obiettivi di progetto dei linguaggi imposti dal ciclo produttivo del software
* Breve panorama storico
• Una panoramica sull'evoluzione concettuale dei linguaggi di programmazione
* Astrazione sui dati
* Astrazione sul controllo
* Correttezza dei programmi
* Programmazione in grande
• Le strutture dei linguaggi di programmazione
* Definizione di linguaggio
* Interpretazione del linguaggio
* Il concetto di legame
* Variabili
* Moduli di programma
* Strutture di esecuzione dei linguaggi
* Il passaggio dei parametri
* Definizioni ufficiali dei linguaggi
• Tipi di dati
* Tipi elementari
* Costruttori di tipi
* Tipi definiti dall'utente
* La struttura dei tipi dell'Algol 68
* La struttura dei tipi del Pascal
* La struttura dei tipi di Ada
* Valutazione delle conseguenze dell'uso dei tipi
* Type checking statico e type checking dinamico
* Conversioni di tipo
* Compatibilità di tipo
* Problemi con i puntatori
* Tipi di dati astratti
* Il concetto di classe nel Simula 67
* Tipi di dati astratti nei linguaggi moderni
* Modelli realizzativi
* Modelli predefiniti e tipi non strutturati definiti dall'utente
* Tipi strutturali
* Garbage collection
• Strutture di controllo
* Strutture di controllo a livello di istruzione
* Strutture di controllo a livello di unità
* Unità subordinate chiamate esplicitamente: discussione sullo stile di programmazione
* Unità chiamate esplicitamente
* Unità simmetriche: le coroutine del Simula 67
* Unità concorrenti
• Programmazione in grande
* Cos'è un grande programma?
* Programmazione in piccolo e programmazione in grande: metodologie di progetto
* Linguaggi e programmazione in grande
* Ambienti di sviluppo software
• Programmazione funzionale
* Caratteristiche dei linguaggi imperativi
* Un esempio di programma imperativo
* Problemi dei linguaggi imperativi
* Fondamenti della programmazione funzionale
* Funzioni
* Funzioni matematiche e linguaggi di programmazione
* Linguaggi funzionali (o applicativi)
* Un semplice linguaggio puramente funzionale
* Funzioni primitive e funzionali
* Caratteristiche funzionali di linguaggi esistenti
* Lisp
* APL
* Confronto tra linguaggi applicativi e linguaggi imperativi
• Programmazione logica
* Un esempio: i numeri primi
* Esempio: l'ordinamento di una sequenza
* Esempi di non proceduralità in alcuni linguaggi
* Uno sguardo al Prolog
* Prolog e Snobol4: aspetti comuni
* Conclusioni: il futuro della programmazione logica
• Introduzione alla semantica formale
* Stili di definizione formale della semantica
* Introduzione alla semantica assiomatica
* Introduzione alla semantica denotazionale
• Progetto dei linguaggi
* Criteri di progetto
* Scrivibilità - Leggibilità - Affidabilità
* Prospettive nel progetto dei linguaggi
• Glossario dei linguaggi di programmazione

Collana: Scienze e tecnologie informatiche

Livello: Textbook, strumenti didattici