b'\n_START_ARTICLE_\nInterprete (informatica)\n_START_SECTION_\nCaratteristiche\n_START_PARAGRAPH_\nA differenza di un interprete, un compilatore non esegue il programma che riceve in ingresso, ma lo traduce in linguaggio macchina (memorizzando su file il codice oggetto pronto per l\'esecuzione diretta da parte del processore)._NEWLINE_Per qualunque linguaggio di programmazione si pu\xc3\xb2 scrivere sia un interprete che un compilatore, pertanto le espressioni linguaggio interpretato e linguaggio compilato, per quanto comuni, sono improprie, essendo interpretazione e compilazione concetti afferenti alla implementazione di un linguaggio e non al linguaggio in s\xc3\xa9.\n_START_SECTION_\nScript engine\n_START_PARAGRAPH_\nLo "scripting engine" \xc3\xa8 un motore che interpreta liste di comandi, dette script, formulati con una sintassi determinata, detta linguaggio di scripting._NEWLINE_Solitamente troviamo uno scripting engine dove si ha la necessit\xc3\xa0 di fornire una grande flessibilit\xc3\xa0 per aspetti specifici, senza eccessive esigenze di velocit\xc3\xa0. La semplicit\xc3\xa0 e l\'immediatezza sono quindi requisiti fondamentali. Ci\xc3\xb2 colloca gli scripting engine ad un alto livello di astrazione.\n_START_SECTION_\nPro e contro\n_START_PARAGRAPH_\nL\'approccio interpretato comporta una minore efficienza a run-time; un programma interpretato, in esecuzione, richiede pi\xc3\xb9 memoria ed \xc3\xa8 meno veloce, a causa dell\'overhead introdotto dall\'interprete stesso. Durante l\'esecuzione, l\'interprete deve infatti analizzare le istruzioni a partire dal livello sintattico, identificare le azioni da eseguire (eventualmente trasformando i nomi simbolici delle variabili coinvolte nei corrispondenti indirizzi di memoria), ed eseguirle; mentre le istruzioni del codice compilato, gi\xc3\xa0 in linguaggio macchina, vengono caricate e istantaneamente eseguite dal processore._NEWLINE_In compenso, l\'interpretazione di un programma pu\xc3\xb2 essere pi\xc3\xb9 rapida del ciclo compilazione/esecuzione. Questa differenza pu\xc3\xb2 costituire un vantaggio durante lo sviluppo, specialmente se questo viene condotto con tecniche di fast prototyping, o durante il debugging. Inoltre, la maggior parte degli interpreti consentono all\'utente di agire sul programma in esecuzione sospendendolo, ispezionando o modificando i contenuti delle sue variabili, e cos\xc3\xac via, in modo spesso pi\xc3\xb9 flessibile e potente di quanto si possa ottenere, per il codice compilato, da un debugger.\n_START_SECTION_\nApprocci ibridi\n_START_PARAGRAPH_\nEsistono invece numerosi approcci ibridi fra linguaggi completamente interpretati e completamente compilati. Alcune versioni di Lisp consentono entrambi gli approcci, e consentono addirittura l\'esecuzione di programmi parzialmente interpretati e parzialmente compilati, cosicch\xc3\xa9, per esempio, un nuovo sottoprogramma possa essere provato in forma interpretata e, una volta terminato il debugging, essere compilato per migliorarne le prestazioni._NEWLINE_Molti interpreti non eseguono direttamente il codice sorgente, ma lo convertono preventivamente in una forma interna pi\xc3\xb9 compatta, per esempio in un albero sintattico astratto. Ancora diverso \xc3\xa8 l\'approccio di Emacs Lisp e Java, in cui viene impiegato un compilatore che trasforma il codice sorgente in un formato intermedio detto (per entrambi i linguaggi) bytecode, abbastanza vicino al linguaggio macchina (e quindi con un costo di interpretazione moderato), ma eseguito da un interprete e non direttamente dal processore (e quindi portabile)._NEWLINE_Una tecnica che ha destato notevole interesse negli ultimi anni (ed \xc3\xa8 applicata dalla maggior parte delle attuali implementazioni di Java e dai linguaggi della famiglia .NET di Microsoft) prende il nome di compilazione "just in time" o JIT. Questa tecnica pu\xc3\xb2 essere considerata come una ottimizzazione dell\'interpretazione, in cui l\'interprete compila durante l\'esecuzione i frammenti di codice che vengono eseguiti con maggiore frequenza, per ridurre il costo delle loro successive esecuzioni.'