Бајт-код — разлика између измена

Садржај обрисан Садржај додат
мНема описа измене
Autobot (разговор | доприноси)
м Уклањање сувишних унутрашњих веза
Ред 11:
Бајткод програм може да се изврши рашчлањивањем записа и ''директним'' извршење инструкција, једну по једну. Оваква врста ''бајткод интерпретатора'' је веома преносива. Неки системи, звани динамички преводиоци, или "[[Just-in-time компилација|just-in-time]]"(ЈИТ) преводиоци , преводе бајткод у машински језик кад год је то потребно у [[Рантајм|рантајму]]: ово помаже виртуалној машини да побољша хардвер, а да се при томе преносивост бајткода не губи. На пример, [[Јава (програмски језик)|Јава]] и [[Smalltalk|Смалталк]] код је форматиран као бајткод, па га (ЈИТ) преводилац може превести у машински код пре активирања. Ово ствара благи застој пре покретања програма,али значајно повећава брзину рада када се упореди са директном интерпретацијом изворног кода.
 
Због овог побољшања перформанси, данас многи програмски језици покрећу своје програме у две етапе, прво преводе изворни код у бајткод и после убацују бајткод у виртуалну машину. Овде су виртуелне машине базиране на бајткоду, то су [[Јава (програмски језик)|Јава]], [[Пајтон (програмски језик)|Пајтон]], [[PHP]],<ref>Although [[PHP]] opcodes are generated each time the program is launched, and are always interpreted and not Just-In-Time compiled</ref> [[Tcl|Тцл]] и [[Форт (програмски језик)|Форт]] (мада је [[Форт (програмски језик)|Фортова]] виртуелна машина мало другачија, па се и бајткодови преводе на својствен начин). Програмски језици као што су [[Перл (програмски језик)|Перл]] и [[Руби (програмски језик)|Рубy 1.8]] користе [[апстрактно синтаксно стабло]] како би расчланили изворни код.
 
Недавно су аутори [[V8 (JavaScript машина)|В8]] <ref>{{Cite web|title = Dynamic Machine Code Generation|url = https://developers.google.com/v8/design#mach_code|publisher = Google}}</ref> и [[Дарт (програмски језик)|Дарта]] <ref>{{Cite web|last = Loitsch|first = Florian|title = Why Not a Bytecode VM?|url = http://www.dartlang.org/articles/why-not-bytecode/|publisher = Google}}</ref> закључили да је бајткод неопходан ако желимо брзу и ефикасну ВМ имплементацију. Имплементација оба горе поменута језика користе директно ЈИТ превођење изворног кода у машински код без кориштења бајткода.<ref>{{Cite web|title = JavaScript myth: JavaScript needs a standard bytecode|url = http://www.2ality.com/2012/01/bytecode-myth.html}}</ref>
Ред 25:
* [[CLISP]] имплементација [[Common Lisp]]-а коришћена је само за превођење бајтокда већ много година; међутим, сада такође подржава превођење на матерњи код уз помоћ [[ГНУ муња|ГНУ муње]].
 
* [[CMUCL]] и [[Scieneer Common Lisp]] имплементације [[Common Lisp]]-а могу преводити и на бајткод и на матерњи код; бајткод је много компактнији
* [[Common средњи Језик|Common средњи језик]] извршен је од стране [[CLR|рантајма Common језика]]. Користе га [[.NET Framework|Microsoft .NET]] језици као што је [[C Sharp|C#]].
 
Ред 35:
 
* [[Емацс]] је текст едитор који се са већином својих функционалности спроводи у [[Специфичан дијалект|специфичном дијалекту]] [[Lisp|Лиспа]]. Ове карактеристике су преведене у бајткоду. Ова архитектура омогућава корисницима да прилагоде едитор са високим нивоом језика, који је након превођења у бајткод омогућава интер- вал разумну перформансу.
* [[Embeddable Common Lisp]] имплементација [[Common Lisp]]-а може се превести у бајткод или у С код.
 
* Ericsson имплементација [[Erlang (програмски језик)|Erlang]]-а користи [[BEAM бајткод]]