I programmi che convertono programmi scritti in un certo linguaggio in un altro linguaggio sono chiamati traduttori.
Il linguaggio in cui e' scritto il programma e' detto linguaggio sorgente e quello in cui viene convertito e' detto linguaggio oggetto.
I traduttori si possono dividere in due gruppi a seconda della relazione tra linguaggio sorgente e linguaggio oggetto. Quando il linguaggio sorgente e' essenzialmente una rappresentazione simbolica di un linguaggio macchina numerico, il traduttore viene chiamato assemblatore e il linguaggio sorgente, linguaggio Assembly. Quando il linguaggio sorgente e' un linguaggio di alto livello (come C o Pascal) il traduttore e' chiamato compilatore.
La ragione per cui si usa programmare in linguaggio Assembly piuttosto che in linguaggio macchina e' perche': e' molto piu' facile l'uso di nomi e indirizzi simbolici piuttosto che l'uso di valori numerici.
Sara' poi l'assemblatore ad occuparsi di tradurre il programma scritto in Assembly in linguaggio macchina binario, traducendo i codici mnemonici delle istruzioni in codici operativi, sostituendo tutti i riferimenti simbolici degli indirizzi con la loro forma binaria e riservando lo spazio di memoria per le variabili.