Bytecode: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Paobac (discussione | contributi)
migliorato incipit
Paobac (discussione | contributi)
m migliorata forma di una frase, aggiunto alcuni link interni.
Riga 5:
Il bytecode può anche essere usato come [[rappresentazione intermedia (informatica)|rappresentazione intermedia]] di un [[Programma (informatica)|programma]] da far compilare a un tipo speciale di compilatore, chiamato [[compilatore just-in-time]] il quale traduce il bytecode in linguaggio macchina immediatamente prima dell'esecuzione del programma stesso, per velocizzarne l'esecuzione.
 
Un programma in bytecode è eseguito mediante unaun [[macchinasecondo virtuale]]programma che ne interpreta le istruzioni, unquesto ''interprete'' diè bytecodespesso chiamatoindicato con il termine [[macchina virtuale]], cosìin perchéquanto può essere visto dal programmatore come un computer astratto che realizza al suo interno gran parte delle funzionalità di un computer reale. Questo Questa astrazione da illa vantaggiofacoltà di poter scrivere programmi ''portabili'', programmi, cioè programmi, che possono essere eseguiti su diversi tipi di [[Sistema operativo|sistemi operativi]] e di [[Architettura (hardware)|architetture hardware]]. Questo è un vantaggio che hanno anche i [[Interprete (informatica)|linguaggi interpretati]], tuttavia un interprete di bytecode risulta essere molto più veloce di un interpete di un linguaggio ad alto livello, perché è un linguaggio con poche e semplici istruzioni e più vicino al modo di funzionamento dell'hardware del computer.
 
La prima implementazione di compilatore da codice sorgente a bytecode, nonché di interprete di bytecode, è stato il sistema [[Smalltalk]], sviluppato negli [[anni 1970]] al [[Xerox Palo Alto Research Center|centro di ricerca di Palo Alto della Xerox]].
 
Il linguaggio più famoso tra quelli che fanno uso del bytecode è [[Java (linguaggio)|Java]]. Java ha sia una macchina virtuale ([[Macchina virtuale Java|Java Virtual Machine]]) che interpreta il codice bytecode, sia un compilatore just-in-time che traduce il bytecode in linguaggio macchina. La piattaforma [[.NET_framework|.NET]], e quindi anche il linguaggio [[C_sharp|C#]], ha a disposizione tecniche simili a quelle del linguaggio Java.
 
Oggi, per migliorare la velocità di esecuzione, anche molti linguaggi interpretati, come [[Perl]], [[PHP]] o [[Python]], fanno uso del bytecode. Essi traducono il programma in bytecode e poi lo interpretano tramite una macchina virtuale. Il linguaggio [[Ruby]], invece, non usa il bytecode, ma traduce il codice in una struttura sintattica ad albero che ricorda molto la rappresentazione intermedia che si usa nei compilatori, tale struttura viene poi usata dall'interprete per eseguire il programma.