Цитата:
php версии с 3 компилируемый. Javascript тоже, давно компилируется.
Jit - это хорошо, но это не совсем компиляция в "традиционном" виде. Все Jit-компилируемые языки получают популярность за счет своей управляемости. При выполнении происходит просто невообразимое количество проверок по каждому чиху, поиска чего-либо при каждом вызове (да, результат кешируется, но все же), повсюду куча этой вашей абстрактности и виртуальности (половина кода вызывается через vftable) и прочих чудес инженерной мысли. А потому даже после докомпилирования из внутреннего представления в асму приложение уйму времени проводит в недрах виртуальной машины, что не лучшим образом сказывается на производительности.
Jit-средам не надо генерировать быстрый код, нужно только убедить всех, что код быстрый, с помощью синтетических тестов. Где-то были статьи, что тот же C# крайне фигово умеет делать инлайны, не особо любит разворачивать циклы - короче не умеет базовые вещи оптимизатора. Хотя ссылку уже не найду.
Конечно, jit во много раз быстрее, чем прямая интерпретация, но до скорости обычного компилируемого кода с нормальным оптимизатором на реальных приложениях ему далеко. В первую очередь из-за чрезмерно активной работы с памятью, когда это не шибко нужно, и из-за постоянных проверок на все случаи жизни, чтобы ничего никогда не могло упасть. А если работу с памятью, все проверки и поиск выпилить, то все эти php с javascript'ами и прочими C#-ами превратятся в тот же пресловутый Си. Да, они действительно станут полностью компилируемыми в "традиционном" смысле, но что толку-то.
Потому я полностью согласен с
Freeman'ом по поводу определения компилируемости. Наличия кусочков асмы где-то во время выполнения не достаточно.