Pagina iniziale | Navigazione |
Google

Compilatore

Questo articolo è uno stub, il che vuol dire che necessita di essere ampliato e corretto, secondo i canoni di Wikipedia. Se puoi, rendi anche questo articolo serio e dettagliato come dev'essere un articolo di enciclopedia, grazie.

In informatica, un compilatore è un programma traduttore impiegato per produrre codice oggetto (in linguaggio macchina) a partire da codice in un linguaggio a livello più alto (un programma sorgente) scritto in un dato linguaggio di programmazione. Una volta prodotto il codice oggetto (ovvero un file eseguibile) risulta estremamente difficoltoso risalire al sorgente; questa procedura viene chiamata reversing

Il compilatore è una parte fondamentale di tutti i linguaggi compilati. Per un dato linguaggio possono esistere più compilatori, sviluppati da persone o ditte diverse, gratuiti o a pagamento, open source oppure no. Per i linguaggi che adottano uno standard nella decorazione dei simboli, il codice oggetto generato da compilatori differenti può essere linkato assieme in un unico eseguibile. Un compilatore, in genere, è in grado di tradurre un solo linguaggio di alto livello in codice oggetto.

In teoria, un compilatore dovrebbe essere in grado di poter tradurre in codice oggetto tutti i costrutti possibili del linguaggio ad alto livello che sta compilando. Alcuni linguaggi sono tuttavia così complessi (come il C++) che anche i compilatori migliori tralasciano alcune delle parti più oscure e meno usate. Ovviamente, compilatori diversi tralasciano parti diverse del linguaggio, ed occorre fare attenzione nello scrivere il codice se si vuole che il proprio programma possa essere compilato da chiunque.

Dato che un certo programma sorgente può essere convertito in una gamma quasi infinita di codici oggetto equivalenti tra loro dal punto di vista funzionale, il compito del compilatore non è solo quello di generare un codice oggetto funzionante: ormai tutti i compilatori moderni sono compilatori ottimizzanti, che cercano il miglior codice oggetto possibile, in relazione a parametri come lo spazio di memoria occupato o la velocità di esecuzione. In genere tali compilatori permettono un certo grado di controllo da parte dell'utente, perlomeno secondo quale direzione ottimizzare maggiormente.

Data la grande complessità del problema dell'ottimizzazione, il codice oggetto scritto a mano da un programmatore (in linguaggio assembly) è migliore di quello generato da un compilatore ottimizzante. Ma un programmatore può realisticamente scrivere in assembly solo programmi piccoli, o piccole porzioni di un programma più grande. La differenza inoltre è abbastanza piccola per cui, nel 99% dei casi, il codice generato dal compilatore è sufficiente.


GNU Fdl - it.Wikipedia.org




Google | 

Enciclopedia |  La Divina Commedia di Dante |  Mappa | : A |  B |  C |  D |  E |  F |  G |  H |  I |  J |  K |  L |  M |  N |  O |  P |  Q |  R |  S |  T |  U |  V |  W |  X |  Y |  Z |