C++ zu Java
-
Gibt es eine Möglichkeit ein C++ Programm zu Java zu machen?
Gruß Ulf
-
uan schrieb:
Gibt es eine Möglichkeit ein C++ Programm zu Java zu machen?
Gruß Ulfmir sind keine automatischen übersetzer bekannt. und ich glaube auch nicht, daß ausreichend bedarf danach besteht, daß einer mal so ein teil bastelt.
-
und meines wissens sind c++ und java eh zu fast 90% identisch, da sollte es doch, natürlich je nach laenge des quelltextes, kein problem sein, daß selber umzuschreiben
-
Sternenstaub schrieb:
und meines wissens sind c++ und java eh zu fast 90% identisch, da sollte es doch, natürlich je nach laenge des quelltextes, kein problem sein, daß selber umzuschreiben
Ich würde das bei 30% ansiedeln. Java arbeitet zum Beispiel nur mit Pointern bei eigenen Datentypen, während es bei C++ guter Stil ist, nicht mit Pointern zu arbeiten. Das alles umzustellen ist keine einfache Aufgabe.
-
Ich behaupte einfach mal das der Hauptgrund, warum es da nahezu keine Tools gibt ,einfach die Tatsache ist, dass der Sprachumfang von Java kleiner ist als der von C++ und so eine Transformation nicht vollständig funktionieren kann. Von Java nach C++ ist das eher möglich.
-
30%... 90%.... welche wissenschaftlichen Studien habt ihr euch reingezogen? Wenn man es richtig macht, geht man in Java ganz andere Wege als C++.
-
interpreter schrieb:
Ich behaupte einfach mal das der Hauptgrund, warum es da nahezu keine Tools gibt ,einfach die Tatsache ist, dass der Sprachumfang von Java kleiner ist als der von C++ und so eine Transformation nicht vollständig funktionieren kann. Von Java nach C++ ist das eher möglich.
Nunja, die meisten vorhandenen Compiler machen es eigentlich gerade so, dass sie die umfangreichere Sprache auf die beschränktere abbilden. Ich meine wenn mein gcc mir aus meinen C++-Programm Maschinencode macht, dann würde ich nicht sagen, dass meine Athlon-Maschinensprache den größeren Sprachumfang hat
-
interpreter schrieb:
Ich behaupte einfach mal das der Hauptgrund, warum es da nahezu keine Tools gibt ,einfach die Tatsache ist, dass der Sprachumfang von Java kleiner ist als der von C++ und so eine Transformation nicht vollständig funktionieren kann. Von Java nach C++ ist das eher möglich.
Andersrum ist es genauso unmöglich, bzw. genauso aufwändig, weil man unglaublich viel aus Java nachbilden muss. Zum Beispiel Reflection und nen Java-Compiler. Das ist genausowenig trivial.
-
Hallo,
es gibt Tools, die dir aus C++ Code UML Diagramme erstellen, woraus du dann wiederum JAVA Code generieren kannst. Aber in wieweit die Qualität dabei ausreichend ist und besondere Sprachmerkmale berücksichtigt werden (können), weiss ich nicht.
-
Gregor: Die Reflection müsste relativ einfach zu realisieren sein, wenn man eien Codegenerator zur Verfügung hat. Der normale Compiler baut einem das nicht, das ist klar, aber ein Umwandlungstool sollte dazu in der Lage sein.
Was ich als großes Problem ansehen würde, ist, dass C++ keinen GC hat.
-
Bashar schrieb:
Was ich als großes Problem ansehen würde, ist, dass C++ keinen GC hat.
Das Tool kann ja für alle Speicherallokationen einen der verfügbaren C++ Garbage Collectoren benutzen.
-
Ich denke die Frage ist auch welche Qualität man vom übersetzen Code erwartet. Ein einfacher Übersetzer könnte z.B. die Übersetzung so erledigen:
Definiere einen String der das C++-Programm enthält, füge ein (immer gleiches) Java-Programm an, das einen C++-Interpreter implementiert.... natürlich kann man eine Übersetung von Java nach C++ genauso implementieren.
Aber natürlich wird sicher niemand meinen, dass das nun ein toller C++-zu-Java-Übersetzer wäre. Aber als Beispiel, dass es nicht unmöglich ist, kann es durchaus herhalten.
-
Ponto schrieb:
Bashar schrieb:
Was ich als großes Problem ansehen würde, ist, dass C++ keinen GC hat.
Das Tool kann ja für alle Speicherallokationen einen der verfügbaren C++ Garbage Collectoren benutzen.
Stelle nie in Frage, was Bashar sagt. Ich stimme ihm übrigens zu.
-
Gregor schrieb:
interpreter schrieb:
Ich behaupte einfach mal das der Hauptgrund, warum es da nahezu keine Tools gibt ,einfach die Tatsache ist, dass der Sprachumfang von Java kleiner ist als der von C++ und so eine Transformation nicht vollständig funktionieren kann. Von Java nach C++ ist das eher möglich.
Andersrum ist es genauso unmöglich, bzw. genauso aufwändig, weil man unglaublich viel aus Java nachbilden muss. Zum Beispiel Reflection und nen Java-Compiler. Das ist genausowenig trivial.
Ich habe nie bestritten, dass es schwer ist. Ich sagte lediglich, dass es anders herum einfacher ist. Ein Studienkollege schreibt in seiner Diplomarbeit übrigens gerade einen Java->C++ Compiler.
-
Ihr vergesst da was ganz wichtiges: die Bibliotheken
-
SirLant schrieb:
Ihr vergesst da was ganz wichtiges: die Bibliotheken
Wieso?
-
Optimizer schrieb:
Ponto schrieb:
Bashar schrieb:
Was ich als großes Problem ansehen würde, ist, dass C++ keinen GC hat.
Das Tool kann ja für alle Speicherallokationen einen der verfügbaren C++ Garbage Collectoren benutzen.
Stelle nie in Frage, was Bashar sagt. Ich stimme ihm übrigens zu.
Und was kann man mit den C++ Garbage Collectoren nicht machen. Das einzige Problem könnten finalize Methoden sein. Aber auch das ist eigentlich kein großes Problem.
-
Du scheinst nicht so wirklich Ahnung davon zu haben. Finalizer sind vermutlich das geringste Problem. Es ist in C++ nicht so ohne weiteres möglich, mit Sicherheit alle nicht referenzierten Objekte zu erkennen, außer du nimmst strengste Einschränkungen in Kauf wie z.B. dass du forderst, dass alle Klassen von deiner GC-Klasse ableiten ö.a.
Das ist auch nur die Spitze des Eisbergs.
Außerdem glaube ich sowieso nicht, dass Bashar technische Probleme gemeint hat, sondern einfach Probleme, die sich aus der unterschiedlichen Art der Programmierung ergeben, mit und ohne GC, C++ und Java.
-
Optimizer schrieb:
Stelle nie in Frage, was Bashar sagt.
Oh doch, ich bitte darum.
Ich stimme ihm übrigens zu.
Vielleicht muss ich über meine Aussage nochmal nachdenken ;->
-
Optimizer schrieb:
Du scheinst nicht so wirklich Ahnung davon zu haben. Finalizer sind vermutlich das geringste Problem. Es ist in C++ nicht so ohne weiteres möglich, mit Sicherheit alle nicht referenzierten Objekte zu erkennen, außer du nimmst strengste Einschränkungen in Kauf wie z.B. dass du forderst, dass alle Klassen von deiner GC-Klasse ableiten ö.a.
Das ist auch nur die Spitze des Eisbergs.
Außerdem glaube ich sowieso nicht, dass Bashar technische Probleme gemeint hat, sondern einfach Probleme, die sich aus der unterschiedlichen Art der Programmierung ergeben, mit und ohne GC, C++ und Java.Es geht darum, Java automatisch nach C++ zu konvertieren. Da kann man ganz leicht auf Situationen verzichten, die den Garbage Collector durcheinander bringen. Hast du dir mal den Boehm GC angeschaut. http://www.hpl.hp.com/personal/Hans_Boehm/gc/. Da muss auch nicht alles vom GC ableiten.
-
Der entdeckt auch nicht alle unreferenzierten Objekte. Steht sogar im ersten Satz schon drin.
Im übrigen wäre diese Ableitung noch das kleinste Problem. Der GC muss auch bei Funktionsaufrufen wissen, wo im Stack Frame Pointer zu finden sind.
Da ich diese Informationen auch von Bashar hab, zweifelst du sie besser nicht an.Bashar schrieb:
Vielleicht muss ich über meine Aussage nochmal nachdenken ;->
Wird dir nichts nützen, dann werde ich deine neue Aussage auch assimilieren.