Per poter essere eseguito da un elaboratore elettronico, ogni algoritmo deve
essere codificato mediante le parole chiave di un linguaggio di
programmazione. Un simile linguaggio è costituito da un insieme di parole e
di regole sintattiche che ci consentono di tradurre in termini precisi e non
ambigui i singoli passi che costituiscono un algoritmo. In un certo senso si può
anche pensare ad un linguaggio di programmazione, come ad un tramite tra la
nostra lingua parlata (ricca di forme e sfumature che la rendono ambigua ed
inadatta a comunicare con una macchina) ed il linguaggio dell'elaboratore
elettronico, il cosiddetto linguaggio macchina (che al contrario della nostra
lingua parlata è un linguaggio assai povero di espressioni, ma dotato di una
precisione ``millimetrica'').
Il calcolatore non è in grado di tradurre in operazioni da eseguire le
istruzioni codificate mediante un linguaggio di programmazione. L'unico
linguaggio con cui il computer è in grado di operare è il linguaggio macchina.
Dobbiamo quindi dotarci di appositi programmi (scritti in linguaggio macchina!)
che si occupino della traduzione delle istruzioni dei nostri programmi scritti
con un linguaggio di programmazione, nel linguaggio della macchina.
Questo tipo di programmi traduttori sono classificabili in due
categorie principali, in base al loro modo di operare la traduzione:
compilatori:
effettuano la traduzione delle righe del programma una volta per tutte e
producono in output un programma in linguaggio macchina equivalente a quello
fornito in input dal programmatore; il programma compilato potrà poi
essere eseguito più volte senza che sia necessaria ogni volta una operazione
di traduzione;
interpreti:
effettuano la traduzione di una istruzione di programma per volta e la
eseguono immediatamente dopo averla tradotta; quindi ogni volta che si esegue
un programma l'interprete lo traduce un'istruzione dopo l'altra durante
l'esecuzione.
Il vantaggio dell'uso di un interprete rispetto ad un compilatore sta nel
fatto che il programma sorgente può essere modificato in ogni momento e poi
inviato immediatamente in esecuzione, senza la necessità di dover eseguire
ulteriori passaggi. In generale però, un programma compilato è molto più
efficiente di un programma interpretato. Il Perl[1], oggetto di queste
dispense, è un linguaggio interpretato, ma garantisce una elevata efficienza
grazie al fatto che integra delle macro istruzioni già pronte per essere
utilizzate. Uno dei più famosi linguaggi di programmazione, il BASIC[2], è spesso un
linguaggio interpretato. Viceversa il C, il Fortran ed il Pascal sono dei
linguaggi dotati di un compilatore.