2010-12-16 9 views
8

Ich dachte daran, Haxe für seine sprachübergreifende Fähigkeit zu verwenden, war sich aber nicht sicher, ob es für diese Aufgabe am besten geeignet war. Ich werde eine generische Bibliothek schreiben, die in den Zielsprachen verwendet und dokumentiert werden kann (in der Lage, etwas wie doxygen anzuwenden). Um es anders auszudrücken, würde ich gerne eine generische Bibliothek in Haxe schreiben, C++ - Code (und Java, sobald es fertig ist) ausgeben und es anderen Programmierern zugänglich machen (lesbar für mehr als nur den C + Compiler) die beste Wahl für diese Aufgabe, oder wäre es besser, wenn ich nur eine Version der Bibliothek für jede Sprache geschrieben hätte?Würde Haxe für die Erstellung von Bibliotheken arbeiten?

Antwort

3

Haxe ist nicht für das Schreiben von sprachübergreifende Bibliotheken entwickelt, obwohl es getan werden kann, und ich habe ein paar Beispiele gesehen, dass es funktioniert:

  • polygonal, eine Datenstruktur und Physik-Engine verwendbar in Haxe und AS3.
  • verb, eine NURBS-basierte CAD-Bibliothek, die in Haxe und JS verwendet werden kann.
  • daff, eine Bibliothek zum Vergleichen von Tabellen, verwendbar in JS, Python, Java, C#, C++, Ruby und PHP.

jedoch für C++ speziell, da hxcpp erzeugt viel Haxe spezielle Sachen, einschließlich GC, es viel Bereinigung benötigen oder es ist nicht trivial zu verwenden. Sie können in der Haxe Mailing-Liste fragen.

+1

Welche Frameworks oder Sprachbindungen werden dann für das Schreiben von sprachübergreifenden Bibliotheken empfohlen? –

+1

Wenn Haxe nicht für das Schreiben von sprachübergreifenden Bibliotheken gedacht ist, gibt es dann bessere Werkzeuge für diesen Zweck (oder ist Haxe im Allgemeinen das beste Werkzeug für diesen Zweck)? –

+0

sehr alt Q aber ich hoffe auf gute Antwort/Tipp –

7

Sicher ist es möglich, obwohl es abhängig von der gewählten Plattform einige Ungeschicklichkeit geben könnte.

In JavaScript, Neko und Flash ist der generierte Code sehr nah an den nativen und die Leute können ihn verwenden, ohne zu wissen, dass er in Haxe generiert wurde.

Auf PHP, ich fürchte, ich weiß nicht sehr gut, wie es funktioniert. Aber es gibt einige Namespace-Hacks, die ein wenig peinlich sind, aber ich denke, dass diese gelöst werden könnten, indem die Bibliothek mit handgeschriebenem Code umschlossen wird.

In C++, wenn es Ihnen nichts ausmacht mit ein wenig Boilerplate-Code zu ermöglichen, dass Reflexion funktioniert, wird es meistens in Ordnung funktionieren. Es hat eine nicht-standardmäßige Art, mit Konstruktoren umzugehen, und Sie sollten auch sehr vorsichtig sein, da ein GC an sie angehängt ist, und ich weiß nicht, wie gut es mit externem Code umgehen kann, der Referenzen enthält, von denen es nichts weiß.

Über die neuen Ziele - C# und Java werden 100% mit nativem Code zusammenarbeiten. Die meisten Haxe-Funktionen sind den nativen Funktionen der Plattformen zugeordnet, mit Ausnahme der Delegierten. Aber wenn Sie keine Delegierten in Ihrer Schnittstelle verfügbar machen, ist es in Ordnung. Sie werden auch einige Boilerplate Code generieren, um schnelle Reflexion auf diesen Plattformen zu ermöglichen, aber es gibt Möglichkeiten, dies zu deaktivieren, wenn Sie wissen, was Sie tun.

+0

Kannst du klarstellen, was du mit "gc" in C++ meinst? –

+0

@Anderson Ich meinte Garbage Collection;) – Waneck

+0

Ich bin verwirrt von diesem Satz: 'C# und Java wird 100% mit nativem Code zusammenarbeiten.Was bezieht sich" native Code "in diesem Fall? –

Verwandte Themen