Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Parrot fue iniciada en la comunidad Perl, pero se sigue desarrollando con la ayuda
de otras comunidades de código abierto. Como resultado, el proyecto está enfocado
en la compatibilidad entre las licencias GPL y Artistic, la compatibilidad de
plataformas (Unix, Microsoft Windows, Mac OS X y Mac OS Classic, VMS, Windows CE,
Palm OS y otros), la compatibilidad entre arquitecturas (x86, IA-64, PowerPC,
SPARC, MIPS, Alpha, ARM, entre otros), la velocidad de ejecución, la reducción de
su tamaño (cerca de 700k dependiendo de la plataforma), y en dotarla con la
suficiente flexibilidad para soportar lenguajes como Perl 6, Python, Tcl, Ruby,
Scheme y otros lenguajes dinámicos. El proyecto también está enfocado en mejorar
las capacidades de introspección, depuración y modulación semántica en tiempo de
compilación, de esta máquina virtual.
La versión 1.0, con una API estable para desarrollo, fue lanzada el 17 de marzo de
2009.1
Índice
1 Historia
2 Lenguajes
2.1 Lenguajes estáticos y dinámicos
2.2 Conceptos funcionales
2.3 Herramientas del compilador
2.4 Lenguajes clientes existentes
2.5 Posibles lenguajes futuros y proyectos
3 Interioridades
4 Ejemplos
4.1 Registros
4.2 Operaciones aritméticas
5 Cultura
6 Licencia
7 Referencias
8 Véase también
9 Enlaces externos
Historia
El proyecto comenzó para implementar Perl 6 y originalmente tenía el nombre
bastante obtuso de "El software que estamos escribiendo para ejecutar Perl 6". El
nombre Parrot viene de una broma de pescado de abril (April fools' day) en la cual
se anunciaba un lenguaje hipotético llamado Parrot que unificaría Python y Perl
[1]. El nombre fue más tarde adoptado por este proyecto, que tiene como objetivo
soportar tanto Perl como Python. Varios pequeños lenguajes se están desarrollando
también teniendo como base la máquina virtual Parrot.
Lenguajes
El objetivo de la máquina virtual Parrot es hospedar lenguajes clientes, y permitir
la interoperación entre ellos. Existen un conjunto de problemas que resolver para
conseguir este objetivo.
Conceptos funcionales
Parrot tiene un amplio soporte para un conjunto de características de programación
funcional, incluyendo clausuras y continuaciones, que son especialmente difíciles
de implementar de forma correcta y portable, especialmente en conjunción con el
manejo de excepciones e hilos de ejecución. La mayor ventaja es la expansibilidad
dinámica de objetos con métodos (PMC) y operaciones genéricas. Implementar
soluciones a estos problemas a nivel de la máquina virtual previene la repetición
de esfuerzos en la resolución de esos problemas en los lenguajes cliente
individuales.
Interioridades
El código Parrot presenta tres formas. Códigos de byte interpretados de forma
nativa por Parrot. Lenguaje Ensamblador de Parrot (Parrot Assembler - PASM) que es
el lenguaje de bajo nivel que se compila a códigos de byte. Representación
Intermedia de Parrot (Parrot Intermediate Representation - PIR) es un lenguaje de
un nivel ligeramente más alto que PASM y que también se compila a códigos de byte.
Es el objetivo primario de las implementaciones de los diversos lenguajes. PIR
gestiona de forma transparente las convenciones de llamada entre rutinas de Parrot,
provee una sintaxis mejorada, asigna y reasigna registros, entre otras cosas. El
código PIR es guardado normalmente en ficheros con el sufijo ".pir".
Ejemplos
Registros
Parrot está basado en registros, como la mayoría de las CPUs en hardware, y a
diferencia de la mayoría de las máquinas virtuales, que están basadas en pilas.
Parrot provee cuatro tipos de registros:
Operaciones aritméticas
En PASM
set I1, 4
inc I1 # I1 es ahora 5
add I1, 2 # I1 es ahora 7
set N1, 42.0
dec N1 # N1 es ahora 41.0
sub N1, 2.0 # N1 es ahora 39.0
print I1
print ", "
print N1
print "\n"
end
En PIR
Las discusiones acerca del desarrollo tienen lugar de forma primordial en la lista
de correa de portadores de Perl, alojada en perl.org. Además, hay encuentros
semanales moderados para los desarrolladores de Parrot y de sus lenguajes alojados
en #parrotsketch en irc.perl.org. El canal #parrot en esa misma red es visitado a
menudo por los programadores de Parrot.
Licencia
Parrot es un proyecto de software libre, distribuido bajo los mismos términos que
Perl, es decir, licenciado de forma dual bajo la Licencia Pública General de GNU y
bajo la Licencia Artística.
Referencias
«Parrot Roadmap». Parrot Foundation. 20 de noviembre de 2008. Consultado el 20 de
noviembre de 2008.