Java zu Python Converter und umgekehrt ,kann man generell Code in Sprache x in Code der Sprache y maschinell übersetzen?

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);

0

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?

Woher ich das weiß:Berufserfahrung – Seit 20+ Jahren