Tietokoneet eivät voi suorittaa kirjoittamaasi koodia JavaScript (tai mikä tahansa muu asiaan liittyvä kieli). Tietokoneet voivat suorittaa vain konekoodia. Konekoodi, jota tietty tietokone voi ajaa, määritetään prosessorissa, joka aikoo suorittaa nämä komennot, ja se voi olla erilainen eri prosessoreille.
On selvää, konekoodin kirjoittaminen oli vaikea tehdä (on 125 add-komento vai onko 126 tai ehkä 27). Tämän ongelman kiertämiseksi luotiin kokoonpanokielet. Nämä kielet käyttivät komennoille selvempiä nimiä (kuten ADD lisäämiseen), ja näin poistettiin tarve muistaa tarkat konekoodit. Kokoonpanokieleillä on yhä suhde tiettyyn prosessoriin ja konekoodiin, johon tietokone muuntaa nämä komennot.
Kokoonpanokielet on käännettävä tai tulkittava
Hyvin varhain havaittiin, että kirjoittaminen on helpompaa Kieli (kielet tarvittiin ja että itse tietokonetta voitaisiin käyttää kääntämään ne konekoodiohjeiksi, jotka tietokone todella ymmärtää. Tätä käännöstä voidaan käyttää kahdella tavalla, ja molemmat vaihtoehdot valittiin (joko yhtä tai toista käytetään käytetyn kielen ja sen käytön mukaan).
Käännetty kieli on kieli, jossa ohjelman kirjoittamisen jälkeen syöt koodin a-nimisen ohjelman kautta kääntäjä ja joka tuottaa ohjelman konekoodiversion. Kun haluat suorittaa ohjelman, soitat vain konekoodiversioon. Jos teet muutoksia ohjelmaan, sinun on käännettävä se uudelleen, ennen kuin voit testata muutetun koodin.
Tulkittu kieli on kieli, jossa ohjeet muunnetaan kirjoittamasi konekoodiksi ohjelman ajon aikana. Tulkittu kieli saa periaatteessa ohjeen ohjelmalähteestä, muuntaa sen koneeksi -koodilla, suorittaa konekoodin ja tarttuu seuraavaan ohjeeseen lähteestä toistaaksesi käsitellä asiaa.
Kaksi varianttia kääntämiseen ja tulkkaamiseen
Yksi variantti käyttää kaksivaiheista prosessia. Tällä vaihtoehdolla ohjelmasi lähde ei käänny suoraan konekoodiin, vaan sen sijaan muunnetaan kokoonpanomaiseksi kieleksi, joka on edelleen riippumaton tietystä prosessori. Kun haluat suorittaa koodin, se käsittelee kootun koodin prosessorille tarkoitetun tulkin kautta, jotta saadaan prosessorille sopiva konekoodi. Tällä lähestymistavalla on monia kääntämisen etuja säilyttäen prosessorin riippumattomuus, koska sama koottu koodi voidaan tulkita monien eri prosessorien avulla. Java on yksi kieli, joka usein käyttää tätä varianttia.
Toista varianttia kutsutaan Just in Time -kääntäjäksi (tai JIT). Tämän lähestymistavan avulla et itse suorita kääntäjää koodin kirjoittamisen jälkeen. Se tapahtuu sen sijaan automaattisesti, kun suoritat koodin. Just in Time -kääntäjän avulla koodia ei tulkita lausunnolla, se kootaan kaikki yhdeksi Siirry joka kerta, kun sitä kutsutaan suoritettavaksi, ja sitten saa juuri luomaasi käännetyn version juosta. Tämä lähestymistapa saa sen näyttämään siltä, että koodia tulkitaan, paitsi että virheiden sijaan löydetään vain silloin, kun lause on virhe saavutetaan, kääntäjän havaitsemat virheet johtavat siihen, että yhtäkään koodia ei suoriteta sen sijaan, että kaikki siihen asti oleva koodi olisi juosta. PHP on esimerkki kielestä, joka yleensä käyttää juuri ajoitettua kokoamista.
Onko Java käännetty tai tulkitaan?
Joten nyt tiedämme mitä tulkittu koodi ja koottu koodi tarkoittaa, seuraavaksi meidän on vastattava kysymykseen, mitä tällä kaikella on JavaScriptin kanssa? Koodisi voidaan kääntää tai tulkita tai käyttää jompaa kumpaa muuta mainituista vaihtoehdoista, missä JavaScriptin tarkalleen käytät. Suurimman osan ajasta oletJavaScriptin käyttäminen verkkoselaimessa ja siellä JavaScript tulkitaan yleensä.
Tulkitut kielet ovat yleensä hitaampia kuin käännetyt kielet. Tähän on kaksi syytä. Ensinnäkin tulkittava koodi on tulkittava ennen kuin se voidaan suorittaa, ja toiseksi, se on tapahtua joka kerta, kun lausunto on suoritettava (ei vain aina, kun suoritat JavaScriptiä, mutta jos se onkin silmukka sitten se on tehtävä joka kerta silmukan ympäri). Tämä tarkoittaa, että JavaScriptiin kirjoitettu koodi toimii hitaammin kuin monilla muilla kielillä kirjoitettu koodi.
Kuinka tämän tietäminen auttaa meitä, jos JavaScript on ainoa käytettävissä oleva kieli, jota voimme käyttää kaikilla selaimilla? Itse selaimeen sisäänrakennettua JavaScript-tulkkia ei kirjoiteta JavaScriptiin. Sen sijaan se on kirjoitettu jollain muulla kielellä, joka sitten koottiin. Tämä tarkoittaa sitä, että voit nopeuttaa JavaScriptin käyttöä, jos pystyt hyödyntämään kaikkia JavaScriptin tarjoamia komentoja, joiden avulla voit ladata tehtävän itse JavaScriptille.
Esimerkkejä JavaScriptin saamisesta nopeammaksi
Esimerkki tästä on, että jotkut, mutta eivät kaikki selaimet, ovat toteuttaneet document.getElementsByClassName () -menetelmän JavaScriptin moottorissa, kun taas toiset eivät vielä ole tehneet niin. Kun tarvitsemme tätä tiettyä toimintoa, voimme saada koodin toimimaan nopeammin niissä selaimissa, joissa JavaScript-moottori tarjoaa sen ominaisuuden avulla havaitsemalla, onko menetelmä jo olemassa, ja luomme vain oman version tästä koodista JavaScriptillä, kun JavaScript-moottori ei tarjoa sitä meille. Jos JavaScript-moottori tarjoaa kyseisen toiminnallisuuden, sen pitäisi toimia nopeammin, jos käytämme sitä sen sijaan, että käyttäisimme omaa JavaScriptiin kirjoitettua versiota. Sama pätee kaikkiin prosessointeihin, jotka JavaScript-moottori antaa meille mahdollisuuden soittaa suoraan.
On myös tapauksia, joissa JavaScript tarjoaa useita tapoja tehdä sama pyyntö. Näissä tapauksissa yksi tiedonsaantitavoista voi olla tarkempi kuin toinen. Esimerkiksi document.getElementsByTagName ('table') [0] .tBodies ja document.getElementsByTagName ('table') [0] .getElementsByTagName ('tbody') gan noutaa sama tbody-tunnisteiden nodelist verkkosivun ensimmäisestä taulukosta, mutta ensimmäinen niistä on erityinen komento noutamiseksi tbody-merkinnät, joissa toinen tunnistaa, että haemme tbody-tunnisteet parametrista, ja muut arvot voidaan korvata muiden noutamiseksi tunnisteita. Useimmissa selaimissa koodin lyhyempi ja tarkempi versio toimii nopeammin (joissakin tapauksissa paljon nopeammin) kuin toinen variantti, joten on järkevää käyttää lyhyempää ja tarkempaa versio. Se myös helpottaa koodin lukemista ja ylläpitämistä.
Nyt monissa näistä tapauksista todellinen käsittelyajan ero on hyvin pieni ja se tulee vasta kun lisäät useita sellaisia koodivalintoja yhdessä, että saat huomattavia eroja koodin kestossa juosta. On melko harvinaista, että koodin muuttaminen sen nopeuttamiseksi tekee koodista huomattavasti pidemmän tai vaikeamman ylläpitää, ja usein päinvastainen on totta. Lisäetu on, että tulevaisuuden JavaScript-moottorien versioita voidaan luoda, jotka jopa nopeuttavat tarkempia versioita lisäksi, että tietyn variantin käyttö voi tarkoittaa, että koodisi toimii tulevaisuudessa nopeammin ilman, että sinun tarvitsee muuttaa mitään.