Ho fatto ricerche su interpreti / compilatori, poi mi sono imbattuto in JIT-Compilation, in particolare il motore JavaScript V8 di Google Chrome.
Le mie domande sono:
- Come può essere più veloce dell'interpretazione standard?
- Perché in primo luogo non è stata utilizzata la compilazione JIT?
La mia attuale comprensione
Ogni programma Javascript inizia come codice sorgente , quindi, indipendentemente dal metodo di esecuzione, alla fine viene tradotto in codice macchina .
Sia la compilazione JIT che l' interpretazione devono seguire questo percorso, quindi come può la compilazione JIT essere più veloce (anche perché la JIT è limitata nel tempo, a differenza della compilazione AOT)?Sembra che la compilazione JIT sia un'innovazione relativamente vecchia , basata sull'articolo della compilazione JIT di Wikipedia .
"Il primo compilatore JIT pubblicato è generalmente attribuito al lavoro su LISP di McCarthy nel 1960 ".
"Smalltalk (c. 1983 ) ha aperto la strada a nuovi aspetti delle compilazioni JIT. Ad esempio, la traduzione in codice macchina è stata eseguita su richiesta e il risultato è stato memorizzato nella cache per un uso successivo. Quando la memoria diventava scarsa, il sistema eliminava parte di questo codice e si rigenerava quando era di nuovo necessario ".
Allora perché Javascript è stato interpretato per cominciare ?
Sono molto confuso e ho fatto molte ricerche su questo, ma non ho trovato risposte soddisfacenti.
Le risposte così chiare e concise sarebbero apprezzate. E se occorre fornire ulteriori spiegazioni su interpreti, compilatori JIT, ecc., Anche questo è apprezzato.