Рачунари заправо не могу покренути код који сте уписали ЈаваСцрипт (или било који други језик у вези с тим). Рачунари могу да покрећу само машински код. Машински код који одређени рачунар може покренути дефиниран је у процесору који ће покренути те наредбе и може бити различит за различите процесоре.
Очигледно је шифра машине за писање људима је било тешко да ураде (125 команда за додавање или је 126 или можда 27). Да би се решио тај проблем, створени су и познати језици монтаже. Ови језици су користили очитија имена за команде (као што је АДД за додавање) и тако уклонили потребу за памћењем тачних машинских кодова. Језици монтаже и даље имају однос између једног према одређеном процесору и машинском коду у који рачунар претвара те команде у.
Језици монтаже морају бити састављени или тумачени
Врло рано се схватило да је лакше писати језицима су били потребни и да би се и сам рачунар могао користити за превођење истих у упутства о машинском коду које рачунар може заиста да разуме. Два су приступа могла да се примене овим преводом и изабрана су обе алтернативе (користиће се један или други у зависности од језика који се користи и места на коме се изводи).
Састављени језик је онај на којем, након што је програм написан, уносите код преко програма званог а преводилац и то производи машинску верзију програма. Када желите да покренете програм, само зовете верзију машинског кода. Ако унесете измене у програм, морате га прекомпоновати пре него што будете могли да тестирате измењени код.
Тумачени језик је онај на којем се упуте претварају из онога што сте написали у машински код док се програм покреће. Тумачени језик у основи добија инструкцију из извора програма, претвара га у машински цоде, покреће тај машински код и затим узима наредну инструкцију из извора да би поновио процес.
Две варијанте сабирања и тумачења
Једна варијанта користи двостепени процес. Са овом варијантом, извор вашег програма се саставља не директно у машински код, већ уместо тога претвара се у језик сличан склопу који је и даље независан од конкретног процесор. Кад желите покренути код, онда обрађује тај састављени код преко тумача који је специфичан за процесор, како би добио машински код одговарајући том процесору. Овај приступ има бројне предности компилације уз задржавање неовисности процесора, јер исти компајлирани код може да протумачи са много различитих процесора. Јава је један језик који често користи ову варијанту.
Друга варијанта се зове Јуст ин Тиме компајлер (или ЈИТ). Са овим приступом заправо не покрећете преводилац након што сте написали свој код. Уместо тога, то се аутоматски догађа када покренете код. Коришћењем Јуст ин Тиме компајлера, код се не интерпретира изјавом изјавом, већ се саставља све у једном иди сваки пут када се позива да се покрене и онда је састављена верзија коју је управо створио трцати. Овај приступ чини да личи на то да се шифра тумачи осим што се уместо грешака налази само када је изјава са Дошло је до грешке, свака грешка коју је компајлер открио резултира тиме да се ниједан од кода не покреће уместо да се сви код до тог тренутка трцати. ПХП је пример језика који се обично користи баш у време компилације.
Да ли се ЈаваСцрипт компајлише или тумачи?
Дакле, сада знамо шта значи интерпретирани и састављени код, питање на које следеће морамо одговорити је шта све ово има везе са ЈаваСцрипт-ом? Овисно о томе гдје точно покрећете свој ЈаваСцрипт, код се може саставити или интерпретирати или користити било коју од споменуте двије варијанте. Већину времена степокретање вашег ЈаваСцрипт-а у веб прегледачу и тамо се обично тумачи ЈаваСцрипт.
Тумачени језици су обично спорији од компајлираних језика. Постоје два разлога за то. Прво, код који треба да се интерпретира мора да се тумачи пре него што се може покренути, и друго, да дешава се сваки пут када се наредба покреће (не само сваки пут када покренете ЈаваСцрипт, него ако се налази а петља онда то треба урадити сваки пут око петље). То значи да ће код написан у ЈаваСцрипту радити спорије од кода написаног на многим другим језицима.
Како нам знање о томе помаже тамо где је ЈаваСцрипт једини језик који нам је доступан за све веб претраживаче? Сам ЈаваСцрипт интерпретер који је уграђен у веб прегледач није написан на ЈаваСцрипт-у. Уместо тога, написано је на неком другом језику који је тада састављен. То значи да можете брже покренути свој ЈаваСцрипт ако можете искористити било које наредбе које вам ЈаваСцрипт омогућавају да пребаците задатак на сам ЈаваСцрипт енгине.
Примери за бржи рад ЈаваСцрипта
Пример за то је да су неки, али не сви прегледачи, имплементирали доцумент.гетЕлементсБиЦлассНаме () методу у ЈаваСцрипт механизму, док други то још нису учинили. Када нам је потребна ова одређена функционалност, можемо омогућити да се код брже покрене у оним претраживачима у којима ЈаваСцрипт покретач пружа функцију откривајући да ли метода већ постоји и креирамо сопствену верзију тог кода у ЈаваСцрипт-у само ако ЈаваСцрипт енгине то не предвиђа нас. Тамо где ЈаваСцрипт енгине пружа ту функцију, требало би да ради брже ако то користимо, а не да покрећемо сопствену верзију написану на ЈаваСцрипт-у. Исто се односи на било коју обраду која нам омогућава ЈаваСцрипт директни позив.
Биће и случајева где ЈаваСцрипт пружа више начина за подношење истог захтева. У тим случајевима, један од начина приступа информацијама може бити специфичнији од другог. На пример доцумент.гетЕлементсБиТагНаме ('таблица') [0] .тБодиес и доцумент.гетЕлементсБиТагНаме ('таблица') [0] .гетЕлементсБиТагНаме ('тбоди') обоје дохватити исти ноделист тбоди тагова у првој табели на веб страници, али прва од њих је посебна команда за преузимање. тбоди ознаке где други идентификује да преузимамо тбоди тагове у параметру, а друге вредности могу да се замене за дохваћање осталих ознаке. У већини прегледача краћа и специфичнија варијанта кода радиће брже (у неким случајевима много брже) од друге варијанте, тако да има смисла користити краћу и специфичнију верзија. Такође олакшава читање и одржавање кода.
Сада ће у многим од ових случајева стварна разлика у времену обраде бити врло мала и биће тек када додате заједно много таквих избора кода, тако да ћете добити било какву приметну разлику у времену које ваш код траје трцати. Међутим, прилично је ретка чињеница да ће промена вашег кода како би се убрзао покретање кода знатно дуже или теже одржавати, а често ће бити и обрнуто. Ту је и додатна корист што се могу створити будуће верзије ЈаваСцрипт мотора који убрзавају чак и специфичнију варијанту Надаље, тако да употреба одређене варијанте може значити да ће се ваш код у будућности покретати брже, а да не морате ништа мијењати.