Ruby - Code in Python?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
paddy2706
User
Beiträge: 18
Registriert: Donnerstag 10. April 2008, 22:20

Ruby - Code in Python?

Beitragvon paddy2706 » Donnerstag 10. April 2008, 22:28

Hallo,

ich muss für ein Programm, das ich entwickle auf ein Ruby - Script zurückgreifen (flvtool2), da das python-modul (kaa.metadata) leider gelegentlich ein Problem mit flv-Videos hat.

Daher meine Frage: Gibt es eine Ruby-Bridge? Oder muss das script mit einem system call aufrufen und die rückgabe parsen?

Für Ruby kenne ich Python Bridges, leider nichts umgekehrtes.

Über einen Tipp würde ich mich sehr freuen :)
Gruß,

paddy
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Ruby - Code in Python?

Beitragvon Leonidas » Donnerstag 10. April 2008, 23:15

paddy2706 hat geschrieben:Für Ruby kenne ich Python Bridges, leider nichts umgekehrtes.

Wie machen die es denn?

Wenn du nicht Subprozesse starten willst, kannst du auch mittels JRuby und Jython oder IronRuby und IronPython Ruby-Code innerhalb von Python-Code ausführen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
paddy2706
User
Beiträge: 18
Registriert: Donnerstag 10. April 2008, 22:20

Beitragvon paddy2706 » Freitag 11. April 2008, 06:58

Danke für die Antwort. Ich habe keine ambitionen das ganze in einer Java-Anwendung laufen zu lassen oder solche Späße. Ich suche ganz einfach einen Interpreter, der Ruby - Code in Python nutzbar macht (Objekteigenschaften etc.)

Das Ruby/Python Projekt macht das für Ruby (http://raa.ruby-lang.org/project/ruby-python/). Ähnliche Projekte gibt es einige. Leider kann ich keine für Python finden, die dieser Aufgabe gerecht würden.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 11. April 2008, 10:49

Mir ist nichts dieser Art bekannt, aber ein C-Modul zu schreiben, dass Ruby embedded müsste eigentlich schon möglich sein. Das es sowas nicht gibt, liegt sicher unter anderem auch daran, dass es wenige Ruby-Bibliotheken gibt, die man in Python vermissen würde.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Samstag 12. April 2008, 09:50

Es bleibt natürlich immer noch die Möglichkeit, einen Ruby-Interpreter in Python zu schreiben. Entweder "from scratch" wie JRuby oder ähnlich wie HotRuby es macht. Dieses Projekt nutzt die Tatsache, dass Ruby 1.9 von einem rekursiven AST-Interpreter zu einem Bytecode-Interpreter mutiert ist und implementiert diese Bytecodes jetzt in Action- bzw. JavaScript. Witzigerweise ist der dort aufgeführte Benchmark sogar schneller als das Original-Ruby.

Ich weiß nicht, wie vollständig HotJava ist, aber die 1500 Zeilen sollten sich relativ schnell portieren lassen. Vielleicht läuft flvtool2 damit ja ;)

Stefan
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Montag 14. April 2008, 08:42

sma hat geschrieben:Es bleibt natürlich immer noch die Möglichkeit, einen Ruby-Interpreter in Python zu schreiben. Entweder "from scratch" wie JRuby oder ähnlich wie HotRuby es macht. Dieses Projekt nutzt die Tatsache, dass Ruby 1.9 von einem rekursiven AST-Interpreter zu einem Bytecode-Interpreter mutiert ist und implementiert diese Bytecodes jetzt in Action- bzw. JavaScript. Witzigerweise ist der dort aufgeführte Benchmark sogar schneller als das Original-Ruby.

Aber auch nur weil deren Benchmark kaputt ist. Mach aus der String concatenation irgendwas mit mehr Realworl Relevanz und das sieht gaaanz anders aus.

BTW ist ein eigener Bytecode Interpreter glaube ich der falsche Ansatz um Ruby in Python auszuführen. Ich denke das einfachste wäre einfach einen Proxy Datentyp mit der Python C-API zu erstellen, der ein Ruby Objekt in den Python Space weiterleitet. Ist beides C und Ruby hat nichtmal Refcounting, so schwer kann das also nicht sein.
TUFKAB – the user formerly known as blackbird

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder