Vala es un lenguaje de programación creado con el objetivo de acercar las características de los lenguajes modernos a C, sin requisitos adicionales de tiempo de ejecución y con pocos costos, centrado en los objetos de la biblioteca GObject. Ha sido desarrollado por Jürg Billeter y Raffaele Sandrini. La sintaxis se inspira en C#, con leves modificaciones para adaptarse mejor al sistema de objetos de GObject.

Para la gestión de memoria, GObject usa el sistema de conteo de referencias. En C, el programador debe gestionar la adición y la eliminación de referencias a mano, en cambio, en Vala, la gestión de estas referencias es automática, siempre que el programador use los tipos referenciales incluidos en el lenguaje en lugar de usar punteros comunes. El único detalle del que debe preocuparse es de evitar que se generen listas circulares, pues en ese caso este sistema de gestión de memoria no funcionará correctamente.

Valac, el compilador de Vala, traduce el código Vala en código C, un lenguaje intermedio (tal como hace Java a Bytecode o C# al CIL), en lugar de ser compilado directamente en ensamblador, que luego puede compilarse en cualquier plataforma soportada por GLib, con cualquier compilador de C estándar.

Además, Valac también admite otra sintaxis de entrada, es el caso de Genie, que funciona de la misma forma que Vala pero con una sintaxis inspirada en Python. De hecho, Vala y Genie pueden ser usados juntos para crear un mismo programa.

El lenguaje Vala compite en contraposición a Mono, una implementación abierta de C#, por formar parte activa en el núcleo de GNOME, ante la necesidad de éste de reducir su complejidad con un lenguaje moderno. La disputa comienza a ser intensa en listas de correo y foros de opinión, pero no existe un posicionamiento oficial sobre el tema por parte de los desarrolladores.

Los partidarios de Vala argumentan con su gran rendimiento junto con la posibilidad de un bloqueo de patentes a Mono por parte de Microsoft; en cambio los partidarios de Mono afirman que Vala es un lenguaje inmaduro y sin apenas documentación.

Ejemplos de código

El programa más simple «Hola mundo»:

void main() {
    stdout.printf("Hola mundo\n");
}

«Hola mundo» con la ayuda de la programación orientada a objetos:

public class Ejemplo.HolaMundo : GLib.Object {
    public static int main(string[] args) {
        stdout.printf("Hola mundo\n");
        return 0;
    }
}

Un ejemplo más complejo, mostrando algunas de las características de la orientación a objetos de Vala:

public class Ejemplo.HolaMundo : GLib.Object {
    public void saludar() {
        stdout.printf("Hola mundo\n");
    }
    public static int main(string[] args) {
        var ejemplo = new Ejemplo.HolaMundo();
        ejemplo.saludar();
        return 0;
    }
}

Gracias por apoyar el libre conocimiento con tu donación!
Bitcoin: bc1q4sw9260twfcxatj8mjp7358cyvrf8whzlelyhj
Ethereum: 0xFb93D2a3c9d1A0b83EE629c2dE1725BCa192e581
Litecoin: LbFduJmHvQXcpCnwfUT7aJ4DYoWSL3iQw8
Dogecoin: D7QQVqNR5rk215A4zd2gyzV9P2bLQtZHFV
Transferencia bancaria en México:
Cuenta CLABE: 661610005838513425 Nombre: Masterhacks LATAM Banco: Alternativos

Unete a nuestros grupos:
WhatsApp: https://chat.whatsapp.com/HcazyklpyeU4X3BF657KFQ
Telegram: https://t.me/masterhacks_net
Canal de WhatsApp https://whatsapp.com/channel/0029VaBBLCn5vKAH9NOWCl3K

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *