Cuando alimentamos nuestro programa en Perl convencional, primero se compila en una representación interna o código de bytes; este bytecode luego se alimenta a un subsistema casi separado dentro de Perl para ser interpretado. Entonces, hay dos fases distintas de la operación de Perl:
Esto no es exclusivo de Perl. Otros lenguajes que siguen este diseño incluyen Python, Ruby, Tcl e incluso Java.
También sabemos que existe una máquina virtual Java (JVM) que es un entorno de ejecución independiente de la plataforma que convierte el código de bytes de Java en un lenguaje de máquina y lo ejecuta. Si comprende este concepto, comprenderá Parrot.
Parrotes una máquina virtual diseñada para compilar y ejecutar de manera eficiente bytecode para lenguajes interpretados. Parrot es el objetivo del compilador final de Perl 6 y se utiliza como backend para Pugs, así como para una variedad de otros lenguajes como Tcl, Ruby, Python, etc.
Parrot se ha escrito utilizando el lenguaje "C" más popular.