Differenze tra le versioni di "Bytecode"

m
Bot: accenti e modifiche minori
m (Bot: accenti e modifiche minori)
In [[informatica]], il '''bytecode''' è un linguaggio intermedio più astratto del [[linguaggio macchina]], usato per descrivere le operazioni che costituiscono un [[Programma (informatica)|programma]]. È così chiamato perché spesso le operazioni hanno un codice che occupa un solo [[byte]], anche se la lunghezza dell'intera [[istruzione (informatica)|istruzione]] può variare perché ogni operazione ha un numero specifico di parametri su cui operare. I parametri di queste operazioni possono consistere di registri o [[indirizzo di memoria|indirizzi di memoria]], un po' come accade per il linguaggio macchina.
 
==Descrizione==
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 un secondo programma che ne interpreta le istruzioni. Questo [[Interprete (informatica)|interprete]] è spesso indicato con il termine [[macchina virtuale]], in quanto può essere visto dal [[programmatore]] come un [[computer]] astratto che realizza al suo interno gran parte delle funzionalità di un computer reale. Questa astrazione consente di scrivere programmi ''[[portabilità|portabili]]'' e cioè architettati in modo tale da poter essere eseguiti su diversi tipi di [[Sistema operativo|sistemi operativi]] e di [[Architettura (computer)|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 interprete di un [[linguaggio di programmazione 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]].
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.
 
Un tipo particolare di bytecode è costituito dai [[p-Code]], che possono occupare più di un singolo byte e avere istruzioni di varie dimensioni, un po' come le [[opcode]] di molte [[CPU]]. I p-Code funzionano a un livello di astrazione molto più alto rispetto ai bytecode, essi, ad esempio, possono avere operazioni tipo "stampa questa stringa" o "pulisci lo schermo". Sia il linguaggio [[BASIC]] che alcune versioni del [[Pascal (linguaggio)|Pascal]] usano i p-Code.
 
==Esempi di bytecode==
2 953 159

contributi