2010-11-27 50 views
6

He estado pendiente de Parrot por un tiempo. Entiendo que es una máquina virtual diseñada para ejecutar una variedad de idiomas dinámicos y para permitir cierto grado de interoperabilidad (por ejemplo, llamar a una función Perl desde un script de Python). Entonces, mi pregunta es en dos partes:Parrot - ¿Puedo usarlo? ¿Y cómo?

  1. ¿Loro está listo para uso general? Puedo ver lanzamientos, pero no es obvio si es algo que funciona bien ahora, o todavía es un trabajo en progreso.
  2. ¿Hay alguna documentación sobre cómo usar Parrot? He visto enlaces en preguntas anteriores, pero toda la documentación que puedo encontrar habla sobre los distintos niveles del código específico de Parrot (PIR, PASM, etc.) o sobre cómo agregar soporte para más idiomas. Eso es genial, pero ¿cómo puedo ejecutar el código en los idiomas existentes en Parrot? ¿Y cómo uso el código escrito en otro idioma?

Finalmente, no quiero iniciar una guerra de llama, pero sé que Parrot está atado con Perl 6. Prefiero Python. Entiendo que Python es un lenguaje compatible, pero de manera realista, ¿se lo percibe como una VM multilingüe, o es un intérprete de Perl 6 con otros idiomas incluidos como curiosidades?

Respuesta

9

Principalmente soy desarrollador de Python, por lo que soy parcial. Pero probablemente en la misma dirección que tú.

Parrot está destinado a ser una VM multilenguaje. Sus raíces de Perl a veces se muestran ("0" es falso, el lenguaje de arranque NQP es un subconjunto de perl), pero en el nivel de tiempo de ejecución es bastante independiente del lenguaje.

Dicho esto, la interoperabilidad entre idiomas no será del todo perfecta. Por ejemplo, el tipo String probablemente será utilizado como una base por todos los idiomas, pero un objeto Ruby probablemente necesite envoltorios (pero no proxies) para actuar pitónico. No hay historia para la interposición de objetos, al menos no hasta ahora.

El compilador de Python 3 "Pynie" tiene bastante camino por recorrer. Aquí está el repo http://bitbucket.org/allison/pynie. Tal vez te gustaría ayudar? En este momento es bastante joven, ni siquiera objetos.

Y para responder a su pregunta real:

  1. o menos. No es rápido y los lenguajes que se dirigen a él no están completos, pero no se colgará o dañará su memoria.
  2. Normalmente, escribe el código en su idioma de alto nivel favorito (Python) y compila su código .py para parrot (y desde allí, puede compilarlo en código nativo si lo desea). Otro desarrollador puede escribir su (6) código de Perl y compilarlo a repetir y, si los compiladores se han escrito con interoperabilidad en mente, usted será capaz de llamar a una función de Perl Python
+2

Así, al menos desde un punto de vista Python, suena como que es realmente en la 'idea interesante, comprobar de nuevo en un par de años de escenario? Me temo que realmente no tengo una picazón que me motive a rascar al ayudar a desarrollarla, pero estoy interesado en ver cómo resulta. –

3
  1. Se todavía está en proceso, pero es lo suficientemente maduro para implementadores de lenguaje y desarrolladores de biblioteca. Advertencia: algunos subsistemas están siendo rediseñados (recolección de basura, incrustación), por lo que podría haber algunos baches en el camino.

  2. Cada idioma necesita un compilador que genere el código que Parrot entiende. Estos compiladores se lanzan por separado. (Consulte http://trac.parrot.org/parrot/wiki/Languages) La mayoría de los idiomas dirigidos a Parrot se encuentran en un estado inicial incompleto, por lo que la interoperabilidad no es un gran problema en este momento. Parrot no es un intérprete de Perl 6, pero Rakudo Perl 6 es uno de los compiladores más desarrollados que apunta a Parrot.

Cuestiones relacionadas