Я изучал интерпретаторы / компиляторы, а потом наткнулся на JIT-компиляцию - в частности, на Google Chrome V8 Javascript Engine.
Мои вопросы -
- Как это может быть быстрее, чем стандартная интерпретация?
- Почему JIT-Compilation не использовался в первую очередь?
Мое текущее понимание
Каждая программа Javascript начинается с исходного кода , а затем, независимо от способа выполнения, в конечном итоге переводится в машинный код .
И JIT-компиляции и интерпретации должны идти по этому пути, так как может JIT-компиляции будет быстрее (и потому , что JIT время ограниченным, в отличие от АОТ-компиляции)?Похоже, что JIT-компиляция является относительно старой инновацией , основанной на статье JIT-компиляции Википедии .
«Самый ранний опубликованный JIT-компилятор обычно приписывают работе над LISP Маккарти в 1960 году ».
«Smalltalk (c. 1983 ) впервые применил новые аспекты JIT-компиляций. Например, перевод в машинный код выполнялся по требованию, а результат кэшировался для последующего использования. Когда памяти не хватало, система удаляла часть этого кода и регенерировала это когда это было нужно снова ".
Так почему же Javascript интерпретируется с самого начала ?
Я очень смущен, и я провел много исследований по этому вопросу, но я не нашел удовлетворительных ответов.
Так что четкие, краткие ответы будут оценены. И если необходимо получить дополнительное объяснение о интерпретаторах, JIT-компиляторах и т. Д., Это также приветствуется.