haXe: metalenguaje para todos

Hace tiempo que vi este lenguaje de pasada y no le presté mucha atención, pero hoy, revisando algunas cosas, he vuelto a él y he visto algo que, antes quizás me habría parecido ridículo, pero ahora, después de ciertos acontecimientos, comienzo a verle mucho sentido.

El lenguaje haXe, se presenta como un meta-lenguaje, un lenguaje que se compila resultando en otro diferente, como pueda ser JavaScript, PHP, Java o Neko, por lo que puede emplear cualquier entorno de ejecución conocido por el programador. Dicho de otra forma, este es un lenguaje para dominarlos a todos

El lenguaje

Echándole un vistazo a la sintaxis del lenguaje, podríamos decir que el lenguaje es muy parecido a JavaScript, pero con definición de tipos. La declaración es parecida a Pascal o Modula–2, usando dos puntos, pero sin embargo, la forma de los arrays es más como las plantillas de Java.

Las estructuras condicionales son las que están disponibles en lenguajes como PHP, C, Java y demás, con algunos matices, por ejemplo, con el uso de iteradores, con lo que el for es más parecido a Python o Java, por ejemplo. Tiene una forma tal que así:

import php.Lib;
 
class Index {
    static function main() {
        var p = new Point(-1,65);
        trace(p);
    }
}
 
class Point {
    var x : Int;
    var y : Int;
    public function new(x,y) {
        this.x = x;
        this.y = y;
    }
    public function toString() {
        return "Point("+x+","+y+")";
    }
}

Este código (tomado de su web, sección de tipos) se encarga de definir una clase Point, con un constructor que inicializa los atributos internos (x e y) y una función especial para representar el dato en modo texto (como en Java).

Lo suyo sería que se particionase como clases independientes, e incluso se creasen paquetes, una vez se programe en serio con el lenguaje.

La compilación

En Debian, el compilador viene en el repositorio. Llama la atención el hecho de que se instala de la mano de Neko (que es otro lenguaje similar, que se puede compilar en otros, pero que además tiene una VM propio e integración con Apache).

Generar el código visto anteriormente en PHP, es tan simple como ejecutar esto:

haxe -main Index -php www

Nos creará un directorio www en la ruta en la que estemos que tendrá un directorio lib y un index.php en la base con los comandos básicos para ejecutar el código programado. Lo podemos ejecutar desde consola (si tenemos el php-cli), así:

$ php www/index.php
Index.hx:6: Point(-1,65)

Conclusiones

Últimamente se van escuchando cada vez más lenguajes nuevos que salen, buenos lenguajes con muchas nuevas características que facilitan mucho la vida a los programadores, pero que, por el simple hecho de ser más completos, tienen una curva de aprendizaje más alta.

Lo que propone HaXe, en sí, es un solo lenguaje, un lenguaje muy completo, con todas las características de alto nivel que tienen todos los lenguajes, fácil y muy parecido a los lenguajes más usados de hoy en día, por lo que su entrada a él sea rápida, pero además, muy versátil, como los lenguajes scriptting, y ajustable a las necesidades de producción, gracias a que se puede compilar en C++, Java, C#, PHP, JavaScript, Flash y Neko.

En mi opinión, es una muy buena propuesta, ya que se podría emplear para generar el código necesario para realizar la web a nivel de servidor, cliente, e incluso algunos códigos a nivel de aplicación de escritorio, todo en un solo lenguaje.