Linguaggi di programmazione interpretati e compilati: qual è la differenza?

Ogni programma è un insieme di istruzioni, sia che si tratti di aggiungere due numeri o inviare una richiesta su Internet. I compilatori e gli interpreti prendono codice leggibile dall'uomo e lo convertono in codice macchina leggibile dal computer.

In un linguaggio compilato, la macchina di destinazione traduce direttamente il programma. In una lingua interpretata, il codice sorgente non viene tradotto direttamente dalla macchina di destinazione. Invece, un programma diverso , noto anche come interprete, legge ed esegue il codice.

Va bene ... ma cosa significa in realtà ?

Immagina di avere una ricetta di hummus che vuoi preparare, ma è scritta in greco antico. Ci sono due modi in cui tu, un parlante non greco antico, potresti seguire le sue indicazioni.

Il primo è se qualcuno lo avesse già tradotto in inglese per te. Tu (e chiunque altro parli inglese) potresti leggere la versione inglese della ricetta e preparare l'hummus. Pensa a questa ricetta tradotta come alla versione compilata .

Il secondo modo è se hai un amico che conosce il greco antico. Quando sei pronto per preparare l'hummus, il tuo amico si siede accanto a te e traduce la ricetta in inglese mentre procedi, riga per riga. In questo caso, il tuo amico è l'interprete per la versione interpretata della ricetta.

Lingue compilate

I linguaggi compilati vengono convertiti direttamente in codice macchina che il processore può eseguire. Di conseguenza, tendono ad essere più veloci ed efficienti da eseguire rispetto ai linguaggi interpretati. Offrono inoltre allo sviluppatore un maggiore controllo sugli aspetti hardware, come la gestione della memoria e l'utilizzo della CPU.

I linguaggi compilati richiedono una fase di "creazione": devono essere prima compilati manualmente. È necessario "ricostruire" il programma ogni volta che è necessario apportare una modifica. Nel nostro esempio hummus, l'intera traduzione viene scritta prima che arrivi a te. Se l'autore originale decide di voler utilizzare un diverso tipo di olio d'oliva, l'intera ricetta dovrebbe essere tradotta di nuovo e risentirti.

Esempi di linguaggi compilati puri sono C, C ++, Erlang, Haskell, Rust e Go.

Lingue interpretate

Gli interpreti eseguono un programma riga per riga ed eseguono ogni comando. Qui, se l'autore decide di voler utilizzare un diverso tipo di olio d'oliva, potrebbe grattare quello vecchio e aggiungere quello nuovo. Il tuo amico traduttore può quindi comunicarti quel cambiamento mentre si verifica.

Le lingue interpretate una volta erano significativamente più lente delle lingue compilate. Ma, con lo sviluppo della compilazione just-in-time, questo divario si sta riducendo.

Esempi di linguaggi interpretati comuni sono PHP, Ruby, Python e JavaScript.

Un piccolo avvertimento

La maggior parte dei linguaggi di programmazione può avere implementazioni sia compilate che interpretate: il linguaggio stesso non è necessariamente compilato o interpretato. Tuttavia, per semplicità, vengono generalmente indicati come tali.

Python, ad esempio, può essere eseguito sia come programma compilato che come linguaggio interpretato in modalità interattiva. D'altra parte, la maggior parte degli strumenti della riga di comando, delle CLI e delle shell possono teoricamente essere classificate come linguaggi interpretati.

Vantaggi e svantaggi

Vantaggi dei linguaggi compilati

I programmi compilati in codice macchina nativo tendono ad essere più veloci del codice interpretato. Questo perché il processo di traduzione del codice in fase di esecuzione aumenta il sovraccarico e può rallentare il programma nel complesso.

Svantaggi dei linguaggi compilati

Gli svantaggi più notevoli sono:

  • Tempo aggiuntivo necessario per completare l'intera fase di compilazione prima del test
  • Dipendenza dalla piattaforma del codice binario generato

Vantaggi delle lingue interpretate

Le lingue interpretate tendono ad essere più flessibili e spesso offrono funzionalità come la digitazione dinamica e le dimensioni del programma più piccole. Inoltre, poiché gli interpreti eseguono da soli il codice del programma sorgente, il codice stesso è indipendente dalla piattaforma.

Svantaggi delle lingue interpretate

Lo svantaggio più notevole è la velocità di esecuzione tipica rispetto ai linguaggi compilati.