Как компилятор и интерпретатор используются на одном языке? - PullRequest
0 голосов
/ 02 марта 2019

Я прочитал достаточно объяснений об определении компилятора, интерпретатора и "вещей", которые используют оба.Я не нашел, как компилятор и интерпретатор используются на одном языке.

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Java - первый машинно-независимый язык программирования;он использует как компилятор, так и интерпретатор.Компиляторы Java спроектированы таким образом, что преобразуют исходный код в независимую от платформы форму, т.е. байтовые коды.Эти байтовые коды затем переводятся в машинный код интерпретатором.Так компилятор и интерпретатор используются на одном языке.Любая система с JVM будет запускать эти байтовые коды.

Java program  byte code  interpreted by VM  machine language

summary:

java-компилятор преобразует исходный код в промежуточный язык, известный как байт-код.Этот байт-код может быть выполнен только в виртуальной среде, называемой JVM.Виртуальная машина Java.JVM является интерпретатором Java-байт-кода.Он преобразует байт-код в машинный язык и выполняет строку за строкой.

, так как компилятор и интерпретатор используются на одном языке ... если он окажется полезным, вы можете упомянуть

0 голосов
/ 02 марта 2019

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

байт-код равен машинный код для виртуальной машины.

В Javascript есть среда выполнения (движок), которая выполняет только временную компиляцию (JIT).По сути, во время выполнения ему дается исходный код, который он немедленно преобразует в собственный код, а затем код выполняется.В движке Chrome есть два модуля, которые выполняют компиляцию: один может выполнять код быстро, но код не сильно оптимизирован (интерпретатор зажигания), а другой создает высокопроизводительный код, но компиляция занимает больше времени (турбовентиляторный компилятор).

Зачем использовать оба:

  • переносимость - когда вы используете промежуточное представление, скомпилированное AOT, вы можете взять этот байт-код и запустить его на любой архитектуре, для которой предоставляется виртуальная машина.Вы можете передать один и тот же байт-код Java клиентам на Mac, ПК или Linux.Если у них установлена ​​JVM, код будет запущен.Для C или C ++ вы должны поставлять разные исполняемые программы для каждой архитектуры
  • быстрый начальный запуск и достойная производительность выполнения - компиляция требует времени (и чем больше оптимизированного кода, тем больше времени требуется для компиляции в целом), но никто не любитПодождите.Лучше создать что-то неидеальное (фаза зажигания), а затем постепенно улучшать код путем компиляции горячих путей в высокооптимизированный машинный код (фаза турбовентилятора).Это особенно вероятно сегодня, когда у нас есть процессоры со многими ядрами, но мы не можем использовать их все, потому что создавать программы с множеством параллельных потоков сложно (поэтому одно ядро ​​может выполнять программу, а другое может оптимизировать код в это время)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...