Badałem tłumaczy / kompilatorów, potem natknąłem się na kompilację JIT - w szczególności silnik Javascript V8 Google Chrome.
Moje pytania to:
- Jak może być szybszy niż standardowa interpretacja?
- Dlaczego w pierwszej kolejności nie użyto kompilacji JIT?
Moje obecne zrozumienie
Każdy program JavaScript zaczyna się jako kod źródłowy , a następnie, niezależnie od metody wykonania, jest ostatecznie tłumaczony na kod maszynowy .
Zarówno kompilacja JIT, jak i interpretacja muszą podążać tą ścieżką, więc w jaki sposób kompilacja JIT może być szybsza (również dlatego, że JIT jest ograniczony czasowo, w przeciwieństwie do kompilacji AOT)?Wydaje się, że Kompilacja JIT jest stosunkowo starą innowacją , opartą na artykule JIT-Compilation w Wikipedii .
„Pierwszy opublikowany kompilator JIT jest ogólnie przypisywany pracom nad LISP autorstwa McCarthy'ego w 1960 r .”
„Smalltalk (ok. 1983 ) był pionierem nowych aspektów kompilacji JIT. Na przykład tłumaczenie na kod maszynowy zostało wykonane na żądanie, a wynik został zapisany w pamięci podręcznej do późniejszego użycia. Gdy zabraknie pamięci, system usunie część tego kodu i zregeneruje się kiedy będzie znowu potrzebny ”.
Dlaczego więc na początku interpretowano Javascript ?
Jestem bardzo zdezorientowany i przeprowadziłem wiele badań na ten temat, ale nie znalazłem satysfakcjonujących odpowiedzi.
Docenione zostaną tak jasne, zwięzłe odpowiedzi. I jeśli potrzebne jest dodatkowe wyjaśnienie dotyczące tłumaczy ustnych, kompilatorów JIT itp., Jest to również mile widziane.