Quando alimentamos nosso programa em Perl convencional, ele é primeiro compilado em uma representação interna, ou bytecode; este bytecode é então alimentado em um subsistema quase separado dentro do Perl para ser interpretado. Portanto, existem duas fases distintas de operação do Perl:
Isso não é exclusivo do Perl. Outras linguagens que seguem esse design incluem Python, Ruby, Tcl e até mesmo Java.
Também sabemos que existe uma Java Virtual Machine (JVM) que é um ambiente de execução independente de plataforma que converte bytecode Java em linguagem de máquina e o executa. Se você entender esse conceito, entenderá o Parrot.
Parroté uma máquina virtual projetada para compilar e executar bytecode de maneira eficiente para linguagens interpretadas. Parrot é o alvo para o compilador Perl 6 final e é usado como backend para Pugs, bem como uma variedade de outras linguagens como Tcl, Ruby, Python etc.
Parrot foi escrito usando a linguagem mais popular "C".