Ладно, ребята, я решил взять свои старые заметки по CS и немного подробнее изучить теорию компиляторов. Я должен сказать, что не могу на всю жизнь вспомнить, как все это работает, но у меня есть хороший пример приложения из моих студенческих дней, который помогает мне понять некоторые вещи.
Этот пример приложения берет составленный язык и компилирует его в код промежуточной сборки, подобный языку. Затем существует простая реализация виртуальной машины, которая берет этот промежуточный язык и выполняет операторы.
Что я не могу понять, так это то, что если бы я был прямым интерпретатором, а не компилятором, он все равно создавал бы эти промежуточные команды в памяти, чтобы выполнить их в конце. Или интерпретатор на самом деле «выполняет» дескриптивные разделы фрагментов кода одновременно?