- Vala es un lenguaje de programación cuyo objetivo es ofrecer funciones modernas de lenguaje a los desarrolladores de GNOME
- No impone requisitos adicionales de runtime ni usa un ABI distinto en comparación con aplicaciones y bibliotecas escritas en C
- Funciones modernas del lenguaje que soporta: interfaces, propiedades, señales,
foreach, expresiones lambda, inferencia de tipos para variables locales, genéricos, tipos non-null, gestión de memoria y manejo de excepciones
- Permite escribir código cómodamente usando abstracciones de alto nivel con un enfoque orientado a objetos, y está profundamente integrado con tecnologías de GNOME como GObject y GTK
- Compila el código en binarios nativos muy rápidos. Se puede reutilizar código C existente desde programas en Vala o generar código C desde Vala
Compatibilidad con bibliotecas C existentes
- Vala fue diseñado para permitir el acceso a bibliotecas C existentes, especialmente bibliotecas basadas en GObject, sin bindings en runtime
- Basta con tener archivos API que incluyan declaraciones de clases y métodos en sintaxis de Vala para poder usar la biblioteca con Vala
- Actualmente, Vala incluye bindings para GLib y GTK+
El compilador de Vala: valac
valac es un compilador self-hosted que convierte código fuente de Vala en archivos fuente y de encabezado en C
- Usa el sistema de tipos de GObject para generar las clases e interfaces declaradas en el código fuente de Vala
- La sintaxis de Vala es similar a la de C#, pero fue ajustada para encajar mejor con el sistema de tipos de GObject
Uso en C de clases y métodos escritos en Vala
- Si se instala únicamente el archivo de encabezado generado desde una biblioteca de Vala, una aplicación en C puede acceder de la forma habitual a la API basada en GObject de esa biblioteca de Vala
- Como el parser de Vala está implementado como biblioteca y toda la información en tiempo de compilación puede usarse al generar bindings, también debería ser fácil escribir generadores de bindings para que aplicaciones escritas en C# y otros lenguajes accedan a bibliotecas de Vala
Opinión de GN⁺
- Vala tiene la ventaja de ser un lenguaje orientado a objetos con una sintaxis similar a C y bien integrado con tecnologías de GNOME. En particular, está optimizado para el desarrollo de aplicaciones GUI y puede integrarse fácilmente con GTK, Granite y otros componentes
- Vala parece ser un lenguaje especializado para el desarrollo del entorno de escritorio GNOME, por lo que su utilidad fuera de ese ámbito no parece muy amplia
- Al tener una sintaxis similar a C#, Vala puede ayudar a que desarrolladores familiarizados con C# participen en el desarrollo para GNOME
- El objetivo de Vala de dar prioridad a la compatibilidad con bibliotecas C existentes y al mismo tiempo ofrecer funciones modernas de lenguaje resulta fresco, aunque eso también puede hacer que el lenguaje en sí pierda originalidad
- Si se observan los proyectos hechos en Vala, hay sobre todo muchas aplicaciones de escritorio para GNOME o elementary OS, aunque también es un lenguaje que puede usarse para programación de servidores. Sin embargo, en ese campo su ecosistema todavía es limitado
- Aún está por verse qué tan ampliamente se usará Vala, pero dentro del ecosistema GNOME podría esperarse una mejora de productividad al usar Vala en lugar de C
- También existe un lenguaje llamado Genie, similar en sintaxis a Vala y capaz de usar tecnologías de GNOME. Su característica es que delimita bloques de código por indentación, como Python. Vale la pena considerarlo como alternativa a Vala
1 comentarios
Comentarios en Hacker News
valac).valadoc.org), también facilita el desarrollo.gtk-rs.org).