Che cosa è un programma compilatore?

  Compiler
  Schema che illustra il funzionamento di un compilatore ideale.

Un compilatore è un programma che traduce una serie di istruzioni scritte in un determinato linguaggio di programmazione (codice sorgente) in istruzioni di un altro linguaggio (codice oggetto). Questo processo di traduzione si chiama compilazione.

L'attività inversa, passare dal codice oggetto al codice sorgente è chiamata decompilazione ed è effettuata per mezzo di un decompilatore.

Se tutti i compilatori aderiscono esattamente alla specifica del linguaggio, lo stesso programma potrà essere compilato senza modifiche da ciascun compilatore, producendo risultati semanticamente uguali, ovvero programmi che producono lo stesso risultato se sottoposti agli stessi dati di ingresso. Nella realtà, molti compilatori implementano il linguaggio in modo incompleto, o aggiungono estensioni proprietarie, creando in effetti dei dialetti di ciascun linguaggio. Per i linguaggi che adottano uno standard nella decorazione dei simboli, il codice oggetto generato da compilatori differenti può essere collegato assieme in un unico eseguibile.

Cenni storici

Negli anni 50 sono stati sviluppati diversi compilatori sperimentali (vedi ad esempio, i primi lavori di Grace Hopper sul linguaggio A-0), ma nel 1957 il team Fortran presso l'IBM, guidato da John Backus, fu accreditato come primo inventore di un compilatore completo. Il COBOL fu uno dei primi linguaggi nel 1960 ad essere compilato su più architetture.

L'idea della compilazione prese velocemente piede e molti dei princìpi di design dei compilatori vennero sviluppati negli anni '60.

Un compilatore è esso stesso un programma scritto in un qualche linguaggio. I primi compilatori venivano scritti in Assembly. Il primo compilatore auto-compilato, capace cioè di compilare il suo stesso codice, fu creato per il linguaggio Lisp da Hart e Levis presso il MIT nel 1962.

L'uso di linguaggi ad alto livello per scrivere i compilatori ebbe una spinta nei primi anni '70, quando i compilatori Pascal e C furono scritti negli stessi linguaggi. Creare un compilatore autocompilante introduce un problema di bootstrapping, il primo compilatore di quel linguaggio deve essere per forza scritto in un altro linguaggio o compilato facendo girare il compilatore come un interprete (come fecero Hart e Levin con il loro compilatore Lisp).

Schema di funzionamento

Il compilatore prende in ingresso un programma, il codice sorgente, su cui esegue una serie di operazioni in modo da ottenere, in assenza di errori, il codice oggetto. In generale i compilatori sono in grado di riconoscere alcune classi di errori presenti nel programma, e in alcuni casi di suggerire in che modo correggerli.

I compilatori attuali dividono l'operazione di compilazione in due stadi principali il front end e il back end. Nello stadio di front end il compilatore traduce il sorgente in un linguaggio intermedio (di solito interno al compilatore); nello stadio di back end avviene la generazione del codice oggetto.

RITORNO

  • 61 Utenti hanno trovato utile questa risposta
Hai trovato utile questa risposta?

Articoli Correlati

Che cosa è un dominio Internet?

A domain name is an identification string that defines a realm of administrative autonomy,...

Che cosa è un social media?

Social media, in italiano media sociali , è un termine generico che indica tecnologie e...

Che cos'è il DNS?

Il sistema dei nomi di dominio (in inglese: Domain Name System, DNS), è un sistema utilizzato...

Qual è la nuvola informatica?

Con il termine inglese cloud computing (in italiano nuvola informatica) si indica un paradigma...

Qual è il protocollo Internet IPv6?

IPv6 è la versione dell'Internet Protocol designata come successore dell'IPv4. Tale protocollo...

Powered by WHMCompleteSolution