Подтвердить что ты не робот

Является ли компилятор JIT компилятором или интерпретатором?

Мой вопрос заключается в том, является ли компилятор JIT, который преобразует IL в язык Machine, в точности является компилятором или интерпретатором.

Еще один вопрос: Является ли HTML, JavaScript скомпилированным языком или интерпретированным языком?

Спасибо в Advance

4b9b3361

Ответ 1

Компилятор JIT (как раз вовремя) - это компилятор. Он выполняет оптимизацию, а также компилирует в машинный код. (и даже называется компилятором)

HTML, Javascript интерпретируются, они читаются как есть через веб-браузер и выполняются с минимальными исправлениями ошибок и оптимизациями.

Ответ 2

Технически компилятор переводит с одного языка на другой. Поскольку компилятор JIT получает IL в качестве своего входного сигнала и выводит собственный двоичный файл машины, он легко подходит для этого критерия и должен называться компилятором.

Что касается Javascript, то сделать различие здесь сложнее. Если вы хотите быть педантичным, нет такой вещи, как "скомпилированный язык" или "интерпретируемый язык". Я имею в виду, что на практике большинство языков имеют один общий способ их запуска, и если это интерпретатор, их обычно называют интерпретируемыми языками, но интерпретация или компиляция (обычно) не являются чертами самого языка. Python почти повсеместно считается интерпретированным, но можно написать компилятор, который компилирует его в собственный двоичный код; все еще заслуживает "интерпретированного" прилагательного?

Теперь, чтобы получить реальный ответ: Javascript обычно запускается интерпретатором, который, среди прочего, использует компилятор JIT. Разве это интерпретируется или компилируется? Ваш звонок.

Ответ 3

Из Wiki, just-in-time compiler(JIT), также известный как динамический транслятор, используется для улучшения производительности во время выполнения компьютерных программ.

Just-in-time compilation представляет собой преобразование неродного кода, например байт-кода, в собственный код непосредственно перед его выполнением. JIT compiler - это тот, который компилирует код IL и выводит собственный код, который кэшируется, где as интерпретатор будет выполнять строку за строкой,
т.е. в случае java файлы классов являются входом в интерпретатор.

Подробнее о JIT здесь:

Да, HTML, JavaScript являются интерпретируемыми языками, так как они не скомпилированы ни в какой код. Это означает, что скрипты выполняются без предварительной компиляции.

Также хорошо читать здесь на JavaScript/HTML, не являющемся компилируемым языком.

Ответ 4

JIT-процессоры, такие как IL, являются компиляторами, в основном. В основном процессоры JavaScript являются переводчиками. Я понимаю ваше любопытство по этому вопросу, но лично я пришел к мысли, что на самом деле нет "правильного" андерсера.

Существуют интерпретаторы JavaScript, которые компилируют части или весь код по причинам эффективности. Это действительно переводчики?

JIT действует во время выполнения, поэтому его можно понимать как умный, высоко оптимизированный интерпретатор. Что это?

Это нравится "это растение" или "это животное". Есть живые вещи, которые не очень хорошо подходят для плесени: природа - это природа, а "классификация" вещей - это чисто человеческое интеллектуальное усилие, которое имеет свои ограничения. Даже созданные человеком вещи, такие как "код", подвержены тем же соображениям.

ОК; так что, может быть, есть один правильный ответ:

Способ обработки JavaScript (скажем, 5 лет назад) называется интерпретатором. Способ обработки С++ считается компилятором.

Способ обработки IL - это просто... "JIT".

Ответ 5

CLI (.Net bytecode) имеет функции, не найденные в исходных процессорах, поэтому JIT является наиболее окончательно компилятором. Вопреки тому, что некоторые пишут здесь, большинство оптимизаций уже сделано.

Ответ 6

HTML не программирует язык, поэтому трудно сказать, скомпилирован ли он или интерпретирован... В отношении "если результат компиляции повторно используется" HTML не компилируется ни одним браузером (он анализируется на любой временной странице renderd).

JavaScript в старых браузерах интерпретируется (предварительно обработан в промежуточном представлении, но не в машинный код). В последних версиях браузеров есть JIT-компиляторы JIT - поэтому гораздо сложнее определить, теперь ли он интерпретируется или компилируется.

Ответ 7

JIT (Just In Time) Компилятор - это только компилятор, а не интерпретатор, поскольку компилятор JIT компилирует или преобразовывает определенные части байт-кодов в собственный машинный код во время выполнения для высокой производительности, но он does'nt выполняет инструкции.

В то время как интерпретатор читает и выполняет инструкции во время выполнения.

HTML и Javascript интерпретируются, он напрямую выполняется браузером без компиляции.