Вопрос

Любимые языки, например, Ruby (если работает МРТ, я имею в виду, что не скомпилирован для байта-кода), запускается на самом деле анализируясь каждый раз, когда требуется выполнение, например, метод или тело петли? Я имею в виду, чтобы выполнить петлю, вам нужно разобрать свое тело N. раз?

Я просто всегда думал, что все эти программы проанализируют один раз на загрузке, преобразованные в дереве «сильно набранные» выписки и т. Д. Это не правда?

Это было полезно?

Решение

Я просто буду иметься в виду сейчас и сказать, что только в каждом языке программирования интерпретируется, будь то программное обеспечение (Ruby, Python, Java) или аппаратный интерпретатор (C, C ++) :)

Для реального ответа, пока я не знаю о внутренней реализации Ruby, я уверен, что черт возьми, они не разбирают заявление снова и снова и снова и снова. Несмотря на то, что не используя Bytecode в оригинальной реализации (или они уже мигрируют?), Они используют некоторое промежуточное представление (вы можете видеть его хорошо, когда вы хотите написать C-расширения для него), таким образом, просто выполнял их снова и снова.

Другие советы

Интерпретация - это слово с очень свободным определением. Даже инструкции машинного кода интерпретируются процессором.

В общем, между языками проводится различие между языками, которые скомпилированы до того, как они будут запущены и языки, которые не имеют процесса компиляции и выполняются внутри другой программы, называемого интерпретатором. Последние виды языков часто называют интерпретируемые языки.

Линия не так ясна в некоторых случаях:

  • Некоторые языки могут быть скомпилированы, либо интерпретированы, например, PHP.
  • Некоторые интерпретируемые код могут быть скомпилированы во время выполнения в нативных инструкциях машины (JIT Compilation).
  • Некоторые скомпилированные языки могут иметь exec ФУНКЦИОНАЛЬНОСТЬ, которая позволяет генерировать код и выполняться во время выполнения, в обход нормального процесса компиляции.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top