Traduttore (informatica)
# Traduttore (informatica)

Genericamente, i traduttori sono programmi responsabili della traduzione fra due diversi linguaggi di programmazione. Essi generano normalmente programmi scritti in linguaggio macchina a partire da un linguaggio ad alto livello e si distinguono in:

* Compilatori;
* Interpreti.

## I compilatori

I Compilatori traducono i programmi in moduli software scritto in codice macchina, specifico per una determinata architettura hardware, che deve essere linkato e, una volta caricato in memoria da un loader, può essere fruito direttamente da un processore. Non è però scontato che il linguaggio destinazione sia il linguaggio macchina della macchina host, in quanto esistono anche i cross-compilatori, il cui scopo è generare codice esecutivo per altre macchine, le cui risorse (processore, memoria, dischi) potrebbero essere troppo limitate per far girare l'ambiente di sviluppo nel quale viene scritto il programma. Quindi i programmi vengono eseguiti in un emulatore (in sostanza una macchina virtuale) e poi l'eseguibile creato viene portato sulla macchina destinazione.

## Gli interpreti

Gli Interpreti traducono di volta in volta l'istruzione in esecuzione in linguaggio macchina quindi devono essere sempre attivi durante l'esecuzione del programma principale. Anzi per essere più precisi si può affermare che l'unico programma in esecuzione è l'interprete, mentre il programma "principale" costituisce i dati.

## Differenze

Il vantaggio del programma compilato rispetto a quello interpretato risiede nella maggior velocità di esecuzione e compattezza rispetto alle risorse macchina impiegate. Viceversa, il programma interpretato è più pesante e lento, ma portabile a condizione che sulla macchina destinataria esista un interprete identico (sotto il profilo del linguaggio) a quello della macchina di sviluppo e così si capirà di più.

