Andere haben ausgezeichnete Antworten gegeben, was mir bleibt, ist zu erklären, was "dynamische" Sprachen eigentlich bedeuten.
Im Kontext einer virtuellen Maschine bedeutet dies, dass der Typ einer Variablen zur Kompilierzeit nicht bekannt ist. In "statischen" Sprachen ist der Typ (oder zumindest eine Elternklasse davon) zur Kompilierungszeit bekannt, und viele Optimierungen bauen auf diesem Wissen auf.
Auf der anderen Seite wissen Sie vielleicht in dynamischen Sprachen, ob eine Variable einen Containertyp (wie ein Array) oder einen Skalar (String, Zahl, ...) enthält, aber Sie haben viel weniger Typinformationen zur Kompilierzeit.
Ein weiteres Merkmal ist, dass dynamische Sprachen normalerweise Typkonvertierungen viel einfacher machen, zum Beispiel in Perl und Javascript, wenn Sie eine Zeichenkette als Zahl verwenden, wird sie automatisch in eine Zahl umgewandelt.
Parrot wurde entwickelt, um solche Operationen einfach und schnell zu machen und Optimierungen zu ermöglichen, ohne dass beim Kompilieren Typinformationen bekannt sind.
Ein weiterer Import sein Ant Point zu erwähnen ist, dass Parrot Register-basierten Intad Stack-basierte ist, im Gegensatz zu JVM und CLR. Dies kann theoretisch die Optimierung erleichtern, da wir viel mehr Erfahrung mit registerbasierten Systemen haben. –
Cody: Du solltest das posten, damit ich deinen Kommentar +1 geben kann. :-) –
Eigentlich hatte Papagei jit, zumindest für x86 Systeme, schon eine Weile. –