Cum se explica ce bytecode stivă overflow în limba rusă

A încercat să explice inginerilor novice ce bytecode (ca parte a unei explicații a principiilor de programare Java). Deci, încerc să explic standard, ei spun că e ceva între compilare și interpretare, cum ar fi fiecare echipă cod dzhavovskogo octet, este câteva comenzi assemblerovskih, dar se uită la mine și spun - nu ponyatnoooo! Ei nu sunt programatori, nu știu ce orice compilare sau interpretare, sau de asamblare, am încercat să le explic pe degete, și se părea să-i care a venit ceva, dar după cum puteți pe degetele de la picioare, folosind exemple de viață pentru a explica principiul de lucru al bytecode?







@vanyamelikov cred că nu înțeleg este că Java bytecode :)

bytecode Java este instrucțiuni mașină pentru mașinile defuncte Java, adesea numit Java Virtual Machine.

Care este fratele forță? Și puterea fratelui pe care îl scrieți pentru o anumită mașină Java (într-o zi cineva va face aceeași mașină Java fizic). Care este portabilitatea codului Java: este doar o chestiune de punere în aplicare a mașinii Java pe orice mașină reală bine etc.

Am încercat să explice ceva de genul:

Calculatoarele „cred că“ instrucțiunile simple, și atunci când scrie un program în C, lăsați-l să fie transformat într-un set de instrucțiuni mașină primitive. Aceasta a fost expresia unui limbaj de programare

Acesta este transformat aproximativ într-o secvență de instrucțiuni







Ca calculatoare sunt diferite și instrucțiunile pe care le folosesc nu este întotdeauna aceeași.

De aceea, am venit cu un strat de aceste instrucțiuni de aceeași mașină - cod de octet. Codul dvs. scrise în limbi, cum ar fi Java și Python este convertit mai întâi în ea și apoi în instrucțiuni mașină. De ce o fac? Același cod byte va lucra la fel pe computere diferite. Aproximativ byte code este „un înveliș“ instrucțiuni mașină, care crește portabilitatea programelor.

Voi fi bucuros uslashat critica acestei explicații ^ _ ^

Bytecode este un sistem de o instrucțiune procesor. Ei știu că fiecare procesor a stabilit o instrucțiune? Programul în limbaj de asamblare pentru x86 văzut? Dacă nu, atunci spectacolul. Apoi, programul în orice comenzi de sistem pot fi executate de hardware, software, puteți (interpret), și poate fi transferat într-un alt sistem de comandă, apoi executați hardware, software-ul sau. Sa întâmplat ca java-bytecode interpreteze sau să traducă, și executa hardware-ul x86. Dar motivele sunt de ordin economic, mai degrabă decât principială. există Java-procesoare, dar nu și pe scară largă. Pe alte planete, probabil tot drumul în jurul valorii.

De ce să vină cu bytecode? La început au existat interpreți care execută doar codul din text, dar la fel de eficient într-o analiză constantă a liniilor nu este bun, a venit să lucreze cu octeți, nu ca o sursă de linii, adică, programul convertește sintaxa sursă Hn-și bytecode în cazul în care există instrucțiuni și etichete, etc. aproape ca ASM, de unde și numele mașinii virtuale, nu interpretului, de exemplu, în Java este un JVM. Deci, totul este simplu, mașina virtuală atunci când încărcarea bytecode se execută. Dar asta nu e tot, pentru o performanță mai mare a intrat în JIT, adică compilarea bytecode codului nativ pe performanta acoperi, prin urmare, nu de mult pentru a obține programe competitive compilate PL-AM.

Răspuns 29 '15 aprilie, la 12:04