Bytecode
În informatică , bytecode este un limbaj intermediar mai abstract între limbajul mașinii și limbajul de programare , folosit pentru a descrie operațiile care alcătuiesc un program . Se numește așa deoarece operațiunile au adesea cod care ocupă doar un octet , deși lungimea întregii instrucțiuni poate varia deoarece fiecare operație are un număr specific de parametri pe care să opereze. Parametrii acestor operații pot consta din registre sau adrese de memorie , un pic ca limbajul mașinii.
Descriere
Un limbaj intermediar, cum ar fi bytecode, este foarte util celor care realizează limbaje de programare, deoarece reduce dependența de hardware și facilitează crearea de interpreți de limbaj.
Bytecode poate fi, de asemenea, utilizat ca reprezentare intermediară a unui program care urmează să fie compilat de un tip special de compilator , numit compilator just-in-time, care traduce bytecode-ul în limbajul mașinii imediat înainte de executarea programului în sine, pentru a accelera executarea acestuia .execuție.
Un program bytecode este executat de un al doilea program care interpretează instrucțiunile sale. Acest interpret este adesea menționat cu termenul de mașină virtuală , deoarece programatorul poate fi văzut ca un computer abstract care îndeplinește cea mai mare parte a funcționalității unui computer real din cadrul acestuia. Această abstractizare vă permite să scrieți programe portabile , adică arhitecturate în așa fel încât să poată fi rulate pe diferite tipuri de sisteme de operare și arhitecturi hardware . Acesta este un avantaj pe care îl au și limbajele interpretate , totuși un interpret de bytecode se dovedește a fi mult mai rapid decât un interpret al unui limbaj de programare la nivel înalt , deoarece este un limbaj cu instrucțiuni puține și simple și mai aproape de modul de funcționare a hardware-ul computerului ( procesor și memorie ).
Prima implementare a codului sursă către compilatorul bytecode, precum și interpretorul bytecode, a fost sistemul Smalltalk , dezvoltat în anii 1970 la centrul de cercetare Palo Alto al Xerox .
Cel mai faimos limbaj dintre cele care folosesc codul de byt este Java . Java are atât o mașină virtuală ( Java Virtual Machine ) care interpretează codul bytecode, cât și un compilator just-in-time care traduce bytecode-ul în limbajul mașinii. Platforma .NET și, prin urmare, și limbajul C # , are tehnici similare cu cele ale limbajului Java. Limba Gambas folosește Bytecode.
Astăzi, pentru a îmbunătăți viteza de execuție, multe limbaje dinamice, cum ar fi PHP , Python , Ruby> 1.8 sau Tcl folosesc codul de octet mai mult sau mai puțin explicit în funcție de implementări. Ei traduc programul în bytecode și apoi îl interpretează printr-o mașină virtuală. Limbile Ruby 1.8 sau Perl [1] , pe de altă parte, nu folosesc bytecode, ci traduc codul într-o structură de arbore sintactică care amintește foarte mult de reprezentarea intermediară utilizată în compilatoare; această structură este apoi utilizată de interpret pentru a executa programul.
Un anumit tip de bytecode este constituit de coduri p , care pot ocupa mai mult de un singur octet și au instrucțiuni de diferite dimensiuni, un pic ca opcodurile multor procesoare . Codurile P funcționează la un nivel de abstractizare mult mai ridicat decât codurile byt, acestea, de exemplu, pot avea operații precum „tipăriți acest șir” sau „ștergeți ecranul”. Atât limbajul BASIC , cât și unele versiuni ale lui Pascal folosesc coduri p.
Exemple
- Cod byt Java , care este executat de mașina virtuală Java
- Limbajul intermediar comun al platformei .NET, rulat de rularea de limbă comună (CLR) , mașina virtuală .NET
- CLISP , o implementare Common Lisp al cărei compilator produce numai bytecode
- CMUCL , o implementare Common Lisp care poate produce atât cod de bytec cât și cod de mașină
- Codul secundar al multor implementări ale limbajului de programare Smalltalk
- Limbaj Ocaml , opțional compilatorul poate produce o formă foarte compactă de bytecode
- Aparatul de cod O al limbajului de programare BCPL
- Mașina UCSD Pascal p-Code , o implementare specială a limbajului Pascal
- Limbajul de programare Icon
Notă
- ^ Perl are doar suport experimental pre-compilare. Beattie, Malcolm și Enache Adrian, B :: Backt bytecode al compilerului Bytecode Perl , su search.cpan.org , CPAN , 2003.
Elemente conexe
linkuri externe
- ( EN ) descriere cod byt Java , la javaworld.com . Adus la 20 august 2005 (arhivat din original la 6 august 2005) .
- ( EN ) Specificația mașinii virtuale Java , la java.sun.com .