Compilatori ed interpreti

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 computer non riuscirebbe 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 ed interpretati

Fatta eccezione per Java dove possiamo riassumere con un termine tipico di (via di mezzo) i vincoli di un programma compilato come in C, C++ rispetto ad uno interpretato, per capirli 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:

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 ed interpreti

La differenza tra un programma interpretato è che quello compilato è assemblato in codice binario una sola volta creando l’ eseguibile; viceversa il codice interpretato è eseguito ogni volta in run time. Un esempio concreto di codice interpretato è quello utilizzato per il Web.

compilatori ed interpreti
Schema di compilazione.

Il successo di Java

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

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à.