2010-12-16 20 views
8

Estaba pensando en usar Haxe por su capacidad de lenguaje cruzado, pero no estaba seguro de si era lo mejor para esta tarea. Voy a escribir una biblioteca genérica que debería poder usarse en los idiomas de destino y estar documentada (capaz de aplicar algo como doxygen). Para decirlo de otra manera, me gustaría escribir una biblioteca genérica en Haxe, generar código C++ (y Java una vez hecho), y tenerlo accesible para otros programadores. (Legible para algo más que el compilador C +) ¿Es este el La mejor opción para esta tarea, ¿o sería mejor si solo escribiera una versión de la biblioteca para cada idioma?¿Haxe funcionaría para crear bibliotecas?

Respuesta

3

Haxe no está diseñado para escribir bibliotecas de lenguajes cruzados, a pesar de que se puede hacer y lo he visto algunos ejemplos que funciona:

  • polygonal, una estructura de datos y motor de física utilizable en Haxe y AS3.
  • verb, una biblioteca CAD basada en NURBS que se puede usar en Haxe y JS.
  • daff, una biblioteca para comparar tablas, que se puede usar en JS, Python, Java, C#, C++, Ruby y PHP.

Sin embargo, para C++ específicamente, puesto que hxcpp genera una gran cantidad de Haxe cosas específicas, incluyendo GC, es posible que tenga un montón de limpieza o que no es trivial de usar. Puede preguntar en la lista de correo de Haxe.

+1

¿Qué marcos o enlaces de idioma se recomiendan, entonces, para escribir bibliotecas de idiomas cruzados? –

+1

Si Haxe no está diseñado para escribir bibliotecas de idiomas cruzados, ¿existen mejores herramientas para este fin (o es Haxe generalmente la mejor herramienta para este propósito)? –

+0

muy viejo Q pero espero acero para una buena respuesta/tip –

7

Claro que es posible, aunque puede haber cierta incomodidad dependiendo de la plataforma elegida.

En JavaScript, neko y Flash, el código generado está muy cerca de los nativos, y la gente podrá usarlo sin siquiera saber que se generó en Haxe.

En PHP, me temo que no sé muy bien cómo funciona. Pero hay algunos hacks de espacios de nombres que son un poco incómodos, pero creo que estos podrían resolverse envolviendo la biblioteca con código escrito a mano.

En C++, si no te importa con un pequeño código repetitivo para permitir que la reflexión funcione, funcionará principalmente bien. Tiene una forma no estándar de tratar con los constructores, y también debes tener mucho cuidado ya que tiene un gc adjunto, y no sé qué tan bien maneja tener referencias de retención de código externo que no conoce.

Acerca de los nuevos objetivos: C# y Java interoperarán al 100% con el código nativo. La mayoría de las características de Haxe están mapeadas en las capacidades nativas de las plataformas, con la excepción de los delegados. Pero si no expones a los delegados en tu interfaz, está bien. También generarán un código repetitivo para permitir una rápida reflexión en esas plataformas, pero habrá formas de desactivarlo si sabes lo que estás haciendo.

+0

¿Puedes aclarar a qué te refieres con "gc" en C++? –

+0

@Anderson Me refería a la recolección de basura;) – Waneck

+0

Estoy confundido por esta frase: 'C# y Java interoperarán al 100% con el código nativo. ¿A qué se refiere el" código nativo "en este caso? –

Cuestiones relacionadas