Linguaggi e traduttori
Relazione finale
Studente Luca Guerrini
Brevissimo sunto dei concetti principali
Lo scopo principale del corso di “Linguaggi e traduttori” era quello di studiare un nuovo
modo di programmare ad alto livello, basato sul paradigma Object Oriented (da cui
‘Programmazione a Oggetti’).
Il classico modello di programmazione era basato sul “paradigma procedurale”, in cui il
problema (che è una funzione agente su dati) può essere scomposto in sotto-problemi sempre più
piccoli, risolvibili quindi con semplici funzioni. Questo approccio, sebbene per un programmatore
esperto risulti abbastanza naturale, è invece ancora molto matematico e quindi vicino al modo di
agire di un calcolatore. L’attenzione è incentrata sull’algoritmo.
Nella programmazione ad oggetti l’attenzione viene invece focalizzata sui dati.
L’applicazione viene divisa in un insieme di oggetti, i quali possono interagire tra loro. I vantaggi di
un tale approccio sono una più naturale trasposizione del problema su computer, una forte
scalabilità già in fase di progettazione e soprattutto la protezione dei dati, i quali non devono più
essere globali ma sono schermati dall’incapsulamento nell’oggetto. Quest’ultima proprietà è
ottenuta facendo in modo che l’unico modo per accedere ai dati contenuti nell’oggetto sia attraverso
i metodi, funzioni implementate all’interno dell’oggetto stesso. Il dato è quindi protetto da errori di
propagazione e da usi impropri.
Un altro importante aspetto della programmazione ad oggetti è l’ereditarietà: una volta
definita una classe da questa è possibile derivarne altre, senza bisogno di rispecificarne quindi tutte
le proprietà. Questa progettazione “alle differenze” rende la costruzione dell’applicazione ancora
più aderente alla realtà che si vuole descrivere. Inoltre è un potente strumento per sviluppare
applicazioni molto grandi.
Un linguaggio OO molto noto è JAVA, ed è anche quello studiato nel corso. La
caratteristica più importante di Java (quella che ne ha permesso una così ampia diffusione) è il fatto
che può girare su qualsiasi macchina, con qualunque sistema operativo, a patto che sia presente una
Java Virtual Machine. Java infatti è un linguaggio sì compilato, ma il cui codice può essere
interpretato solo dalla JVM. Questa sua peculiarità lo ha reso adattissimo per lo sviluppo di
applicazioni in rete, notoriamente aperta a tutti i sistemi.
La mia esperienza
Il lavoro di verifica richiesto nel corso di ‘Linguaggi e traduttori’ consisteva nello svolgere 6
prove e di fare una relazione per ognuna.
Le prime quattro prove erano le più critiche in quanto era richiesto proprio di cambiare il
modo di pensare i programmi: in queste ho imparato a produrre ed utilizzare classi, oggetti
composti e derivati, interfacce etc. Devo dire che le difficoltà maggiori le ho avute non tanto a
causa della nuova impostazione ma per il molto tempo trascorso dall’ultima volta in cui avevo
programmato. Però ho raccolto anche grosse soddisfazioni nel vedere che bene o male me la
cavavo. Sono stato particolarmente orgoglioso della prova 3 dove ho costruito, partendo dall’ADT
orario della prova 2, un orologio analogico (tipo Ora Esatta RAI!). La prova 4 è forse stata la più
impegnativa di tutte ma ciò è dovuto alla naturale voglia di strafare che prende uno studente di
ingegneria quando non gli vengono dati limiti.
La quinta e la sesta erano invece un po’ più orientate alla conoscenza delle classi grafiche di
Java e quindi alla produzione di applicazioni per il Web. La quinta prova è la mia creatura
prediletta, forse perché la più vicina a qualcosa di utilizabile da un estraneo: finalmente sono
comparsi i pulsanti, i campi di testo, la gestione del mouse e tutte quelle cose spesso presenti in tutte
le applicazioni che debbano rispondere ad eventi. Java mi è sembrato davvero completo e facile
sotto questo punto di vista. Tanto per smentirmi, direi invece che nella sesta prova non ho
propriamente voluto strafare, infatti il mio risultato non mi è piaciuto molto. Però ho imparato qui a
produrre le famigerate Applet, che per me erano un mistero assoluto.
Conlusioni
Il corso è stato davvero interessante, e per quanto ho visto buona parte della classe ha dato il
massimo. Un ringraziamento particolare va al compagno Morini Stefano, sempre prodigo di
consigli nei momenti di difficoltà.