Differenza tra Assemblatore, Compilatore e Interprete in informatica
Nei computer convenzionali, la traduzione del programma o del codice sorgente in codice oggetto/macchina viene eseguita con vari metodi che includono assemblatore, compilatore e interprete. Di seguito sono riportati i dettagli di base di come differiscono l’uno dall’altro.
Assemblatore
Un assemblatore (in inglese assembler) è un programma che prende le istruzioni o le istruzioni di base del computer e le converte in un modello di bit che il processore del computer può utilizzare per eseguire le sue operazioni di base. Di solito, il linguaggio utilizzato per programmare l’assembler è indicato come linguaggio assembly . Assembler converte prima il codice sorgente in un codice oggetto, quindi converte il codice oggetto in linguaggio macchina con l’aiuto dei programmi linker.
Compilatore
Un compilatore (in inglese compiler) è un programma per computer che trasforma il codice sorgente scritto nel linguaggio di programmazione in linguaggio macchina e quindi lo esegue. Normalmente, i compilatori possono richiedere tempo perché devono tradurre immediatamente il codice di alto livello in un linguaggio macchina di livello inferiore e quindi salvare il codice dell’oggetto eseguibile nella memoria. Anche in un compilatore, dopo la conversione di tutto il codice in una volta, viene generato un rapporto di errore per l’intero programma.
I compilatori possono essere classificati in base alla funzione che svolge o al modo in cui è stato costruito. I compilatori possono essere classificati come single-pass, load-and-go, debugging, multi-pass e ottimizzazione.
La compilazione viene eseguita nelle seguenti fasi : analizzatore lessicale, analizzatore di sintassi, analizzatore semantico, generatore di codice intermedio, ottimizzatore di codice, tabella dei simboli e handle di errore .
Interprete
Un interprete (in inglese Interpreter) è un programma per computer che traduce istruzioni di alto livello in una forma intermedia e poi converte quel codice intermedio in linguaggio macchina e; svolge azioni specifiche. Gli interpreti vengono spesso utilizzati negli strumenti di sviluppo software come strumenti di debug perché possono eseguire un singolo codice alla volta. Nel linguaggio Java, il compilatore e l’interprete lavorano insieme per generare il codice macchina.
Differenza tra assemblatore, compilatore e interprete
Assembler e Compilatore
BASE DI CONFRONTO | ASSEMBLATORE | COMPILATORE |
Conversione | Assembler converte il codice assembly nel codice macchina. | Il compilatore converte il codice sorgente scritto dal programmatore in un linguaggio a livello di macchina. |
Ingresso | L’assemblatore inserisce il codice sorgente. | Gli input del compilatore sono codice sorgente preelaborato. |
Il risultato | L’output dell’assembler è un codice binario. | L’output del compilatore è una versione mnemonica del codice macchina. |
Esempi | GAS GNU |
C C # Java C ++ |
Debug | Il debug è difficile. | Il debug è semplice. |
Lavorando | Assembler converte prima il codice sorgente in un codice oggetto, quindi converte il codice oggetto nel linguaggio macchina con l’aiuto di programmi linker. | Complier esegue la scansione dell’intero programma prima di tradurlo in codice macchina. |
Intelligenza | L’Assembler è meno intelligente di un compilatore. | Il compilatore è più intelligente dell’assemblatore. |
Fasi di lavoro | L’Assembler esegue i lavori in due fasi sull’input fornito. Le fasi sono: Prima Fase Seconda Fase |
Le fasi di compilazione sono: Analizzatore lessicale Analizzatore di sintassi Analizzatore semantico Ottimizzatore di codice Generatore di codice Gestore di errori |
Compilatore e Interprete
BASE DI CONFRONTO | COMPILATORE | INTERPRETE |
Funzione | Un compilatore converte il codice del programma di linguaggio di alto livello in linguaggio macchina e quindi lo esegue. | L’interprete converte il codice sorgente nella forma intermedia e poi converte quel codice intermedio in linguaggio macchina |
Scansione | Complier esegue la scansione dell’intero programma prima di tradurlo in codice macchina. | L’interprete esegue la scansione e traduce il programma riga per riga in un codice macchina equivalente. |
Lavorando | Il compilatore accetta l’intero programma come input. | L’interprete accetta una singola istruzione come input. |
Generazione di codice | Il codice oggetto intermedio viene generato in caso di compilatore. | In caso di interprete, non viene generato alcun codice oggetto intermedio. |
Tempo di esecuzione | Il compilatore richiede meno tempo di esecuzione rispetto all’interprete. | L’interprete richiede più tempo di esecuzione rispetto al compilatore. |
Esempi | C COBOL C # C ++, ecc |
Python Perl VB PostScript LISP ecc. |
Requisiti di memoria | Il compilatore richiede più memoria dell’interprete. | L’interprete ha bisogno di meno memoria rispetto al compilatore. |
Modifica | Se ti capita di apportare modifiche al programma, devi ricompilare l’intero programma, cioè scansionare l’intero programma ogni volta dopo la modifica. | Se si apportano modifiche e se quella riga non è stata scansionata, non è necessario ricompilare l’intero programma. |
Velocità | Il compilatore è più veloce rispetto all’interprete. | L’interprete è più lento rispetto al compilatore. |
All’esecuzione | Di solito non è necessario compilare il programma ogni volta (se non modificato) al momento dell’esecuzione. | Ogni volta che il programma viene scansionato e tradotto al momento dell’esecuzione. |
Rilevamento degli errori | Il compilatore fornisce l’elenco di tutti gli errori dopo la compilazione dell’intero programma. | L’interprete interrompe la traduzione alla generazione dell’errore e continuerà quando l’errore viene risolto. |
Codice macchina | Il compilatore converte l’intero programma in codice macchina quando tutti gli errori vengono rimossi l’esecuzione ha luogo. | Ogni volta che il programma viene eseguito; ogni riga viene controllata per errore e quindi convertita in codice macchina equivalente. |
Debug | Il compilatore è lento per il debug perché gli errori vengono visualizzati dopo che l’intero programma è stato controllato. | Interpreter è utile per il debug veloce. |
Versione codice | Il codice assembly generato dal compilatore è una versione mnemonica del codice macchina. | All’output dell’assembler è il codice macchina ricollocabile generato da un assembler rappresentato da codice binario. |