Compilatori e interpreti: differenze

I linguaggi di programmazione consentono d’ interagire con i computer ma la scrittura di un programma sarebbe fine a se stessa senza compilatori ed interpreti. Un PC non riuscirebbe mai a comprendere un programma scritto con i linguaggi di programmazione senza che il codice fosse prima tradotto in linguaggio macchina; nel caso dei compilatori, o interpretato nel caso degli interpreti.

Linguaggi compilati e interpretati

Fatta eccezione per Java dove ci troviamo di fronte a una via di mezzo tra linguaggio interpretato e compilato i limiti di un programma compilato come in C, C++ rispetto ad uno interpretato; si notano solo con le applicazioni Enterprise che fanno uso del Browser. Per capire bisogna andare indietro nel tempo alla nascita del Web; solo così diventa semplice capire cosa ha spinto l’ esigenza di trovare soluzioni alternative a quelle dei linguaggi compilati. Anche se le cose oggi sono cambiate con linguaggi che hanno migliorato l’ esperienza di internet come:

  • JavaScript,
  • PHP,
  • ASP,
  • JSP.

A suo tempo le Applet “piccole applicazioni scritte in Java” furono le prime ad aprire la strada al nuovo modo di intendere il Web. Il Browser della Netscape integrò per primo una Java Virtual Machine al suo interno; dimostrando e consentendo l’ interazione tramite Browser lato client, in Run time.

Compilatori e interpreti

La differenza tra un programma compilato e uno interpretato è che quello compilato è assemblato in codice binario una sola volta e crea l’ eseguibile; viceversa il codice interpretato è ricompilato ogni volta che lo avviamo in run time.

compilatori ed interpreti
Schema di compilazione.

Il successo di Java

La JVM ha determinato il successo di Java permettendo al Byte code di un applicazione scritta in codice Java di essere interpretato, in Run Time; indipendente dalla piattaforma! La Java Virtual Machine può essere integrata su qualsiasi sistema operativo sia esso:

  • Linux,
  • Mac Os,
  • Windows,
  • Solaris e altri

permettendo di aggirare tutti quei vincoli che si avevano invece con programmi compilati come il C++; i quali erano costretti all’inclusione di librerie esterne di terzi parti per aumentare la portabilità, non senza poche problematiche di compatibilità.