2010-03-10 16 views
10

¿Sería posible integrar Python (y/o Perl) y Ruby? Miré http://www.goto.info.waseda.ac.jp/~fukusima/ruby/python/doc/ y http://code.google.com/p/ruby-perl/, pero ambos parecen bastante desactualizados.¿Sería posible integrar Python o Perl con Ruby?

¿Alguien ha generado una interfaz de Ruby para la API C de Python?

Editar: Python se puede integrar con muchos otros idiomas de acuerdo con http://wiki.python.org/moin/IntegratingPythonWithOtherLanguages. Sin embargo, esa lista no incluye a Ruby.

+2

¿Qué es exactamente lo que quieres hacer? Esto suena como un problema que podría abordarse mejor desde otro ángulo (como portar una biblioteca que falta en un idioma). – bta

Respuesta

4

La integración de lenguajes dinámicos es uno de los objetivos del proyecto Parrot. Es una máquina virtual a la que se dirigen los compiladores dinámicos de lenguaje. Una vez compilado en la misma máquina virtual, debería poder usar el formulario "objeto" en cualquiera de los idiomas sin importar el origen del objeto.

El problema por el momento, sin embargo, es estabilizar la máquina virtual y acabar con los compiladores hechos en su mayoría. Sin embargo, ese ha sido el estado por mucho tiempo. :)

+5

Curiosidades divertidas: Parrot comenzó como una broma del Día de los Inocentes anunciando la fusión de Python y Perl. –

2

Podría ser posible, pero no muy práctico. Sería significativamente más fácil transferir los módulos que necesita de uno a otro de lo que sería incorporar uno de los intérpretes dentro del otro.

Si tiene que usar ambos idiomas en un proyecto, su mejor opción sería la combinación de Jython y Jruby, o IronPython e IronRuby. No estoy seguro de si podría lograr que hablen entre sí, pero al menos podría alojarlos en la misma máquina virtual.

2

Para un proyecto de investigación, quería utilizar el fabuloso matplotlib que está disponible para Python. También encontré esa biblioteca a la que te refieres. Sin embargo, no parece algo popular y bien probado. Así que decidí escribir el guión que generaba gráficos usando Python puro y lo llamé desde Ruby a través de popen. Eso funcionó muy bien para mí.

+0

Estaba buscando algo más parecido al proyecto Ruby/Python de Masaki Fukushima, pero esa es una buena idea. Gracias. – Yktula

7

Mi escuela (Georgia Tech), junto con Bryn Mawr y Microsoft Research, están haciendo un proyecto en este momento llamado Pyjama. Básicamente, utiliza el Microsoft DLR para permitirle mezclar libremente Python y Ruby. No lo he intentado, pero suena muy bien.

Aquí hay un ejemplo del sitio web. Ingresas a la clase en "modo Python". Luego se compila y ejecuta el comando en "Modo Ruby".

class PythonClass: 
    def hello(self, value): 
     print "Python says hello to", value 

pc = python_class().new 
pc.hello "Ruby" 

Lo que produce "Python says hello to Ruby".

+0

Eso es interesante.Había escuchado que el DLR y Mono de Microsoft eran capaces de interoperabilidad en varios idiomas, pero no había visto un proyecto que lo usara. Gracias. – Yktula

2

Puede escribir extensiones del Ruby en C.

lo tanto, si Python tiene una API de C, puede escribir una extensión C para Ruby que utiliza esta API.

No sé nada sobre la API de Python o la cantidad de una pieza con la que desea integrarse, pero si no es demasiado grande, podría (posiblemente) darle la forma de ejecutar el código de Python de Ruby.

+1

Para usar la extensión C para Ruby debe usar el proyecto Ruby FFI - http://github.com/ffi/ffi –

+2

ffi no es un requisito, pero sí posibilita la integración con otras implementaciones de ruby ​​no MRI. –

+0

Es mucho más fácil de usar que Ruby/DL. Quiero intentar hacer esto más tarde con la API C de Python. Gracias. – Yktula

1

Otra estrategia, según lo utilizado por Facebook, es exponer las API a través de Thrift. Usted define las API de servicio livianas y las RPC son interprocesos.

Cuestiones relacionadas