но как он будет запустится)?
Ему же нужен будет интерпретатор.
Смотри. Я беру такой и на луа пишу парсер луа кода, который делает байткод и начинает его выполнять )) Программа "сишного интерпретатора" будет запускать луа интерпретатор, который запустит программу на луа которая будет интерпретировать код на луа.
Так же как Golang написан на Golang.
Ну так интерпретировать грубо говоря можно любой язык на любом языке. Очевидно, что где-то в конце пути там всё равно сишка, но она отрабатывает по отношению к интерпретатору pypy как ВМ. Хотя и верно, что в конце концов ВМки раскрываются до сишной ВМ, которая в свою очередь исполняется на ВМ в виде тандема ОС/ЦПУ
Это понятно, я про то, что Python на Python ему для запуска нужен Python, смылс от этого.
Да, я знаю что написать можно.
Забавно , но реализация Pypy в N раз быстрее оригинала. Как то так.
Ну только если он компилирует программу
Текущая реализация, потому что СЕЙЧАС pypy транслирует таки код на питоне в сишку и компилит. Считай что это самокомпилируемая реализация.
Он тоже вроде компилируемый.
Получается меня запутали. Написали блин, что интерпретатор Python на Python написали, я вот и думал зачем. А тут оказывается PyPy реализация Python транслирующаяся в си и компилирующаяся в машинный код.
Ну так иерархия исполнения. Нет ничего удивительного в том, что Код луа/си транслировался в код ВМ1, тот в код ВМ2,...., а тот в автокод или выполнялся существующими порциями машкода, т.е. скомпилированной сишной ВМ. Более того так джава уже лет 20 живёт - Java -> байткод JVM -> собранная к машине JVM. Просто нужно понять, что языки пишут не под процессоры, а под виртуальные машины, а реализована эта ВМ программно или аппаратно - это другой вопрос
Обсуждают сегодня