Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> Programmazione >> Computer Programming Languages >> .

Differenza tra linguaggi per computer tradotti e interpretati?

La differenza tra linguaggi di computer tradotti e interpretati risiede in * Come * il codice sorgente (il programma scritto da un essere umano) viene eseguito dal computer. Entrambi convertono il codice leggibile dall'uomo in istruzioni leggibili a macchina, ma lo fanno in momenti diversi e in modi diversi:

Lingue tradotte (lingue compilate):

* Processo di traduzione: A * compilatore * prende l'intero programma di codice sorgente come input e lo traduce in un programma completo di codice macchina (o in una rappresentazione intermedia che viene quindi tradotta in codice macchina) * prima che venga eseguito il programma. Questo processo è spesso chiamato *compilation *. Il codice macchina risultante è un file separato (come un `.exe` su Windows o un file eseguibile su altri sistemi).

* Esecuzione: Il codice macchina compilato viene quindi eseguito direttamente dal processore del computer.

* Velocità: Generalmente un'esecuzione più veloce perché la traduzione viene eseguita in anticipo e il processore esegue direttamente il codice macchina ottimizzato.

* Rilevamento degli errori: Gli errori del compilatore vengono rilevati * prima di * RUNTE. Il compilatore identificherà gli errori di sintassi e alcuni errori semantici durante il processo di compilazione.

* Portabilità: In genere meno portatile. Un programma compilato per un sistema operativo o l'architettura di solito non funzionerà su un altro senza ricompilazione.

* Esempi: C, C ++, Go, Rust, Fortran

Lingue interpretate:

* Processo di traduzione: Un *Interpreter *prende il codice sorgente riga per riga (o talvolta in blocchi più grandi) e traduce ed esegue ogni pezzo *immediatamente *. Non esiste una fase di compilazione separata che produce un eseguibile autonomo.

* Esecuzione: L'interprete legge, traduce ed esegue contemporaneamente il codice. Non produce un file di codice macchina separato.

* Velocità: Esecuzione generalmente più lenta a causa della traduzione sul volo. Ogni riga (o blocco) deve essere interpretata ogni volta che viene eseguita.

* Rilevamento degli errori: Gli errori vengono spesso rilevati solo durante il runtime. L'interprete potrebbe non catturare tutti gli errori fino a quando non viene eseguito il codice problematico.

* Portabilità: Spesso più portatile. Finché l'interprete è disponibile per una particolare piattaforma, il codice sorgente può di solito eseguire.

* Esempi: Python, Javascript, Ruby, Perl, PHP

Approcci ibridi:

È importante notare che la distinzione non è sempre chiara. Alcune lingue impiegano un approccio ibrido:

* Compilation just-in-time (JIT): Lingue come Java e C# compilano inizialmente il codice sorgente in una rappresentazione intermedia (codice byte). Un compilatore JIT quindi traduce questa rappresentazione intermedia in codice macchina *durante il runtime *. Ciò combina i vantaggi sia dei linguaggi interpretati che compilati:portabilità iniziale (come interpretata) e un'esecuzione più rapida delle sezioni di codice usate di frequente (come compilate).

In sintesi:la compilazione traduce subito l'intero programma * prima dell'esecuzione, portando a un'esecuzione più rapida ma meno portabilità e rilevamento di errori iniziali. L'interpretazione traduce ed esegue la riga di codice per riga, fornendo una migliore portabilità ma un rilevamento di errori di esecuzione e di runtime più lento. Molte lingue moderne utilizzano approcci ibridi per ottenere il meglio da entrambi i mondi.

 

Programmazione © www.354353.com