Bytecode: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
Amirobot (discussione | contributi)
m r2.7.1) (Bot: Aggiungo: cs:Byte code
mNessun oggetto della modifica
Riga 1: Riga 1:
In [[informatica]], il '''bytecode''' è un linguaggio intermedio più astratto del [[linguaggio macchina]], usato per descrivere le operazioni che costituiscono un [[Programma (informatica)|programma]]. È chiamato così perché spesso le operazioni hanno un codice che occupa un solo [[byte]], anche se la lunghezza dell'intera 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 indirizzi di memoria, un po' come accade per il linguaggio macchina.
In [[informatica]], il '''bytecode''' è un linguaggio intermedio più astratto del [[linguaggio macchina]], usato per descrivere le operazioni che costituiscono un [[Programma (informatica)|programma]]. È chiamato così perché spesso le operazioni hanno un codice che occupa un solo [[byte]], anche se la lunghezza dell'intera 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 indirizzi di memoria, un po' come accade per il linguaggio macchina.


Un linguaggio intermedio come il bytecode è molto utile a coloro che realizzano [[linguaggi di programmazione]] perché riduce la dipendenza dall'hardware e facilita la creazione degli interpreti del linguaggio stesso.
Un linguaggio intermedio come il bytecode è molto utile a coloro che realizzano [[linguaggi di programmazione]] perché riduce la dipendenza dall'hardware e facilita la creazione degli interpreti del linguaggio stesso.
Riga 5: 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.
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 dà la facoltà di scrivere programmi ''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 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.
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 ''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 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]].
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]].

Versione delle 08:28, 24 nov 2011

In informatica, il bytecode è un linguaggio intermedio più astratto del linguaggio macchina, usato per descrivere le operazioni che costituiscono un programma. È chiamato così perché spesso le operazioni hanno un codice che occupa un solo byte, anche se la lunghezza dell'intera 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 indirizzi di memoria, un po' come accade per il linguaggio macchina.

Un linguaggio intermedio come il bytecode è molto utile a coloro che realizzano linguaggi di programmazione perché riduce la dipendenza dall'hardware e facilita la creazione degli interpreti del linguaggio stesso.

Il bytecode può anche essere usato come rappresentazione intermedia di un 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 è 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 portabili e cioè architettati in modo tale da poter essere eseguiti su diversi tipi di sistemi operativi e di architetture hardware. Questo è un vantaggio che hanno anche i 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 centro di ricerca di Palo Alto della Xerox.

Il linguaggio più famoso tra quelli che fanno uso del bytecode è Java. Java ha sia una macchina virtuale (Java Virtual Machine) che interpreta il codice bytecode, sia un compilatore just-in-time che traduce il bytecode in linguaggio macchina. La piattaforma .NET, e quindi anche il linguaggio 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.

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 usano i p-Code.

Esempi di bytecode

Voci correlate

Collegamenti esterni (in inglese)