Я не думаю, что возможно реализовать интерпретатор для языка на этом языке (назовите это A), затем запустить его поверх другого существующего переводчика (назовите это B) для этого языка и выполнить программу (назовите этоP), и P, работающий на (A, работающий на B), будет быстрее, чем P, работающий на B.
Каждая операция A должна быть реализована по крайней мере с одной операцией B. Так что даже еслиB ужасно плох, а A оптимально хорош, тот факт, что A запускается на B, означает, что вредность B замедлится A.
Можно было бы реализовать интерпретатор + JIT-компилятор для языка всам язык, где JIT-компилятор создает некоторый другой более быстрый код во время выполнения, и P, работающий на (A, работающий на B), будет быстрее, чем P, работающий на B. Часть времени выполнения P, которая не скомпилирована JIT, будет медленнее ( намного медленнее, обычно), но если JIT-компилятор успешно идентифицирует "горячие" части P и выполняет их быстрее, чем Bru В целом вся система может работать быстрее.
Но это не очень интересно.Также возможно реализовать компилятор для языка на этом языке (C), скомпилировать его с помощью существующего компилятора (D) и заставить новый язык компилятора создавать код, который работает быстрее, чем исходный компилятор.Я надеюсь, что это не пугает вас;должно быть ясно, что скорость кода, испускаемого D, будет влиять только на время выполнения C, а не на время выполнения других программ, скомпилированных с C.
Написание компиляторов на языках, которые они компилируютэто было сделано в течение десятилетий (например, GCC написан на C) и не имеет никакого отношения к реальному вопросу, который, я думаю, вы задаете;JIT-компиляция также не использует язык сам по себе.В обоих случаях основное исполнение - это нечто иное, чем язык, который вы рассматриваете;обычно это машинный код.
Однако источником вашего вопроса является заблуждение.Python интерпретатор Python на самом деле не реализован в Python.Проект PyPy имеет интерпретатор для Python, написанный на RPython .RPython является подмножеством Python, выбранным так, чтобы его можно было эффективно компилировать в машинный код;как язык RPython намного больше похож на Java с выводом типа и отступом блоков вместо фигурных скобок.Проект PyPy также имеет компилятор для RPython, который написан на Python, и способен (в основном) автоматически добавлять JIT-компилятор в любой интерпретатор , который он компилирует.
Когда вы на самом делеиспользуя в работе интерпретатор PyPy, вы используете интерпретатор машинного кода, скомпилированный из исходных текстов RPython, так же, как при использовании интерпретатора CPython вы используете интерпретатор машинного кода, скомпилированный из исходного кода C.Если вы выполняете интерпретатор PyPy поверх другого интерпретатора Python (что можно сделать, потому что действительный код RPython также является допустимым кодом Python; но не наоборот), он будет работать намного медленнее, чем интерпретатор CPython.