Valid HTML 4.01 Transitional
logocentrale


   Catania, 22-11-2009 19:10


Compilato o interpretato?

"Write Once, Run Everywhere" è lo slogan con cui SUN ha lanciato Java. Come se fosse una novità, ma non era affatto tale. Tutti i linguaggi di programmazione interpretati hanno come caratteristica quella di poter essere eseguiti su qualunque piattaforma. E la portabilità di Java è sicuramente inferiore a quella di molti altri linguaggi, tanto che alcuni sviluppatori hanno modificato scherzosamente lo slogan di SUN in "Write Once, Debug Everywhere". Questo a causa delle differenze esistenti tra le varie versioni di Java e tra le diverse "macchine virtuali" o JRE (Java Runtime Environment) per le diverse piattaforme. E inoltre, la "macchina virtuale" di Java non è altro che un interprete di linguaggio, proprio come quelli di perl, php, python, tcl, ruby, rexx ecc. Il passaggio attraverso la pseudocompilazione del bytecode sa tanto di stratagemma per dare l'illusione che si tratti di un linguaggio compilato a tutti coloro che considerano inefficiente o poco professionale l'uso di linguaggi interpretati: ma di fatto, benché sia "trasparente" il passaggio attraverso il bytecode semicompilato è presente anche in perl, e presumibilmente in tutti i moderni linguaggi interpretati.

Vediamo dunque pro e contro dei linguaggi interpretati rispetto ai compilati.
Tra i punti a favore dei linguaggi interpretati vanno considerati: l'assoluta portabilità tra una piattaforma e l'altra, la facilità di debugging, di manutenzione, di correzioni "al volo" e i tempi di sviluppo ridotti.
Tra i "contro" vengono di solito annoverati: una minore velocità ed efficienza (ma con i computer attuali si tratta di differenze spesso trascurabili), e il fatto che il codice viene distribuito in chiaro, dato che il sorgente è il codice stesso; quindi non viene garantito il copyright dell'autore. Questo però a seconda dei punti di vista, può anche essere considerato un vantaggio da parte dei molti sviluppatori che credono nel modello collaborativo (Free Software e Open Source).