I programmi, scritti in uno specifico linguaggio di programmazione, sono memorizzati all’interno di file, detti file sorgenti (source file), che non sono direttamente comprensibili dall’elaboratore (CPU), ma devono essere “tradotti” in linguaggio macchina.55 Esistono essenzialmente due tipologie di traduzione dei file sorgenti: l’interpretazione e la compilazione. Un file sorgente può essere interpretato, ovvero deve esistere un programma scritto in linguaggio macchina, l’interprete (interpreter), che traduce in linguaggio macchina, una dopo l’altra, tutte le istruzioni presenti nel file sorgente (programma da tradurre) passandole via via alla CPU che le esegue. Un file sorgente può essere compilato, ovvero deve esistere un programma scritto in linguaggio macchina, il compilatore (compiler), che traduce in linguaggio macchina tutte le istruzioni presenti nel sorgente, memorizzandole all’interno di un file eseguibile. La differenza è sostanziale: ogni volta che si desidera far eseguire un programma interpretato è necessario far eseguire anche l’interprete a cui si fa quindi tradurre il file sorgente sul momento, al volo (on-the-fly); se si desidera invece far eseguire un programma compilato, già tradotto quindi in linguaggio macchina dal compilatore, non è necessario far eseguire insieme ad esso anche il compilatore, poiché il programma compilato (file eseguibile) è comprensibile direttamente dalla CPU (è in linguaggio macchina): il compilatore è necessario soltanto nella fase di traduzione (compilazione) dei file sorgenti del programma, che avviene una tantum. Per questo l’esecuzione di un programma compilato è notevolmente più veloce rispetto a quella dello stesso programma interpretato: nel tempo di esecuzione di un programma interpretato viene ovviamente incluso anche il tempo di traduzione di ogni istruzione, mentre con il programma compilato non c’è traduzione durante la fase di esecuzione (esso è già stato tutto tradotto).
La stessa interfaccia a caratteri (la shell56) è un interprete di comandi. È possibile scrivere quindi dei programmi con la sintassi compresa da tale interprete. Tali programmi sono denominati script.
I concetti qui accennati saranno trattati nel cap. 15.