Другие дали отличные ответы, поэтому мне остается объяснить, что означает «динамические» языки.
В контексте виртуальной машины это означает, что тип переменной неизвестен во время компиляции. В «статических» языках тип (или, по крайней мере, его родительский класс) известен во время компиляции, и многие оптимизации основываются на этих знаниях.
С другой стороны, в динамических языках вы можете узнать, содержит ли переменная тип контейнера (например, массив) или скаляр (строка, число, ...), но во время компиляции у вас гораздо меньше информации о типе.
Другая особенность заключается в том, что динамические языки обычно упрощают преобразование типов, например, в perl и javascript, если вы используете строку в виде числа, она автоматически преобразуется в число.
Parrot предназначен для упрощения и ускорения таких операций и обеспечения оптимизации без знания информации о типе во время компиляции.
Другим импортом Отметим, что Parrot основан на регистрации на основе стека, в отличие от JVM и CLR. Это теоретически может упростить оптимизацию, поскольку у нас гораздо больше опыта работы с системами на основе регистров. – 2008-09-22 23:07:56
Cody: Вы должны опубликовать это, чтобы я мог +1 ваш комментарий. :-) – 2008-09-22 23:09:18
На самом деле попугай имел jit, для систем x86, по крайней мере, какое-то время. – 2008-09-23 03:07:30