Il linguaggio Ada

Dominique Le Verrand

Il linguaggio Ada

Edizione a stampa

53,00

Pagine: 320

ISBN: 9788820443955

Edizione: 1a edizione 1987

Codice editore: 725.8

Disponibilità: Nulla

Il linguaggio di programmazione Ada è stato progettato su invito del Dipartimento della difesa degli Stati Uniti per essere utilizzato in una gran varietà di applicazioni: calcolo scientifico, questioni gestionali, software di base, sistemi di tempo reale, package, ecc.

La concezione di questo linguaggio ha richiesto un grande impegno collettivo a cui hanno partecipato numerosi esperti del mondo della ricerca e dell'industria. Alcuni affermano che Ada sarà il linguaggio del prossimo ventennio e che soppianterà gli altri linguaggi ora affermati, altri che Ada sia già troppo indietro rispetto allo stato dell'arte. Questo libro vuole aiutare coloro che sono interessati ad Ada a formarsi un'opinione personale fondata sulla conoscenza tecnica e sui vari aspetti critici.

Il volume ha sostanzialmente la stessa struttura di un Reference, Manuale di Ada: questo consente di poter fare facili riferimenti ed evita di dover duplicare spiegazioni sul linguaggio che viene invece trattato in modo approfondito evidenziando con esempi e/o controesempi sia i punti pregevoli che i difetti e trattando in modo accurato i concetti nuovi.

Frutto dell'intensa attività critica di una ventina di persone, che costituiscono il gruppo Ada dell'Afcet e che si presentano sotto il nome collettivo di D. Le Verrand, il volume rappresenta un documento di sicuro interesse critico ed informativo in quanto alcuni degli autori hanno partecipato attivamente alla definizione o alla revisione delle specifiche di Ada.

Questa edizione italiana è lo studio più avanzato, sul linguaggio Ada, condotto dal gruppo; infatti, hanno inserito una serie piuttosto consistente di aggiornamenti che non sono presenti nelle edizioni francese ed inglese.

