Vala est un langage de programmation assez récent (2006) visant à simplifier l’écriture de programmes en C avec la bibliothèque GObject en fournissant une surcouche complète au C ; en utilisant une syntaxe proche de celle du C#.
Le programme Vala sera traduit en C avant d’être compilé par un compilateur C standard, le code résultant étant du C pur utilisant uniquement un lot de bibliothèques supplémentaires.
Cependant, Vala n’est pas vraiment un préprocesseur C puisque il va bien au delà de l’automatisation de l’écriture des classes GObject : il fournit une syntaxe orientée objet complète et une gestion de la mémoire automatique via le compte de référence des objets.
L’avantage majeur de Vala par rapport à d’autres langages orientés objet connus comme le C#, Java ou même le C++ est de n’être qu’une « façon d’écrire du C » : l’ABI est entièrement compatible avec le C. Un autre avantage est une rapidité proche de celle du C pur, bien que la gestion automatique de la mémoire via le compte de références et l’impossibilité d’effectuer certaines optimisations manuelles freine un peu le programme, mais pas de façon significative en général.
De plus, de par sa compatibilité binaire avec le C, il n’est pas étonnant d’apprendre qu’un assez grand nombre de bibliothèques sont disponibles pour Vala, rendant ce langage tout à fait viable.
Comme Vala est traduit en C, il est intéressent de remarquer qu’il est tout à fait possible de combiner des parties écrites en Vala et d’autres en C au sein d’un même programme, et même d’un même objet binaire. De plus, le code généré a une API propre, semblable à la plupart des bibliothèques basées sur GObject, le rendant parfaitement utilisable au sein d’un code C.
Le plus intéressent étant bien sûr de programmer certaines parties sensibles directement en C et de créer une interface pour Vala, chose assez aisée via les fichiers d’API Vala (.vapi).
Du côté obscur, Vala souffre encore de quelques imperfections de jeunesse, comme un manque de documentation pour certaines choses.
De plus, je ne pense pas que soit actuellement un langage de premier choix pour quelqu’un ne connaissant pas le C (il ne tirera pas partie des avantages de compatibilité de Vala) et voulant simplement un langage proposant une syntaxe orientée objet ; car les principaux avantages de Vala se situent justement dans sa compatibilité avec le C et sa rapidité.