Unità E3 Evoluzione dei linguaggi di programmazione © 2007 SEI-Società Editrice Internazionale, Apogeo Obiettivi • Conoscere le diverse categorie in cui si dividono i linguaggi di programmazione (linguaggi macchina, linguaggi assembler, linguaggi ad alto livello, linguaggi orientati agli oggetti) • Conoscere i concetti di base dei traduttori, compilatori e interpreti © 2007 SEI-Società Editrice Internazionale, Apogeo I linguaggi di programmazione • I linguaggi di programmazione sono linguaggi formali in cui i singoli elementi e le regole di costruzione sintattica sono definiti in una grammatica, e possono essere classificati in base alla loro vicinanza al pensiero umano. © 2007 SEI-Società Editrice Internazionale, Apogeo Linguaggi macchina • Il linguaggio che un computer è in grado di eseguire direttamente è il linguaggio macchina all’interno del quale i programmi, il codice oggetto, sono costituiti da una sequenza di cifre binarie che codificano le istruzioni e i dati. • A ogni istruzione in linguaggio macchina corrisponde un’operazione direttamente eseguibile dal processore. • Le istruzioni sono strettamente legate all’architettura dell’elaboratore • Ogni istruzione è costituita da un codice operativo e dagli operandi. • Le istruzioni sono difficili da interpretare per l’uomo, ma facili per la macchina © 2007 SEI-Società Editrice Internazionale, Apogeo Linguaggi Assembler • Le istruzioni sono ancora legate alla macchina, ma sono rappresentate in un codice mnemonico, più facilmente leggibile dal programmatore. • I programmi assembler, per essere eseguiti, devono essere tradotti in linguaggio macchina. © 2007 SEI-Società Editrice Internazionale, Apogeo Linguaggi ad alto livello • Hanno una sintassi precisa ma le loro istruzioni utilizzano simboli matematici e seguono il modo di ragionare e di esprimersi dell’uomo • Per essere eseguiti dalla macchina devono essere tradotti in linguaggio macchina. • Tra i più famosi linguaggi ad alto livello troviamo: COBOL, Fortran, Pascal e C. © 2007 SEI-Società Editrice Internazionale, Apogeo Linguaggi ad alto livello (esempio) • Nei linguaggi ad alto livello come il C un’istruzione che somma due valori si scrive nel modo seguente: – a = a+b; • Con a e b non si fa riferimento a locazioni fisiche della memoria del computer ma a variabili identificate da un nome e alle quali possono essere assegnati valori. © 2007 SEI-Società Editrice Internazionale, Apogeo Linguaggi orientati agli oggetti • C++ e Java sono linguaggi per la programmazione orientata agli oggetti (OOP, Object Oriented Programming). • I linguaggi a oggetti si differenziano dagli altri linguaggi ad alto livello soprattutto perché consentono di modellare, in modo più naturale per l’uomo, gli elementi della realtà che deve essere rappresentata nella soluzione dei problemi. • Un oggetto è un elemento concreto definito dalle sue caratteristiche e dai suoi comportamenti. © 2007 SEI-Società Editrice Internazionale, Apogeo Traduttori • Tutti i programmi non scritti in linguaggio macchina per essere eseguiti devono essere tradotti. • L’operazione di traduzione viene eseguita in modo automatico da programmi traduttori resi disponibili spesso dalle stesse case costruttrici dei computer. © 2007 SEI-Società Editrice Internazionale, Apogeo Assemblatori • Un programma assembler per essere eseguito viene tradotto in linguaggio macchina da appositi programmi detti assemblatori © 2007 SEI-Società Editrice Internazionale, Apogeo Compilatori • Un programma in un linguaggio ad alto livello, (codice sorgente) per essere eseguito deve essere tradotto in linguaggio macchina: questo compito viene svolto da appositi programmi detti compilatori © 2007 SEI-Società Editrice Internazionale, Apogeo Fasi • Sono presenti due fasi distinte: compilazione ed esecuzione. • Nel momento in cui si sta realizzando e provando il programma sarà necessario ripetere le due fasi, in modo da verificare l’effetto delle modifiche apportate al codice. • Successivamente il programma verrà utilizzato ed eseguito direttamente in codice oggetto. • Una nuova traduzione sarà necessaria soltanto se verranno effettuate modifiche al programma originario. © 2007 SEI-Società Editrice Internazionale, Apogeo Interpreti • Per alcuni linguaggi le fasi di compilazione ed esecuzione non sono distinte, ma ogni istruzione del codice sorgente viene tradotta e poi eseguita. • Anche se il codice sorgente non è stato modificato, tutte le volte che si esegue il programma in realtà lo si traduce e lo si esegue. • Nel primo caso si parla di linguaggi compilati nel secondo di linguaggi interpretati. © 2007 SEI-Società Editrice Internazionale, Apogeo