Differenze tra le versioni di "Bytecode"

24 byte aggiunti ,  6 anni fa
m
Bot: Aggiungo il tag <references /> mancante; modifiche estetiche
m (Bot: Aggiungo il tag <references /> mancante; modifiche estetiche)
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 [[Framework .NET|.NET]], e quindi anche il linguaggio [[C sharp|C#]], ha a disposizione tecniche simili a quelle del linguaggio Java. Il linguaggio [[Gambas]] fa uso di Bytecode.
 
Oggi, per migliorare la velocità di esecuzione, anche molti linguaggi dinamici, come [[PHP]], [[Python]], [[Ruby|Ruby > 1.8]] o [[Tcl]] fanno uso del bytecode in maniera più o meno esplicita a seconda delle implementazioni. Essi traducono il programma in bytecode e poi lo interpretano tramite una macchina virtuale. I linguaggi [[Ruby|Ruby 1.8]] o [[Perl]]<ref>Perl ha solo un supporto sperimentale per la pre-compilazione. {{Cita web | url=http://search.cpan.org/~nwclark/perl-5.8.8/ext/B/B/Bytecode.pm#KNOWN_BUGS | titolo=B::Bytecode Perl compiler's bytecode backend | autore=Beattie, Malcolm and Enache Adrian | anno=2003 | editore=[[CPAN]] }}</ref>, invece, non usano il bytecode, ma traducono 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.
 
== Esempi ==
* Bytecode di [[Java (linguaggio)|Java]], che viene eseguito dalla [[Macchina virtuale Java|Java Virtual Machine]]
* Il [[Common Intermediate Language]] della piattaforma .NET, eseguito dal [[Common Language Runtime|Common Language Runtime (CLR)]], la macchina virtuale .NET
* [[CLISP]], una implementazione del [[Common Lisp]] il cui compilatore produce solo bytecode
* [[CMUCL]], una implementazione del [[Common Lisp]] che può produrre sia bytecode che codice macchina
* Il bytecode di molte implementazioni del linguaggio di programmazione [[Smalltalk]]
* Il linguaggio [[Ocaml]], opzionalmente il compilatore può produrre una forma di bytecode molto compatta
* [[O-code|La macchina O-code]] del linguaggio di programmazione [[BCPL]]
* [[p-Code|La macchina p-Code]] dell'[[UCSD Pascal]], una implementazione particolare del linguaggio [[Pascal (linguaggio)|Pascal]]
* Il linguaggio di programmazione [[Icon (linguaggio)|Icon]]
 
== Note ==
 
<references />
{{reflist|1}}
 
494 564

contributi