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 può comprendere un programma senza che il codice sia prima tradotto in linguaggio macchina; nel caso dei compilatori, o interpretato.

Introduzione

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; si notano solo con le applicazioni per il WEB che fanno uso del Browser. Per capire bisogna andare indietro nel tempo alla nascita del Web; solo così si comprende 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 è tradotto in codice macchina e dato in pasto al processore; questo processo avviene una sola volta e crea l’ eseguibile. Viceversa il codice di un programma interpretato è eseguito 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 un approccio ibrido utilizzato anche dai linguaggi .NET di Microsoft ; il JIT (Just in Time), 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 hanno con programmi compilati come il C++; i quali sono costretti all’inclusione di librerie esterne di terzi parti per aumentare la portabilità, non senza poche problematiche di compatibilità.