1. Introduzione
1. Scopo del volume
1.1. Obiettivi
1.2. A chi è rivolto
1.3. Spirito critico
2. Gruppo e metodo di lavoro
3. Documenti utilizzati
4. Presentazione del volume
4.1. Struttura
4.2.Traduzione
4.3.Terminologia
4.4.Tipografia
5. Ringraziamenti
2. Dichiarazioni e tipi
1. Le dichiarazioni
1.1. Le dichiarazioni d'oggetto
1.1.1 Presentazione
1.1.2 Valutazione
1.2. Le dichiarazioni di numero
1.2.1. Presentazione
1.2.2 . Valutazione
1.3. Le dichiarazioni di tipo
1.3.1. Presentazione
1.3.2 . Valutazione
1.4. Ove fare dichiarazioni
2. I tipi
2.1. Classificazione dei tipi in funzione della loro struttura
2.2. I tipi predefiniti
2.3. Metodi per la costruzione di tipi e di sottotipi
2.4. Equivalenza di tipi
2.5. Assegnazione e confronto
2.6. I sottotipi
3. Costruzione di tipi
3.1. L'elencazione
3.2. La derivazione
3.3. La derivazione con limitazioni
3.4. Valutazione
3.5. Le tabelle
3.5.1. Tabelle con limitazioni
3.5.2. Tabelle senza limitazioni
3.5.3. Le limitazioni dell'indice
3.5.4. Le stringhe di caratteri
3.5.5. Valutazione
3.6 .Gli articoli
3.6.1. Gli articoli senza discriminante
3.6.2 . Gli articoli con discriminante
3.6.3 . I discriminanti
3.6.4 . Le varianti
3.6.5. Valutazione
3.7 Gli accessi
4. Conclusione
3. I tipi numerici
1. Introduzione
2. I numeri modello
2.1. Definizione ed assiomi
2.2 .Proprietà
3. Prove di programmi numerici
4. Conclusione
4. Nomi ed espressioni
1. Introduzione
2. Operandi
2.1. I litteral
2.2 .Aggregati
2.2.1 Aggregati di tipo articolo
2.2.2 Aggregati di tipo tabella
2.3 Nomi
2.3.1 Attributi
2.3.2 Oggetti
2.4 Allocatori
2.5.Nomi di funzioni
2.6 .Conversione di tipo
2.7.Espressioni qualificate
3. Operatori
3.1. Operatori logici
3.2. Relazioni e appartenenza
3.3. Operatori aritmetici
4. Espressioni statiche, espressioni universali
5. Conclusione
5 .Le strutture di controllo sequenziali
1. Le istruzioni: sequenza e struttura di blocco
1.1.Presentazione
1.2. Valutazione
2. Assegnazione
2.1. Presentazione
2.2. Esempio
2.3. Valutazione
3. istruzione if
3.1. Presentazione
3.2. Valutazione
4. Istruzione case
4.1. Presentazione
4.2. Valutazione
5. I cicli
5.1 Presentazione
5.2 Valutazione
6. Salti ed etichette
6.1 Presentazione
6.2 Valutazione
7. Altre strutture di controllo sequenziali
8. Conclusione
6. La modularità
1. I sottoprogrammi
1.1 Obiettivi auspicati
1.2 Descrizione
1.3 Esempio
1.4 Problemi vari
1.4.1 Assenza di parametri procedurali
1.4.2 Posto dei sottoprogrammi nelle parti dichiarativi
1.4.3 Separazione delle specifiche e del corpo del sottoprogramma
1.4.4 Portata dei parametri formali
1.4.5 Passaggio dei parametri
1.4.6 Parametri: tabella senza limitazioni
1.4.7 Conclusione
2. I package
2.1 Descrizione
2.1.1 Struttura
2.1.2 Contenuto dettagliato della specifica di un package
2.1.3 Inscatolamento di package
2.2 Valutazione
2.2.1 Elaborazione
2.2.2 Parte privata - tipo privato
2.2.3 Diverse possibilità d'uso
2.3 Conclusione
3. Esempi completi
3.1 Esempio 13
3.2 Esempio 14
7. Portata e visibilità
1. Portata delle dichiarazioni
1. I Fondamenti
1.2 Valutazione
2. Visibilità
2.1 Fondamenti
2.2 Valutazione
2.2.1 Portata e visibilità
2.2.2 Sovraccarico
2.2.3 Clausola use
2.2.4 Compilazione separata di sottounità
2.2.5 Parametri formali
3. Ridefinizione
3.1 Fondamenti
3.2 Valutazione
4. Durata della vita degli oggetti
4.1 Presentazione
4.2 Valutazione
5. Protezione
6. Conclusione
8. I task
1. Generalità
1.1 I tipi task
1.2 Creazione di task
1.2.1 Elaborazione della specificazione del tipo task
1.2.2 Elaborazione del corpo del tipo task
1.2.3 Elaborazione della dichiarazione d'oggetto task
1.2.4 Attivazione del task
1.2.5 Esecuzione delle istruzioni del corpo
2. Gestione del tempo
3. Comunicazione
3.1 Punti di input. Istruzione accept
3.2 Non determiniamo. Istruzione select
3.2.1 Istruzione select (dalla parte richiamata)
3.2.2 Istruzione select (dalla parte richiamante)
3.2.2.1 Richiesta di rendez-vous immediato
3.2.2.2 Richiamo limitato nel tempo
4. Durata della vita dei task
4.1 Relazioni di dipendenza
4.1.1 Caso dei task dichiarati
4.1.2 Caso dei task creati dall'allocatore new
4.2 Task compiuti e task terminati
4.3 Vita di un task
4.4 Istruzione abort
9 Interruzioni
6. Priorità
6.1 Priorità dei task e del programma principale
6.2 Priorità dei rendez-vous
6.3 Priorità delle interruzioni
7. Esempi
7.1 Comunicazione diretta anonima senza buffer
7.2 Esempi di sincronizzazione pura
7.2.1 Allocatore di risorse
7.2.2 Reciproca esclusione
7.3 Esempio di accesso controllato ad un oggetto condiviso
7.4 Comunicazione asincrona: dati direttamente accessibili dai task
7.5 Problema d'ordinamento (esempio di gestione del disco)
7.6 Una tabella di task che operano come pipe-Iine
8. Valutazione
8.1 Aspetti positivi
8.1.1 Nozione di tipo task
8.1.2 Concetto di rendez-vous
8.1.3 Interesse delle famiglie di input
8.1.4 Nozione di task passivo
8.2 Lacune ed inadeguatezze
8.2.1 Sintassi
8.2.2 Parametrizzazione e vincolo
8.2.3 Comunicazione bufferizzata
8.2.4 Selezione delle richieste di rendez-vous
8.2.5 Designazione dei task
8.2.6 Il tempo
8.3 I pericoli
8.3.1 Arbitrario ed aleatorio
8.3.2 Rami protetti e comandi protetti
8.3.3 Interbloccaggio
8.3.4 Coerenza dei dati
9. Conclusione
9. Le eccezioni
1. Presentazione del problema delle eccezioni
2. Concetti di Ada
2.1 Dichiarazione d'eccezione
2.2 Gestore d'eccezioni
2.3 Istruzione raise
2.4 Associazione dei recuperatori e delle eccezioni
2.5 Caso dei task
2.6 Eccezioni predefinite
3. Valutazione
3.1 Precisazioni apportate da IMRAI
3.1.1 Ridichiarazione delle eccezioni
3.2 Insufficienze del meccanismo delle eccezioni
3.3 Punti positivi
10. La genericità
1. Introduzione
1.1 Scopi della genericità
1.2 Stato dell'arte
2. Spiegazioni
2.1 Generalità
2.2 Regola di elaborazione delle dichiarazioni generiche
2.3 Parametri formali delle unità generiche
2.3.1 Parametri valori
2.3.2 Parametri oggetti
2.3.3 Specifica dei parametri formali "type"
2.3.4 Specifiche di parametri formali sottoprogrammi
2.4 Parametri effettivi e regole di corrispondenza
2.4.1 Regola per gli oggetti o valori
2.4.2 Regola di corrispondenza dei tipi
2.4.3 Regola di corrispondenza dei sottoprogrammi
2.5 Elaborazione degli esemplari
3. Esempi
3.1 Integrazione di una funzione
3.2 Tipo astratto generico
3.3 Procedura generica di sort di una tabella
4. Valutazione
4.1 Osservazioni sulla sintassi o sulla leggibilità
4.2 Sulle specifiche di tipi formali
4.3 Commenti sulla generazione esplicita di esemplari
4.4 Commenti su alcuni punti di [MRA]
5. Conclusione
11. La compilazione separata
1. Introduzione
2. Troncamento di un programma in lista di compilazione separata
2.1 Unità separate
2.2 Unità autonome
2.3 Contesto di compilazione d'una uni