Seite 1 von 1

Python - Java - leJOS

Verfasst: Montag 13. Juni 2011, 09:55
von robert2
Hallo,
Ich habe Erfahrungen mit Python aber auch mit Java . Ich weiß, dass es möglich ist mit Python ein Java Programm zuschreiben nämlich über:

Code: Alles auswählen

f = open("java.java", 'w')
f.write("Hier währe der Java Code")
f.close()
Die allgemeine Schwierigkeit währe aber das Java Programm zu starten, was (bei Windows) mit dem Befehl 'Javac + *java.java*' die Grundlage währe, da es den Compiler startet.

Es gibt von LEGO das Modul leJOS (lego Java Operation System) welches ein Java Programm für den, von Lego entwickelten, NXT übersetzt und dort ausführt.
Die Frage währe also, schafft man es ein Programm mit Python zu schreiben, welches ein Java Programm schreibt, dass die leJOS Module beinhaltet, dann auf denn NXT spielt und dort ausführt?

Re: Python - Java - leJOS

Verfasst: Montag 13. Juni 2011, 10:08
von deets
Puuhh, das ist aber eine der eher uneleganteren Varianten von Java-mittels-Python. Und letztlich nicht so richtig praktikabel.

Reicht nicht sowas hier?

http://code.google.com/p/nxt-python/

Alternativ kannst du auch einfach Jython nehmen, dann kannst du Python-code generieren, der einfach von der JVM ausgefuehrt wird, und alle leJOS Bibliotheken benutzen kann.

Re: Python - Java - leJOS

Verfasst: Montag 13. Juni 2011, 10:45
von BlackJack
@robert2: Falls die Frage nur ist wie man externe Programme ausführt, wie zum Beispiel den Java-Compiler, dann schau Dir mal das `subprocess`-Modul aus der Standardbibliothek an.

Re: Python - Java - leJOS

Verfasst: Montag 13. Juni 2011, 11:19
von sma
Natürlich könnte man einen Compiler schreiben, der (eine Teilmenge von) Python in Java-Quelltext übersetzt, um diesen dann weiter zu verarbeiten. Das ist jedoch alles andere als einfach, wenn man auf Reflections verzichten will, da Java eine statische getypte Sprache ist und Python keinerlei Typannotationen hat. Man kann zum Teil die Typen inferieren, doch das ist nicht ausreichend, da das implizite Typsystem von Python mächtiger wäre, als was mit Java statisch abbildbar ist.

In jedem Fall ist der Ansatz mit "print" in eine Datei ein bisschen zu naiv. Ich würde empfehlen, das "ast"-Modul von Python zu benutzen, um aus einem Python-Quelltext einen sogenannten abstrakten Syntaxbaum zu generieren, den man dann ablaufen kann und daraus entweder sofort Java-Code generiert, oder diesen einen einen AST für Java umwandelt, den man dann in eine Datei serialisiert. Ich bin mir sicher, ich habe zu diesem Thema schon mal was hier geschrieben, hier z.B. http://www.python-forum.de/viewtopic.php?f=6&t=22954

Stefan


PS: Bitte kein h in wäre

Re: Python - Java - leJOS

Verfasst: Montag 13. Juni 2011, 11:26
von BlackJack
@sma: Wo liest Du aus der Frage denn heraus dass Python-Quelltext in Java übersetzt werden soll!? Ich habe es so verstanden, dass innerhalb des Python-Programms schon Java-Quelltext als Daten steht.

Re: Python - Java - leJOS

Verfasst: Mittwoch 15. Juni 2011, 11:03
von robert2
deets hat geschrieben:Puuhh, das ist aber eine der eher uneleganteren Varianten von Java-mittels-Python. Und letztlich nicht so richtig praktikabel.

Reicht nicht sowas hier?

http://code.google.com/p/nxt-python/

Alternativ kannst du auch einfach Jython nehmen, dann kannst du Python-code generieren, der einfach von der JVM ausgefuehrt wird, und alle leJOS Bibliotheken benutzen kann.
Danke, ich glaube wir reden die selbe Sprache :D

Re: Python - Java - leJOS

Verfasst: Donnerstag 16. Juni 2011, 07:55
von mkesper
Entsprechender wäre wohl pynxc.
Wäre es eventuell sogar denkbar, Cython auf dem Brick laufen zu lassen?

Re: Python - Java - leJOS

Verfasst: Donnerstag 16. Juni 2011, 09:38
von deets
mkesper hat geschrieben:
Entsprechender wäre wohl pynxc.
Ah, wahrscheinlich, wusste nicht, dass das Java auf dem Brick selbst laeuft.
Wäre es eventuell sogar denkbar, Cython auf dem Brick laufen zu lassen?
Bezweifele ich, denn Cython produziert C, nicht diesen C-Dialekt. Und wenn der pynxc das eh ausspuckt, ist der selbst ja schon so eine Art Cython.

Re: Python - Java - leJOS

Verfasst: Samstag 18. Juni 2011, 13:30
von sma
BlackJack hat geschrieben:@sma: Wo liest Du aus der Frage denn heraus dass Python-Quelltext in Java übersetzt werden soll!? Ich habe es so verstanden, dass innerhalb des Python-Programms schon Java-Quelltext als Daten steht.
Öh, vielleicht habe ich gelesen, was ich lesen wollte :) Da ist dann aus "mit Python ein Java Programm zuschreiben" die Aussage "in Python ein Java-Programm zu schreiben" = "Python in Java zu übersetzen" geworden.

Stefan