Come funziona un compilatore

di Lorenzo Neri

In termini semplici e poco tecnichesi, in questo articolo vediamo come funziona un compilatore!

Prima ancora di vedere come funziona, è giusto spiegare che cosa sia.

Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!

Che cos’è un compilatore

Un compilatore è un programma in grado di tradurre il codice che hai appena scritto tramite un linguaggio di programmazione in un eseguibile.

Per eseguibile intendiamo qualcosa che si possa eseguire sul tuo computer.

Un browser web, il tuo videogioco preferito, Skype… Sono tutti quanti eseguibili.

Ora che abbiamo capito che cos’è un compilatore, vediamo come funziona.

Un compilatore esegue il processo di traduzione in più fasi.

Analisi lessicale

È la prima fase. Quello che fa il compilatore è analizzare il codice che hai appena scritto.

Il codice viene trasformato in un insieme di caratteri per poi essere convertito in elementi che seguono la grammatica del linguaggio di programmazione. Se ti trovassi spaesato a riguardo, ti conviene dare un occhio al mio articolo sui linguaggi di programmazione dove ho spiegato bene il concetto di grammatica 😉

Questa fase infine, termina rimuovendo gli spazi e i commenti.

Analisi sintattica

Ciò che viene prodotto dall’analisi lessicale, ovvero gli elementi del tuo codice che rispecchiano la grammatica del linguaggio che stai usando, viene usato per generare un albero di parsing.

Questo albero di parsing viene strutturato in base ai blocchi che hai costruito. Ad esempio gli if-then-else, le funzioni e via discorrendo.

A che cosa serve tutto questo?

A far sì che vengano generati gli errori di sintassi. In questo modo puoi accorgerti quando manca una parentesi oppure un punto e virgola 😀

Analisi semantica

Finite le due fasi precedenti, bisogna utilizzare ancora una volta l’albero di parsing per fare una cosa.

Bisogna verificare che tutto ciò che hai scritto segua le regole del linguaggio.

In questo step avviene la verifica degli identificatori come variabili, oggetti, classi, funzioni.

Ne si verifica il loro tipo il loro ordine di dichiarazione ed uso.

Questa fase in parole molto semplici, serve a farti capire se stai usando variabili prima di dichiararle ad esempio.

Intermediazione del codice

Un compilatore non funziona solo grazie all’analisi del tuo codice.

Dobbiamo fare il necessario per produrre qualcosa che il computer possa davvero capire 🙂

Per intenderci: dobbiamo tradurlo in codice sorgente per il computer stesso.

Quello che fa il compilatore a questo punto è tradurre il linguaggio di alto livello in linguaggio macchina.

Questo è necessario perchè i computer sono un po’ stupidi e sanno comprendere “solo” il binario e qui potresti trovare una spiegazione più approfondita 🙂

Ottimizzazione del codice

Hai presente tutte quelle volte che dichiari migliaia di variabili inutili oppure non le utilizzi nemmeno?

Questa fase serve ad eliminare risorse che non vengono usate nel programma per renderlo più veloce.

Diciamo che questo step è utile ad eliminare gli errori umani 😀

Generazione del codice

Siamo arrivati allo step finale del funzionamento di un compilatore.

Qui, una volta superati gli step precedenti, in base al tipo di computer o dispositivo per il quale stai creando il tuo programma, il compilatore lo traduce finalmente in linguaggio macchina per creare a tutti gli effetti il file eseguibile!

Continua a scoprire di più con questi articoli!

Lascia un commento


The reCAPTCHA verification period has expired. Please reload the page.

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più