|
Presentazione linguaggio ADA
Battezzato in onore di lady Ada Lovelace,
la prima programmatrice della storia, ADA è un linguaggio high-level
studiato specificatamente per sviluppare applicazioni dove la
correttezza, sicurezza, affidabilità e manutenibilità fossero di
primaria importanza.
ADA, nella sua versione più moderna (ADA 95), è un linguaggio
industriale usato in tutto il mondo dalle aviazioni, comunicazioni,
spazio, trasporti, eserciti e nei controlli di processi industriali. ADA
è spesso il software che rende sicura la vita in applicazioni che fanno
volare la maggior parte dei passeggeri di compagnie aeree private, così
come nel controllo del traffico aereo da terra.
ADA si trova in treni ad alta velocità, sistemi di metropolitane, celle
telefoniche e barche da crociera.
Recentemente ADA è migrato anche nel settore medico, dell'energia,
finanziario e nei domini Internet. A causa della sua affidabilità, ADA è
anche utilizzato per ordinare film tramite tv via cavo.
Laddove un errore di software può costare vite umane o forti perdite
finanziarie, dunque, ADA è la scelta giusta.
Il linguaggio ADA è stato inizialmente sviluppato per rispondere alle
esigenze di sistemi militari "mission critical".
Il controllo durante la battitura del programma è importante per ridurre
in modo significativo gli errori più comuni, costringendo a mappare in
modo esplicito gli oggetti ai loro tipi corrispondenti. L'elaborazione
delle eccezioni consente di gestire condizioni hardware e software
pericolose incontrate durante l'esecuzione, facilitando il ritorno ad un
livello di sicurezza noto. La struttura del linguaggio contiene
meccanismi atti a migliorare l'ingegnerizzazione del software e la
qualità finale del programma.
Il principale aggiornamento del linguaggio è avvenuto nel 1995, con
l'uscita di ADA 95.
I principali miglioramenti comprendono il pieno utilizzo di tecniche
object-oriented (OOP), dispositivi per la distribuzione dei carichi di
elaborazione in tempo reale (come il multi-threading, protected objects,
alternative scheduling models) e il supporto per la gestione di
programmi molto ampi, sui quali debbano agire più programmatori
contemporaneamente. E' pensato per lavorare bene in ambienti
multi-linguaggio e dispone di standard per interfacciarsi con altri
linguaggi e facilitare il riutilizzo delle parti già scritte.
La nascita di ADA
Il linguaggio ADA è il risultato dello sforzo di progettazione più
esteso e costoso mai intrapreso.
Fino al 1974 metà delle applicazioni del Dipartimento della Difesa USA
(DoD) erano sistemi integrati.
Un sistema integrato è quello in cui l'hardware del computer è legato
con i dispositivi che controlla.
Più di 450 linguaggi erano stati usati per implementare differenti
progetti, ma nessuno di essi era standardizzato. Per questo motivo il
software era raramente riutilizzato. Allora, l'esercito, la
marina e l'aeronautica proposero di sviluppare un linguaggio di
alto livello per sistemi integrati.
Nel 1977 fu creata una serie completa di specifiche per ADA.
Nel febbraio del '77 la fase 1 del disegno del progetto fu completata.
In aprile 4 fornitori presentarono le loro soluzioni. Subito dopo ci
furono 2 mesi di valutazione dove 400 volontari suddivisi in 80 gruppi
scelsero due dei 4 fornitori che avevano proposto una soluzione.
A queste due compagnie venne dato il mandato di proseguire con la fase 2
del progetto.
Al termine della fase 2 ci
furono altri due mesi di valutazione. In maggio del '70 il Cii
Honeywell/Bull (unico fornitore straniero) fu scelto come miglior
progetto.
La fase 3 iniziò subito dopo e il disegno del progetto fu pubblicato
dall'ACM. In novembre '79 furono ricevute più di 500 segnalazioni sul
linguaggio da 15 differenti nazioni. La maggior parte erano suggerimenti
per piccole modifiche, nessuno veramente importante.
Sulla base di queste critiche venne fatta una revisione del linguaggio,
pubblicata poi in febbraio '80.
Dopo ancora piccoli cambiamenti in alcuni anni successivi, la versione
ufficiale finale fu definitiva.
Il linguaggio ADA venne quindi surgelato per i successivi 5 anni.
Le funzioni principali del linguaggio ADA
Packages: tipi di dati, oggetti e specifiche di procedure possono
essere incapsulati in un package. Ciò consente il disegno di programma
con astrazione di dati.
Excpetion handling: ADA ha ottime capacità di gestire le eccezioni,
il chè consente al programma di gestire i suoi errori di run-time.
Generic program units: è possibile scrivere una procedura (per
esempio un sort) che non richieda l'indicazione del tipo di dati.
Parallel/Concurrent processing: ADA supporta l'esecuzione di task
paralleli e concorrenti.
ADA 95 ha inoltre:
- supporto per programmazione object oriented
- librerie più flessibili
- migliore controllo dei dati condivisi
Aree applicative per linguaggio ADA
- DoD (Governo e Dipartimento della Difesa)
- sistemi bancari
- aviazione commerciale
- sistemi di comunicazione
- CAD (disegno tecnico)
- Produzione (controllo di processi)
Esempi di programmi ADA:
1)
Hello world
with Text_To; use Text_To
procedure hello is
begin
put("Hello World");
end hello
2) Somma in una schiera (packaging e array processing)
package ArrayCalc is
type Mydata is private;
function sum return integer;
procedure setval(arg:in integer);
private
size: constant:= 99;
type myarray is array(1..size) of integer;
type Mydata is record
val: myarray;
sz: integer := 0;
end record;
v: Mydata;
end;
package body ArrayCalc is
function sum return integer is
temp: integer;
-- Body of function sum
begin
temp := 0;
for i in 1..v.sz loop
temp := temp + v.val(i);
end loop;
v.sz:=0;
return temp;
end sum;
procedure setval(arg:in integer) is
begin
v.sz:= v.sz+1;
v.val(v.sz):=arg;
end setval; end;
with Text_IO; use Text_IO;
with ArrayCalc; use ArrayCalc;
procedure main is
k, m: integer;
begin -- of main
get(k);
while k>0 loop
for j in 1..k loop
get(m); put(m,3);
setval(m);
end loop;
new_line; put("SUM =");
put(ArrayCalc.sum,4);
new_line; get(k);
end loop;
end;
|