Java zu Python Converter und umgekehrt ,kann man generell Code in Sprache x in Code der Sprache y maschinell übersetzen?
Ich habe einige Lösungen in Java die ich gerne in Python haben würde und einige Lösungen in Python die ich gerne in Java hernehmen würde. Gibt es irgendeine Software die Skriptdateien maschinell übersetzen kann? Gibt es eine Software die das generell über alle Programmiersprachen kann?
2 Antworten
Nein.
Allein schon deswegen nicht da es zu unterschiedlichen Programmiersprachen auch andere Programmbibliotheken gibt, die völlig anders funktionieren. Einfach nur Syntax abändern reicht nicht. Und selbst das ist keine triviale Aufgabe, da Sprache X mehr/andere Sprachfeatures hat als Sprache Y, wo das dann erst mit Code gebaut werden muss. Und unterschiedliche Spracheigenschaften wie starke/schwache Typisierung sind auch noch zu berücksichtigen. Da kann ein Cross-Compiler teils gar nicht konvertieren, weil er im PHP-Code Variablen hat, die keinen Typ haben wobei die Zielsprache aber genau das wissen muss.
Es gibt aber auch einige Sonderfälle.
Alle .NET-Sprache basieren auf der selben Laufzeitumgebung (zu nennen wären hier vor allem C#, VB.NET und F#) mit der selben Klassenbibliothek. Hier wäre es vielleicht machbar, aber es wäre unsinnig, da die Assemblies sowieso miteinander kompatibel sind. Daher entwickelt man einfach den einen Code in C#, den anderen in VB und benutzt dann die daraus generierten DLLs wo man die Funktion braucht.
Dart (Googles JavaScript Alternative) wurde bereits so entworfen dass es einen Cross-Compiler gibt, der JavaScript ausspuckt. Ziel der Sprache ist eher eine einfacher zu schreibende Sprache zu erhalten die dann aber von allen Browsern unterstützt werden kann.
Ok aber das Problem mit der Typsierung halte ich für lösbar:
man schaut sich an welcher Typ bei der Initialisierung verwendet wird wird keine Operation angewendet die den Typ verändern könnte kann man das dirket so verwenden z.B. Python zu Java:
Python i=10
i+=1
print(i)
Java: int i=10; //je nach dem wie Gross i wird wählen wir entweder int oder long
i+=1;
System.out.println(i);
Wenn sich der Typ ändert kann man über Hilfsvariablen arbeiten, zB:
Python:
i=7
print(i)
i=i*"d"
print(i)
Java:
int i=7;
System.out.println(i);
String i1="ddddddd"; //so oft wird der Typ wohl hoffentlich nicht geändert. Das i*"d" kann das Übersetzerskript ja ausführen.
System.out.println(i1);
Einen interessanten Einblick in die Probleme die auftreten beim Übersetzen von einer Sprache in eine andere gibt http://www.joelonsoftware.com/articles/FogBugzIII.html. Da geht es speziell darum Code in (einer Untermenge von) ASP nach PHP zu übersetzen.
Da es Dir speziell um Java und Python geht: hast Du Jython in Erwägung gezogen?