Significato interpretato o compilato in JavaScript

I computer non possono effettivamente eseguire il codice in cui si scrive JavaScript (o qualsiasi altra lingua per quella materia). I computer possono eseguire solo codice macchina. Il codice macchina che può essere eseguito da un determinato computer è definito all'interno del processore che eseguirà tali comandi e può essere diverso per processori diversi.

Ovviamente, codice della macchina da scrivere era difficile per le persone (è 125 un comando add o è 126 o forse 27). Per ovviare a questo problema sono stati creati quelli che sono noti come linguaggi assembly. Queste lingue usavano nomi più ovvi per i comandi (come ADD per l'aggiunta) e quindi eliminavano la necessità di ricordare i codici macchina esatti. I linguaggi di assemblaggio hanno ancora una relazione uno a uno con il particolare processore e codice macchina in cui il computer converte quei comandi.

Le lingue dell'assembly devono essere compilate o interpretate

Molto presto è stato realizzato che è più facile da scrivere le lingue

instagram viewer
erano necessari e che il computer stesso potesse essere utilizzato per tradurre quelli nelle istruzioni del codice macchina che il computer può effettivamente comprendere. Ci sono stati due approcci che potevano essere adottati con questa traduzione ed entrambe le alternative sono state scelte (l'uno o l'altro verranno utilizzati a seconda della lingua utilizzata e della posizione in cui viene eseguita).

Una lingua compilata è quella in cui, una volta che il programma è stato scritto, si inserisce il codice attraverso un programma chiamato a compilatore e che produce una versione in codice macchina del programma. Quando si desidera eseguire il programma, è sufficiente chiamare la versione del codice macchina. Se si apportano modifiche al programma, è necessario ricompilarlo prima di poter testare il codice modificato.

Un linguaggio interpretato è un linguaggio in cui le istruzioni vengono convertite da ciò che è stato scritto nel codice macchina durante l'esecuzione del programma. Un linguaggio interpretato ottiene sostanzialmente un'istruzione dalla sorgente del programma, la converte in macchina codice, esegue quel codice macchina e quindi prende l'istruzione successiva dall'origine per ripetere il processi.

Due varianti sulla compilazione e l'interpretazione

Una variante utilizza un processo in due fasi. Con questa variante, l'origine del programma non viene compilata direttamente nel codice macchina ma invece viene convertito in un linguaggio simile ad un assembly che è ancora indipendente dal particolare processore. Quando si desidera eseguire il codice, questo elabora quindi il codice compilato tramite un interprete specifico del processore in modo da ottenere il codice macchina appropriato per quel processore. Questo approccio ha molti dei vantaggi della compilazione mantenendo l'indipendenza del processore poiché lo stesso codice compilato può essere interpretato da molti processori diversi. Java è una lingua che utilizza spesso questa variante.

L'altra variante è chiamata compilatore Just in Time (o JIT). Con questo approccio, non si esegue effettivamente il compilatore dopo aver scritto il codice. Invece, ciò accade automaticamente quando si esegue il codice. Utilizzando un compilatore Just in Time il codice non viene interpretato istruzione per istruzione, viene compilato tutto in uno andare ogni volta che viene chiamato per essere eseguito e quindi la versione compilata che ha appena creato è ciò che ottiene correre. Questo approccio fa sembrare che il codice venga interpretato, tranne per il fatto che invece di trovare errori solo quando l'istruzione con il viene raggiunto l'errore, qualsiasi errore rilevato dal compilatore comporta la mancata esecuzione del codice anziché di tutto il codice fino a quel momento correre. PHP è un esempio di un linguaggio che di solito utilizza compilation just in time.

JavaScript è compilato o interpretato?

Quindi ora sappiamo cosa significano il codice interpretato e il codice compilato, la domanda a cui dovremo successivamente rispondere è che cosa ha a che fare tutto ciò con JavaScript? A seconda di dove esattamente si esegue JavaScript, il codice può essere compilato o interpretato o utilizzare una delle altre due varianti menzionate. Il più delle volte lo seieseguendo il tuo JavaScript in un browser web e lì il JavaScript viene generalmente interpretato.

Le lingue interpretate sono generalmente più lente delle lingue compilate. Ci sono due ragioni per questo. In primo luogo, il codice da interpretare deve in realtà essere interpretato prima di poter essere eseguito e, in secondo luogo, è così accade ogni volta che deve essere eseguita l'istruzione (non solo ogni volta che si esegue JavaScript, ma se è presente un' ciclo continuo quindi deve essere fatto ogni volta intorno al ciclo). Ciò significa che il codice scritto in JavaScript funzionerà più lentamente del codice scritto in molte altre lingue.

In che modo questo ci aiuta a capire dove JavaScript è l'unica lingua disponibile per noi su tutti i browser Web? L'interprete JavaScript stesso incorporato nel browser Web non è scritto in JavaScript. Invece, è scritto in un'altra lingua che è stata quindi compilata. Ciò significa che puoi rendere il tuo JavaScript più veloce se puoi sfruttare tutti i comandi forniti da JavaScript che ti consentono di scaricare l'attività sul motore JavaScript stesso.

Esempi per ottenere JavaScript per l'esecuzione più veloce

Un esempio di ciò è che alcuni ma non tutti i browser hanno implementato un metodo document.getElementsByClassName () all'interno del motore JavaScript, mentre altri devono ancora farlo. Quando abbiamo bisogno di questa particolare funzionalità, possiamo far funzionare il codice più velocemente in quei browser in cui il motore JavaScript lo fornisce usando la funzione rilevare se il metodo esiste già e creare la nostra versione di quel codice in JavaScript solo quando il motore JavaScript non lo prevede noi. Laddove il motore JavaScript fornisca tale funzionalità, dovrebbe essere eseguito più rapidamente se lo utilizziamo anziché eseguire la nostra versione scritta in JavaScript. Lo stesso vale per qualsiasi elaborazione che il motore JavaScript mette a nostra disposizione per essere chiamato direttamente.

Ci saranno anche casi in cui JavaScript fornisce diversi modi per fare la stessa richiesta. In questi casi, uno dei modi per accedere alle informazioni può essere più specifico dell'altro. Ad esempio document.getElementsByTagName ('table') [0] .tBodies e document.getElementsByTagName ('table') [0] .getElementsByTagName ('tbody') entrambi recuperare lo stesso nodelist dei tag tbody nella prima tabella nella pagina Web, tuttavia il primo di questi è un comando specifico per il recupero i tag tbody in cui il secondo identifica che stiamo recuperando i tag tbody in un parametro e altri valori possono essere sostituiti per recuperare altri tag. Nella maggior parte dei browser, la variante più breve e specifica del codice verrà eseguita più velocemente (in alcuni casi molto più veloce) rispetto alla seconda variante e quindi ha senso usare il più corto e più specifico versione. Inoltre semplifica la lettura e la manutenzione del codice.

Ora in molti di questi casi, la differenza effettiva nel tempo di elaborazione sarà molto piccola e sarà solo quando aggiungi molte di queste scelte di codice insieme che otterrai una notevole differenza nel tempo impiegato dal tuo codice correre. È abbastanza raro però che cambiare il codice per renderlo più veloce renderà il codice significativamente più lungo o più difficile da mantenere, e spesso sarà vero il contrario. C'è anche l'ulteriore vantaggio di poter creare versioni future dei motori JavaScript che accelerano anche la variante più specifica inoltre, l'uso della variante specifica può significare che il codice verrà eseguito più velocemente in futuro senza che sia necessario modificare nulla.

instagram story viewer