Sei sulla pagina 1di 16

Linguaggi di

Programmazione e Traduttori
Che tipo di programma esegue la CPU?
La CPU è in grado
di eseguire SOLO
programmi scritti
nel PROPRIO
linguaggio
macchina
Problemi del linguaggio macchina
• Difficili da memorizzare
• Il programma scritto il L.M. non è portabile (se copio il programma in
L.M. su un’altra CPU, il programma non funziona)
• E’ necessario l’uso di linguaggi di programmazione ad alto livello (es.
C, C++, Phython, ecc,.)
• Sono più vicini al linguaggio umano
• Un programma scritto in un linguaggio di alto livello è trasportabile su
qualsiasi altra CPU (portabilità)
Tipologie di linguaggi
• Imperativi: sequenze di istruzioni (comandi) all’elaboratore
• C, C++, Python, Java …..
• Funzionali: fondato sulla valutazione di funzioni
• LISP
• Logici: descrizione della conoscenza relativa al problema, specificando
gli oggetti che intervengono e le relazioni fra di essi.
• PROLOG

• Nel Corso si fa riferimento esclusivamente ai linguaggi imperativi


Programmazione imperativa
Tre tipologie di istruzioni:
• Istruzioni di ingresso/uscita
• Istruzioni aritmetico-logiche
• Istruzioni di controllo
Stessa tipologia di istruzioni del Linguaggio Macchina!

Ruolo dell’astrazione:
Astrazione sui dati
• Tipi di dati predefiniti e definiti dal programmatore (variabili invece che codici binari)
Astrazione sul controllo
• Condizionali e cicli (IF, FOR e WHILE invece di salti)
Astrazione procedurale
Linguaggi A.L e macchina di Von Neumann
• Il linguaggio di alto livello di tipo imperativo si comporta come una
macchina di Von Neumann
• Le istruzioni della «CPU» sono scritte nel linguaggio di alto livello
• La memoria è rappresentata dalle variabili (intere, float, carattere,
array…..)
Linguaggi A.L e macchina di Von Neumann

Unità di
Controllo

int x Programma
Unità di x=x+1 a Unità di
x
Ingresso Variabili i Uscita

Unità Logica
ed aritmetica
(ALU)

MEMORIA
Traduzione in linguaggio macchina
• IL CALCOLATORE NON E’ IN GRADO DI COMPRENDERE
DIRETTAMENTE UN LINGUAGGIO AD ALTO LIVELLO

• Un programma deve essere tradotto in linguaggio macchina


• Due modi:
• mediante un compilatore
• mediante un interprete
Compilatori ed Interpreti
• I compilatori sono programmi che accettano in input un intero
programma scritto in linguaggio ad alto livello (programma sorgente)
e lo traducono interamente in un programma scritto in linguaggio
macchina (programma oggetto);

• Gli interpreti sono programmi che accettano in input le singole


istruzioni di un programma scritto in linguaggio ad alto livello e le
traducono una alla volta in singole istruzioni in linguaggio macchina.
Esempio 1: compilatore
• Dobbiamo sottoporre un curriculum, in inglese, ad un’azienda, ma
non conosciamo l’inglese
• Abbiamo bisogno di un traduttore che traduca quanto scritto da
noi dall’italiano all’inglese
• contattamo il traduttore
• il traduttore riceve il testo da tradurre
• il traduttore fornisce il testo tradotto
• possiamo inviare il nostro curriculum all’azienda
• Possiamo inviare il curriculum anche ad altre aziende senza contattare
di nuovo il traduttore
Esempio 2: interprete
• Dobbiamo incontrare un manager cinese per mo.vi di lavoro ma non
conosciamo il cinese
• Abbiamo bisogno di un interprete che traduca il nostro dialogo
• contattiamo l’interprete
• parliamo in italiano, in presenza dell’interprete
• contemporaneamente l’interprete comunica al manager cinese
• quanto detto da noi e viceversa
• Il compito dell’interprete si svolge contestualmente all’incontro col manager
cinese

• Se devo parlare di nuovo col manager cinese, ho bisogno ancora


dell’interprete
Compilatori
Interpreti
Esempi
• Linguaggi compilati • Linguaggi interpretati
• C/C++ • Java
• Pascal • Python
• Fortran • Basic
Vantaggi/svantaggi
• I programmi compilati sono più veloci
• I programmi interpretati sono più semplici da correggere (debug)
• Il file eseguibile (.exe) prodotto dal compilatore può essere
trasportato su altre macchine dello stesso tipo (es. windows ->
windows) senza modifiche, la seconda macchina non necessita del
compilatore
• Trasportando il programma di un linguaggio interpretato su un altro
elaboratore, è necessario che il secondo abbia anche lui l’interprete
Portabilità dei programmi
Si definisce portabilità la possibilità di utilizzare un programma su
piattaforme hardware/software diverse da quella dove è stato sviluppato
(Es. Da windows a linux, oppure da MAC a Windows)
Tre modalità:
• portabilità del file eseguibile: richiede calcolatori con hardware e sistema
operativo dello stesso tipo per il quale è stato compilato.
• portabilità tramite ricompilazione: richiede l’esistenza di un compilatore
per la nuova piattaforma e lo svolgimento della ricompilazione.
• portabilità tramite interpretazione: richiede l’esistenza di un interprete per
la nuova piattaforma.

Potrebbero piacerti anche