5 puntos por GN⁺ 2024-04-09 | 1 comentarios | Compartir por WhatsApp
  • 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

 
GN⁺ 2024-04-09
Comentarios en Hacker News
  • Se cuestiona si Vala ha tenido una actividad de desarrollo activa recientemente. Según una publicación de blog de un desarrollador de GNOME, Vala es mantenido por una sola persona y no se recomienda para desarrollo nuevo.
  • Un comentarista dijo que escribió una app recientemente en Vala y que fue una experiencia agradable. Como quería una app que funcionara bien en Linux de escritorio y en PinePhone, Vala le encajó muy bien; le pareció mucho más disfrutable que Python y con mejor rendimiento.
  • Vala tiene un lenguaje hermano llamado Genie. Ambos lenguajes son básicamente iguales, pero Vala usa una sintaxis similar a C# y Genie usa indentación significativa al estilo de Python. Ambos se compilan con el mismo compilador (valac).
  • Vala parece ser muy similar a Swift en cuanto a sintaxis. Más allá de la sintaxis, Vala también se parece a Swift en aspectos como el conteo de referencias de primera clase, los bindings con C y el hecho de compilar directamente a binarios sin un runtime externo.
  • Se plantea la duda de si Vala cuenta con una ABI estable o compatibilidad con otros lenguajes de alto nivel como C++ u ObjC. Este es un problema difícil que Swift ha intentado resolver.
  • Es difícil encontrar en qué sentido Vala sería un lenguaje (considerablemente) más productivo o más potente que Java o C#. No queda claro cuál sería la ventaja de Vala o qué problema intenta resolver.
  • Una opinión es que una de las ventajas de Vala es la amplia gama de bibliotecas nativas a las que se puede acceder gracias a su compatibilidad con GObject. Un excelente sitio web de documentación, con todo en un solo lugar (valadoc.org), también facilita el desarrollo.
  • Se dice que la mayoría de las apps "nativas" de elementary OS fueron escritas en Vala.
  • Un comentarista al que le gustaba Geary investigó Vala por eso y descubrió que es un lenguaje elegante y bueno para crear programas prácticos en GNOME. Sin embargo, dice que no ha vuelto a mirar Vala en los últimos 7 años.
  • Usar Rust para desarrollo en GNOME se está volviendo cada vez más popular (gtk-rs.org).