A számítógépek nem tudják futtatni azt a kódot, amelybe beírták JavaScript (vagy bármilyen más nyelv az ügyben). A számítógépek csak gépi kódot futtathatnak. A gépi kód, amelyet egy adott számítógép képes futtatni, a processzoron belül van meghatározva, amely ezeket a parancsokat fogja futtatni, és a processzorokonként eltérő lehet.
Nyilvánvalóan, gépi kód írása az emberek számára nehéz volt (125-ös egy add parancs, 126 vagy talán 27). A probléma elkerülésére létrehozták az úgynevezett összeszerelési nyelveket. Ezek a nyelvek nyilvánvalóbb neveket használták a parancsokhoz (mint például az ADD a hozzáadáshoz), és így elkerülték a pontos gépi kódok emlékezésének szükségességét. Az összeállítási nyelvek továbbra is egy-egy kapcsolatban vannak az adott processzorral és gépi kóddal, amelybe a számítógép ezeket a parancsokat konvertálja.
Az összeszerelési nyelveket össze kell állítani vagy értelmezni kell
Nagyon korán rájött, hogy könnyebb írni nyelvek szükségesek voltak, és hogy maga a számítógép felhasználható azok lefordítására olyan gépi kód utasításokba, amelyeket a számítógép valóban megért. Kétféle megközelítést lehet alkalmazni ezzel a fordítással, és mindkét alternatívát választották (az egyiket vagy a másikot a használt nyelvtől és a futtatás helyétől függően kell használni)
Az összeállított nyelv az a nyelv, ahol a program elkészítése után a kódot egy a nevű program továbbítja fordítóprogram és elkészíti a program gépi kódját. Ha futtatni akarja a programot, hívja fel a gépi kódot. Ha módosítja a programot, akkor újra kell fordítania azt, mielőtt kipróbálhatja a megváltoztatott kódot.
Az értelmezett nyelv az, ahol az utasításokat a program futtatásakor konvertálják az általuk írt gépi kódba. Az értelmezett nyelv alapvetõen utasításokat kap a program forrásától, gépesre konvertálja kódot, futtatja azt a gépi kódot, majd megragadja a forrásból következő következő utasítást, hogy megismételje folyamat.
Két változat a fordításban és az értelmezésben
Az egyik változat kétlépcsős folyamatot használ. Ezzel a változattal a program forrását nem közvetlenül a gépi kódba fordítják le, hanem ehelyett átalakul egy összeállítás-szerű nyelvre, amely még mindig független az adott nyelvtől processzor. Ha a kódot futtatni akarja, akkor a feldolgozott kódot a processzorra specifikus értelmezőn keresztül feldolgozza, hogy megkapja a processzornak megfelelő gépi kódot. Ennek a megközelítésnek sok előnye van a fordításnak, miközben fenntartja a processzor függetlenségét, mivel ugyanazt a fordított kódot sok különböző processzor tudja értelmezni. A Java egy olyan nyelv, amely gyakran használja ezt a változatot.
A másik változatot Just in Time fordítónak (vagy JIT) hívják. Ezzel a megközelítéssel valójában nem futtatja a fordítót, miután elkészítette a kódot. Ehelyett automatikusan megtörténik a kód futtatásakor. A Just in Time fordító használatával a kódot nem értelmezik nyilatkozatonként, hanem egyben összeállítja menjen minden alkalommal, amikor futtatásra hívják, majd az éppen létrehozott fordított verzió kapja meg fuss. Ez a megközelítés nagyjából úgy néz ki, mint a kód értelmezése, azzal a különbséggel, hogy a hibák helyett csak akkor találhatók meg, amikor a Hiba történt, a fordító által észlelt hibák eredményeként a kódot egyetlen futtatása sem eredményezi, az összes kód helyett fuss. PHP egy olyan példa egy nyelvre, amely általában csak az időben történő fordítást használja.
A JavaScript összeállítva vagy értelmezve?
Tehát most már tudjuk, mit jelent az értelmezett kód és az összeállított kód. A következő kérdésre kell megválaszolnunk: mi köze van ennek a JavaScripthez? Attól függően, hogy pontosan hol fut a JavaScript, a kód fordítható vagy értelmezhető, vagy felhasználhatja a másik két említett változatot. Legtöbbször te vagya JavaScript futtatása egy böngészőben és ott általában a JavaScriptet kell értelmezni.
Az értelmezett nyelvek általában lassabbak, mint a fordított nyelvek. Ennek két oka van. Először is az értelmezendő kódot ténylegesen kell értelmezni, mielőtt futtatható lenne, és másodszor, hogy van minden alkalommal megtörténjen, ha az utasítás futtatásra kerül (nem csak a JavaScript futtatásakor, de ha az is benne van) egy hurok akkor ezt minden alkalommal meg kell tenni a hurok körül). Ez azt jelenti, hogy a JavaScript-ben írt kód lassabban fog futni, mint sok más nyelven írt kód.
Hogyan segít ez nekünk, ha a JavaScript az egyetlen nyelv, amely az összes böngészőben elérhető? A böngészőbe beépített JavaScript-értelmezőt nem JavaScript írja. Ehelyett más nyelven írják, majd összeállították. Ez azt jelenti, hogy gyorsabbá teheti a JavaScript futtatását, ha kihasználhatja a JavaScript által biztosított parancsokat, amelyek lehetővé teszik a feladat letöltését a JavaScript motorba.
Példák a JavaScript gyorsabb futtatására
Erre példa: néhány böngésző, de nem minden böngésző telepítette a document.getElementsByClassName () módszert a JavaScript motorban, míg mások még nem tették meg. Ha szükségünk van erre a funkcióra, akkor a kód gyorsabban futtatható azokban a böngészőkben, ahol a JavaScript motor ezt a funkció használatával biztosítja érzékeli, hogy létezik-e már a módszer, és csak akkor hozza létre a kód saját változatát JavaScript-ben, ha a JavaScript-motor nem rendelkezik erről minket. Ahol a JavaScript motor biztosítja ezt a funkcionalitást, akkor gyorsabban kell működnie, ha ezt használjuk, nem pedig a saját, JavaScript-ben írt verziónk futtatása helyett. Ugyanez vonatkozik minden olyan feldolgozásra, amelyet a JavaScript motor lehetővé tesz számunkra, hogy közvetlenül felhívjuk.
Előfordulnak olyan esetek is, amikor a JavaScript többféle lehetőséget kínál ugyanazon kérés benyújtására. Ezekben az esetekben az információhoz való hozzáférés egyik módja pontosabb lehet, mint a másik. Például a document.getElementsByTagName ('table') [0] .tBodies and document.getElementsByTagName ('table') [0] .getElementsByTagName ('tbody') mindkettő töltse le a tbody címkék ugyanazt a nodelistjét a weboldal első táblájában, ám ezek közül az első egy konkrét parancs a visszakereséshez a tbody-címkék, ahol a második azt azonosítja, hogy tbody-címkéket veszünk egy paraméterben, és más értékek helyettesíthetők más címkéket. A legtöbb böngészőben a kód rövidebb és pontosabb változata gyorsabban fog futni (egyes esetekben sokkal gyorsabb), mint a második változatnál, ezért érdemes a rövidebbet és a pontosabbat használni változat. Ezenkívül megkönnyíti a kód olvashatóságát és karbantartását.
Most ezekben az esetekben a feldolgozási idő tényleges különbsége nagyon kicsi, és csak akkor lesz sok ilyen kódválasztást ad hozzá, amelyekkel észrevehető különbséget kap a kódhoz képest eltelt időben fuss. Meglehetősen ritka, ha a kód gyorsabb futtatása érdekében történő megváltoztatása jelentősen meghosszabbítja vagy megnehezíti a kód fenntartását, és gyakran fordítva is igaz lesz. További előnye, hogy a JavaScript motorok jövőbeni verziói is létrehozhatók, amelyek még a konkrétabb változatot is felgyorsítják továbbá, hogy az adott változat használata azt jelentené, hogy a kód gyorsabban fog futni a jövőben anélkül, hogy bármit meg kellene változtatnia.