Dies ist keine Frage mit einer kategorischen Ja- oder Nein-Antwort. Lassen Sie mich mit einer Anekdote abwägen.
Beispiel 1
Ich wurde beauftragt, ein in Java geschriebenes Spiel in Flash, AS3, zu portieren. An der Oberfläche hat dies das Potenzial, relativ reibungslos zu verlaufen. Schließlich könnten Sie einen solchen Job als eindeutiger als Ihre durchschnittliche Kundenarbeit ansehen, da Sie bereits eine vollständig integrierte Funktionsspezifikation in Form des Quellenspiels haben. Java und AS 3 sind beide Hochsprachen, und AS3 hat viele Merkmale gemeinsam mit Java, wie Paketstrukturen, einfache Vererbung / Mehrfachschnittstelle, starke Typisierung (Opt-in) und Vorstellungen von öffentlichen / geschützten / privaten Variablen und Funktionsdeklarationen. Zu der Zeit war ich in Java noch sehr grün und völlig neu in der ursprünglichen Quellcodebasis. Also habe ich einfach nachgesehen, was ich finden konnte, in der Hoffnung, dass es schnell und einfach gehen würde.
Wie sich herausstellte, hatte der Autor des Codes versucht, eine abstrakte Engine zu erstellen, die von Java in eine undefinierte andere Umgebung portiert werden konnte. Dies gab mir die Hoffnung, dass es einfach zu portieren wäre. Leider stellte ich stattdessen fest, dass ich die Aussicht auf eine Neuerfindung von Flash über Flash ohne die Vorteile von Threads in Betracht zog. Wie sich herausstellte, wäre ein buchstäblicher Hafen einfach eine schlechte Idee gewesen ... ein wahrer Albtraum. Darüber hinaus hat das Spiel eine eigene externe Skriptsprache implementiert, was bedeutet hätte, dass ein Parser und ein Lexer für diese Sprache erstellt wurden, wenn ich gehofft hätte, alle ursprünglichen Quellendatendateien zu verwenden.
Aus Zeit- und Budgetgründen hat der ursprüngliche Quellcode letztendlich nicht wirklich geholfen. Das Hilfreichste daran war, dass ich wusste, wie man den Kontrollfluss der Spiellogik genau nachahmt ... aber brauchte ich wirklich die Originalquelle dafür? Wahrscheinlich nicht.
Aber dieses Beispiel ist möglicherweise nicht so relevant, weil es die Umkehrung Ihrer Situation darstellt. Ich hatte gehofft, eine Codebasis zu verwenden, die ich nicht geschrieben hatte, in einer Sprache, die ich damals nicht kannte, um die Entwicklung in einer mir bestens vertrauten Umgebung zu beschleunigen. Also hier ist ein anderes Beispiel
Beispiel 2
Als ich feststellte, was der Java-Entwickler tat, um eine tragbare Codebasis zu erstellen, begann ich damit, in meiner Flash-Arbeit etwas Ähnliches zu tun ... Code zu schreiben, der nicht so sehr auf der Erweiterung von flash.display. und Komposition verwenden, um Ansichten zu erstellen. Ich verlasse mich nicht so sehr auf flash.event. * Und schreibe stattdessen ein einfaches System zur Nachrichtenübermittlung, das nicht speziell an eine Sprache oder Plattform gebunden ist. Ich habe kürzlich ein Spiel mit diesem Framework fertiggestellt und wollte herausfinden, ob es einfach ist, es auf C # (eine Sprache, die Java und AS3 ähnelt) als Unity 3D-Projekt zu portieren. Es stellte sich heraus, dass dies viel erfolgreicher war! Weil ich in AS3 fließender denke als in C #, hat es eine Menge Zeit gespart, die Algorithmen bereits geschrieben zu haben. Alles was ich tun musste, war einfach die Syntax zu ändern.
Also, nur aus meiner persönlichen Erfahrung, kann ich nicht sagen, dass die Antwort immer Ja oder Nein sein wird. Sie sollten berücksichtigen, inwieweit Sie von bestimmten Sprachausdrücken abhängig sind, die in der von Ihnen gewählten Hochsprache vorkommen, und ob die Neuerstellung in C einfach oder schwierig sein wird.