Gardelli Luca, [email protected]
II anno DU Ingegneria Informatica
Linguaggi e Traduttori
Conclusioni
L’evoluzione della richiesta di software sempre più voluminosi e
complessi ci ha condotto alla ricerca di un nuovo paradigma di
programmazione. Delle possibili soluzioni ne abbiamo analizzata
una in particolare: il paradigma ad oggetti.
Il passaggio dai linguaggi imperativi a quelli ad oggetti può
essere riassunto nel passaggio dall’algoritmo agli oggetti.
L’algoritmo in se è più mirato ad applicativi di piccole
dimensioni: quando le dimensioni raggiungono determinati livelli
il sistema procedurale diventa ingestibile. I dati sono dispersi
nel codice e difficilmente si riesce a ricordare il funzionamento
delle procedure e quali variabili coinvolgono. Il paradigma ad
oggetti risolve questo inconveniente assimilando i dati e le
procedure in una nuova astrazione che prende il nome di classe: i
programmi
assumono
quindi
un
aspetto
più
modulare
(Incapsulamento). La modularità ci conduce verso
un modello di
protezione dati, del tutto nuovo per i linguaggi di tipo
imperativo.
La
soluzione
adottata
consiste
nel
fornire
un’interfaccia al cliente tramite la quale è possibile accedere a
campi (Astrazione): ogni altro tentativo di accesso produrrà come
effetto un errore. L’algoritmo è anche superato dal punto di vista
del flusso di esecuzione del codice. Non esiste più un percorso
forzato per l’andamento del programma: le nuove entità che
istanziano
una
classe,
gli
oggetti,
comunicano
fra
loro
scambiandosi messaggi, i quali dipendono dal contesto corrente
(Dinamicità).
Il linguaggio preso in esame che adotta un paradigma ad oggetti è
il Java. Gli sviluppatori di Java si sono posti come uno degli
obiettivi primari il poter trasferire i programmi su qualsiasi
macchina, a prescindere quindi dal sistema operativo installato e
dall’hardware su cui opera: questa caratteristica viene detta
portabilità. Questo risultato è stato raggiunto utilizzando una
strategia simile a quella dei linguaggi interpretati. In realtà il
codice viene parzialmente compilato, cioè non viene prodotto
codice macchina: quello che si ottiene è il bytecode, il quale è
indipendente dalla piattaforma. Questo bytecode viene poi gestito
dalla macchina virtuale Java specifica per il sistema utilizzato.
Questo è la motivazione principale per cui Java ha riscosso
successo in Internet.
Java inoltre supporta l’ereditarietà. Per ereditarietà si intende
la possibilità di derivare oggetti da altri estendendone e
modificandone
le
funzionalità,
organizzando
il
sistema
da
modellare in una gerarchia. Tramite questo approccio è possibile
programmare in maniera incrementale (bottom-up).
In Java è possibile programmare in maniera concorrente: questa
funzionalità è supportata tramite i thread. E’ possibile lanciare
diversi thread in maniera da eseguire parallelamente più compiti,
con un conseguente aumento delle prestazioni.
Valutazione: 30/30
Le motivazioni di questa mia valutazione risiedono innanzi tutto
nella cura riposta nella stesura delle relazioni, nel rispetto
delle specifiche e nel tentativo di osservare i tempi di consegna.
Da un’analisi delle relazioni dovrebbe emergere che ho acquisito
una buona padronanza dei concetti discussi a lezione.
Penso di aver dimostrato un notevole impegno e partecipazione sia
alle lezioni sia per quanto riguarda le esercitazioni.