Vala

Vala
Información sobre la plantilla
Parte de la familia Derivados de C#
Vala.png
Lenguaje de programación
Lanzamiento inicial2006
Última versión estable26 de marzo del 2012
Sistemas Operativos compatiblesToda plataforma soportada por Glib
Idiomaorientado a objetos
LicenciaLPGL 2.1+
Sitio web
http://live.gnome.org/Vala


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 hacen Java o C#), 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.


Un Poco de historia

Vala surge por la necesidad de aumentar la productividad de los programadores o desarrolladores del entorno Gnome y creación de aplicaciones. Después de que se creara el proyecto Mono para solventar estos problemas y no obtuvo los resultados esperados debido a Uno de los principales problemas de Mono para llevar una relación simbiótica con Gnome, era la de reescribir el conjunto de bibliotecas base de Gnome, a código manejable por la máquina virtual de Mono. Se podía, al igual que otros lenguajes, hacer bindings de C a Mono, sin embargo, esto restaba la potencia provista por la máquina virtual, y pocos estaban dispuestos a tirar a la basura el trabajo de tantos años con la mano en la cintura. Alrededor de 5 años de la creación de GOB(un preprocesador, que a partir de una descripción de la clase y código en C embebido, generaba todo el código necesario de GObject) y unos 10 años de la creación del proyecto Gnome. Jürg Billeter y Raffaele Sandrini mostraron a la comunidad una vía para intentar resolver el problema del dilema del proyecto Gnome. La creación del lenguaje de programación Vala.


Características generales del lenguaje

Vala es un lenguaje de programación por derecho propio que toma muchos elementos del lenguaje C# sin ser una copia fiel del mismo. Vala funciona parecido al Java que usa un compilador que convierte el programa a código intermedio,que en este caso resulta ser el Lenguaje C, el cual después compilado genera código máquina objeto. Además otras características interesantes presentes en lenguajes modernos como se muestran a continuación:

  • Interfaces
  • Propiedades
  • Señales
  • La instrucción foreach
  • Funciones anónimas del tipo lambda
  • Inferencia del tipo para variables locales
  • Programación genérica
  • Manejo de tipos no-nulos
  • Administración de memoria asistida(no automática)
  • Gestión de excepciones
  • Mecanismos para la carga de módulos o pluguins.

Cabe destacar que el creador de Vala desarrolló un mecanismo para la generación de archivos VAPI(Vala Api) de manera automática parseando los archivos cabecera en cuestión. Esta innovación aceleró el desarrollo de los mecanismos de introspección para GObject. Este mecanismo de introspección ha facilitado el esfuerzo de integrar JavaScript y otros lenguajes script a Gnome, que llevan el fin de simplificar la automatización de tareas usando los componentes de software que Gnome ofrece, y no sólo eso, sino la composición de nuevas y más dinámicas aplicaciones base para el escritorio, como GnomeShell.El número de bindings para Vala crece día a día, dada la facilidad para crearlos y actualizarlos, así como también el número de aplicaciones que se escriben en Vala.


Un ejemplo de código

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; 
   } 

}


Entornos de desarrollo que soportan Vala

Ver también

Enlaces Externos

Fuentes