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à.