Un compilatore è un tipo speciale di programma per computer che traduce un file di testo leggibile dall’uomo in una forma che il computer può comprendere più facilmente. Al suo livello più elementare, un computer può capire solo due cose, un 1 e uno 0. A questo livello, un essere umano opererà molto lentamente e troverà incomprensibili le informazioni contenute nella lunga stringa di 1 e 0. Un compilatore è un programma per computer che colma questa lacuna.
All’inizio, i compilatori erano programmi molto semplici che potevano tradurre simboli solo nei bit, gli 1 e gli 0, il computer capiva. Anche i programmi erano molto semplici, composti da una serie di passaggi che originariamente venivano tradotti a mano in dati che il computer poteva comprendere. Si trattava di un’attività che richiedeva molto tempo, quindi parti di questa attività erano automatizzate o programmate e fu scritto il primo compilatore. Questo programma ha assemblato o compilato i passaggi necessari per eseguire il programma passo passo.
Questi semplici compilatori sono stati usati per scrivere un compilatore più sofisticato. Con la versione più recente, è possibile aggiungere più regole al programma del compilatore per consentire al programmatore umano di operare con una struttura del linguaggio più naturale. Ciò ha reso più facile scrivere programmi e ha permesso a più persone di iniziare a scrivere programmi. Man mano che sempre più persone iniziavano a scrivere programmi, venivano offerte più idee sulla scrittura di programmi e utilizzate per creare compilatori più sofisticati. In questo modo, i programmi compilatori continuano ad evolversi, migliorarsi e diventano più facili da usare.
I programmi del compilatore possono anche essere specializzati. Alcune strutture linguistiche sono più adatte per un compito particolare rispetto ad altre, quindi compilatori specifici sono stati sviluppati per compiti o linguaggi specifici. Alcuni compilatori sono multistadio o multiplo. Un primo passaggio potrebbe prendere un linguaggio molto naturale e avvicinarlo a un linguaggio comprensibile al computer. Un secondo o anche un terzo passaggio potrebbe portarlo alla fase finale, il file eseguibile.
L’output intermedio in un compilatore multistadio è solitamente chiamato pseudo-codice, poiché non è utilizzabile dal computer. Lo pseudocodice è molto strutturato, come un programma per computer, non scorrevole e verboso come un linguaggio più naturale. L’output finale è chiamato file eseguibile, poiché è ciò che viene effettivamente eseguito o eseguito dal computer. Suddividere l’attività in questo modo ha reso più semplice scrivere compilatori più sofisticati, poiché ogni sottoattività è diversa. Ha anche reso più facile per il computer indicare dove aveva difficoltà a capire cosa gli veniva chiesto di fare.
Gli errori che limitano il compilatore nella comprensione di un programma sono chiamati errori di sintassi. Gli errori nel modo in cui funziona il programma sono chiamati errori logici. Gli errori logici sono molto più difficili da individuare e correggere. Gli errori di sintassi sono come gli errori di ortografia, mentre gli errori di logica sono un po’ più simili agli errori grammaticali.
Sono stati sviluppati anche programmi di compilazione incrociata. Un compilatore incrociato consente di compilare ed eseguire un insieme di istruzioni di file di testo scritto per un computer progettato da un produttore specifico per un computer diverso da un produttore diverso. Ad esempio, un programma che è stato scritto per essere eseguito su un computer Intel può talvolta essere compilato in modo incrociato per eseguire un computer sviluppato da Motorola. Questo spesso non funziona molto bene. Al livello in cui operano i programmi per computer, l’hardware del computer può sembrare molto diverso, anche se può sembrare simile a te.
La compilazione incrociata è diversa dall’avere un computer che emula un altro computer. Se un computer emula un altro computer, finge di essere quell’altro computer. L’emulazione è spesso più lenta della compilazione incrociata, poiché due programmi vengono eseguiti contemporaneamente, il programma che finge di essere l’altro computer e il programma in esecuzione. Tuttavia, affinché la compilazione incrociata funzioni, è necessario sia il testo in linguaggio naturale originale che descriva il programma sia un computer sufficientemente simile al computer originale su cui il programma può funzionare per essere eseguito su un computer diverso. Questo non è sempre possibile, quindi entrambe le tecniche sono in uso.