Che cos'è un compilatore?
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 serie 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 i simboli solo nei bit , 1 e 0, compreso il computer. Anche i programmi erano molto semplici, composti da una serie di passaggi originariamente tradotti a mano in dati che il computer poteva capire. Questa è stata un'attività che ha richiesto molto tempo, quindi parti di questa attività sono state automatizzate o programmate e il primo compilatore è stato scritto. 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 di compilazione per consentire una struttura di linguaggio più naturale con cui il programmatore umano possa operare. Ciò ha facilitato la scrittura di programmi e ha permesso a più persone di iniziare a scrivere programmi. Quando sempre più persone hanno iniziato a scrivere programmi, sono state offerte e utilizzate più idee per scrivere programmi più sofisticati. In questo modo, i programmi di compilazione continuano ad evolversi, migliorare e diventare 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 sono stati sviluppati compilatori specifici per compiti o linguaggi specifici. Alcuni compilatori sono multistadio o passaggi multipli . 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 viene generalmente chiamato pseudo-codice , poiché non utilizzabile dal computer. Lo pseudo-codice è molto strutturato, come un programma per computer, non scorre libero e prolisso 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 la scrittura di compilatori più sofisticati, poiché ogni attività secondaria è diversa. Ha inoltre 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 . Errori nel modo in cui le funzioni del programma sono chiamati errori logici . Gli errori logici sono molto più difficili da individuare e correggere. Gli errori di sintassi sono come errori di ortografia, mentre gli errori di logica sono un po 'più simili agli errori grammaticali.
Sono stati inoltre sviluppati programmi di compilazione incrociata. Un compilatore incrociato consente di compilare ed eseguire un set di file di testo di istruzioni scritte per un computer progettato da un produttore specifico ed eseguite per un computer diverso da un altro produttore. Ad esempio, un programma che è stato scritto per essere eseguito su un computer Intel a volte può essere compilato in modo incrociato per eseguire un computer sviluppato da Motorola. Questo spesso non funziona molto bene. A livello di funzionamento dei programmi per computer, l'hardware del computer può apparire molto diverso, anche se può sembrare simile a te.
La compilazione incrociata è diversa dal far emulare un altro computer da un computer. Se un computer emula un computer diverso, finge di essere quell'altro computer. L'emulazione è spesso più lenta della compilazione incrociata, poiché due programmi sono in esecuzione contemporaneamente, il programma che finge di essere l'altro computer e il programma in esecuzione. Tuttavia, affinché la compilazione incrociata funzioni, sono necessari sia il testo in lingua naturale originale che descrive il programma sia un computer sufficientemente simile al computer originale su cui il programma può funzionare per funzionare su un altro computer. Questo non è sempre possibile, quindi entrambe le tecniche sono in uso.