Грамотно (без грязных хаков) написанная программа, не использующая либы, гвоздями прибитые к какой-то одной ОС, сравнительно без проблем компилируется под любую архитектуру.
Вон в жабе, говорят, джит в рантайме перекомпилит байткод в нативный, C# наверняка тоже самое. Для питона пилят пипи. Видать потому что это более сложно и не всем под силу. Ну и зависит также и от языка, видимо для динамическитипизируемых это сделать сложнее... :/
что будет работать быстрее? JIT компилирует байткод в нативные коды непосредственно во время запуска, единственное на что он таким образом влияет - скорость подъёма рантайма. ну так и сколько-нибудь серьёзное приложение на C или C++ потянет за собой неплохой рантайм
Да хоть там 10 раз JIT, если я скомпилирую зараннее 1 раз и буду запускать потом полученный бинарник, работать он будет быстрее, чем если байткод будет обрабатываться интерпретатором.
Она еще лимитируется алгоритмом. При исполнении байткода интерперетатор разбирает код, затем выполняет команды на процессоре. При исполнении бинарника разбирать код уже не надо, а команды напрямую скармливаются процессору.
Почему языки, компилируемые в байткод, не компилируют в нативные команды?
Простота реализаци
Быстрее же будет.
Очень, очень сомнительно. В байт-код обычно компилируются динамически типизированные языки (да, Ява - исключение). Для таких языков «тупой» перевод в машинный код не дает выигрыша, а «умный» перевод стал практически применимым только сегодня (да, спасибо галерке за напоминание о Strongtalk).
ты, кажется, вообще не представляешь себе что такое JIT
если я скомпилирую зараннее 1 раз и буду запускать потом полученный бинарник
то получишь преимущество в скорости запуска приложения, и потенциальное проседание, если платформа, под которую ты компилировал, и под которой запускаешь, не совпадают (хоть и совместимы). это tradeoff