Aller au menu - Aller au contenu

Icône Qu'est-ce que Vala ?

Par Avatar Yno
Mise à jour : 09/07/2010
Difficulté : Facile Facile
170 visites depuis 7 jours, dont 33 sur ce chapitre classé 446/786
Il existe des dizaines de langages de programmation. Celui que nous allons étudier dans ce cours, le langage Vala, est très récent, et s'inspire beaucoup de ses prédécesseurs. Mais pourquoi en avoir fait un nouveau ? Comment l'étudier ? Et comment va-t-il nous permettre de créer des logiciels ?

Une petite présentation s'impose.
Sommaire du chapitre :
Icône du chapitre
Sommaire Chapitre suivant

Des applications graphiques avec GTK+

Image utilisateur
Pour créer des logiciels, il vous faut certes un langage de programmation (comme le langage C, le Python ou le Vala), mais également un ensemble d'outils, mis à la disposition du système, pour pouvoir dessiner des fenêtres, gérer les "clics" de vos utilisateurs et également faire des actions plus évoluées. De tels outils sont disponibles dans des bibliothèques de code.

Ces bibliothèques s'appellent ainsi parce qu'elles fonctionnent comme les vraies. Lorsque vous avez besoin de vous renseigner sur quelque chose, par exemple la fameuse recette de la dinde au whisky, vous allez à la bibliothèque, au rayon "Cuisine", et vous sortez le livre adéquat. Cela vous permet de profiter du savoir-faire culinaire de l'auteur du livre sans avoir à redécouvrir et à réécrire la recette vous-même. Avec le code, c'est pareil : les concepteurs de votre système ont développé une bonne fois pour toute de quoi faire des applications graphiques, alors autant s'en servir !

Cependant, avec Vala nous allons aller plus loin. Nous allons utiliser une bibliothèque nommée GTK+, qui non seulement se charge de nous proposer tout plein d'objets prêts à l'emploi pour ça, mais qui, en plus, est portable : GTK+ est en fait construite au-dessus du système, et peut être utilisée sur plusieurs systèmes en s'adaptant à chaque environnement. Un même programme peut être écrit avec GTK+ et fonctionner sous Windows, sous Linux, ou même sur téléphone portable dans un environnement comme Maemo.

Un peu d'histoire : GTK+ est une bibliothèque libre, initialement développée pour le logiciel de dessin The Gimp. Elle s'est popularisée et son usage est maintenant très répandu : des logiciels comme Inkscape, AbiWord ou encore Evolution l'utilisent. De plus, des environnements de bureaux entiers pour Linux, comme GNOME ou XFCE, sont basés sur GTK+. Cette bibliothèque est écrite et utilisable dans le langage C, utilisant de nombreux mécanismes regroupées dans une autre bibliothèque (non-graphique) nommée la GLib.

Pourquoi la GLib ? Parce que les développeurs de GTK+ ont, au fil des ans, voulu faciliter le développement d'applications avec GTK+ en proposant des fonctionnalités qui simplifiaient la programmation. Le langage C est en effet un langage de bas niveau, il n'a pas été conçu initialement pour écrire des applications de haut niveau comme un lecteur vidéo ou un navigateur web. Il lui manque donc beaucoup de fonctionnalités pratiques à l'utilisation, mais qui demandent alors d'être réécrites par le développeur, ce qui est difficile. La GLib propose donc certaines de ces fonctionnalités, ainsi qu'un système de programmation orientée objet nommée GObject (nous verrons ce que c'est en temps et en heure).

Utiliser un langage de haut niveau

Même doté de la GLib, le C n'est pas forcément le langage le plus agréable pour développer des applications. Beaucoup de développeurs ont donc préféré se tourner vers des langages de haut niveau comme Perl, Python ou, plus récemment, C# pour utiliser GTK+. En effet, cette bibliothèque dispose de nombreux "ponts" vers d'autres langages. Aujourd'hui, un certain nombre d'applications écrites pour le bureau Gnome sont écrites dans ces deux derniers langages, par exemple F-Spot (C#), PiTiVi (Python) ou Gwibber (Python).

Cependant, une telle approche pose plusieurs problèmes :
  • Ces langages ne tirent pas partie de la GLib ou de GObject (le système d'objets proposé par la GLib) car ils possèdent leur propre organisation interne. C'est problématique, car cela rend l'intégration à l'éco-système GNOME difficile (il est par exemple impossible d'écrire une bibliothèque en C# pour qu'elle soit réutilisée dans d'autres langages).
  • Python et C# sont de plus interprétés, c'est à dire qu'ils dépendent d'un autre programme pour fonctionner (respectivement un interpréteur Python, et le projet Mono). Cela a deux conséquences : premièrement, cela ajoute des dépendances à votre application, qui devient plus difficile à distribuer et plus lourde. Deuxièmement, cela nuit sérieusement aux performances : un programme écrit en Python ou en C# sera plus lent qu'un équivalent écrit en C.
  • Enfin, dans le cas de C# et de Mono, il a, pendant un temps, été question de problèmes juridiques sur des bibliothèques brevetées par Microsoft et néanmoins présentes dans Mono (certaines bibliothèques seraient encore suspectes, comme le projet Moonlight). Cela conduit beaucoup de développeurs du logiciel libre à se méfier du projet Mono.

Voici Vala !

Pour ces raisons, des développeurs GNOME ont décidé, en 2006, de construire un nouveau langage de programmation plus adapté au développement avec la GLib et GTK+. Celui-ci reprend un certain nombre d'idées du langage C#, mais réutilise des outils proposés par la GLib, comme la gestion de la mémoire, ainsi que le système d'objets GObject. Vala, car tel est son nom, propose donc le confort de développement d'un langage haut niveau tout en étant compilé en code C, qui est après compilé à son tour en binaire. Les programmes écrits dans ce langage peuvent donc bénéficier de meilleures performances que les programmes écrits en Python ou en C# dépendants de Mono.

De plus, contrairement à ces deux langages, Vala peut très facilement réutiliser des bibliothèques écrites en C, ou au contraire être réutilisé par des programmes C. Il se pose donc comme un langage de haut niveau intégré à GNOME, et même à GTK+. Il est donc tout aussi adapté au développement pour Windows ou d'autres plate-formes supportant GTK+. Enfin, même si le langage est encore très jeune, des projets originaux comme le serveur d'applications web Blitzen permettent d'espérer une utilisation plus large que le seul développement avec GTK+. D'autre part, Vala ayant accès aux bibliothèques développées pour le langage C, vous pouvez également l'utiliser pour réaliser des jeux 2D avec la SDL ou des applications 3D avec OpenGL.

Alors, ça vous intéresse ;) ?

Utiliser Vala

Image utilisateur
Valide en action
Nous allons dans la suite de ce cours apprendre à programmer en Vala, puis à développer des applications à l'aide de GTK+ (et d'autres composants). Pour écrire et tester nos codes puis compiler nos programmes, nous aurons donc besoin de valac, le compilateur Vala (écrit en Vala). Ce cours considère également que vous utiliserez l'IDE Val(a)IDE (que nous nommerons occasionnellement "Valide" pour faire ressortir le jeu de mot voulu par l'auteur). Vous avez tout à fait le droit de ne pas vouloir l'utiliser, il y a beaucoup d'IDE qui supportent Vala. Choisissez celui que vous préférez si Valide ne vous tente pas trop ;) .

Mais dans ce cas, naturellement, vous devrez savoir seul comment il fonctionne, et comment vous pouvez utiliser valac indépendamment de cet éditeur. Valide présente l'avantage d'être livré avec tout le nécessaire, du moins sous Windows, il va donc nous simplifier la vie.


Si vous êtes sous Windows, téléchargez la version 0.6.1 de Valide, qui est suffisamment stable pour être utilisée. Sinon, regardez la page de téléchargement de Val(a)ide pour trouver une version appropriée à votre système.
Nous sommes maintenant équipés pour apprendre Vala.
Sommaire Chapitre suivant

Partager

9 commentaires pour "Qu'est-ce que Vala ?"
Note moyenne : 3.63 / 4 (35 votes)
Pseudo Commentaire
Hors ligne antoyo # Posté le 11/07/2010 à 04:30:16
GNU/Linux forever!
Avatar

Études : Cégep de rimouski

C'est très bien parti !
Bonne continuation !

En passant :
Avancement : 90%
Il faudrait modifier cela.

Mon extension pour Chrome/Chromium :
SaveAllPasswords : vous permet d’enregistrer vos mots de passe sur tous les sites Web (même ceux qui ne veulent pas :D ).
 
Hors ligne Peaker # Posté le 23/01/2011 à 19:44:56
Shit happens
Avatar

Ville : Genève
Pays : Suisse

Ça faisait longtemps que j'avais mis ce tuto dans mes favoris, pour me rappeler de le lire un jour... Si j'avais lu ce chapitre avant, je serais déjà à la fin du tuto... :) Ça donne vraiment envie d'apprendre ce language et... c'est ce que je vais ;) j'aime beaucoup !
Bonne continuation !

PS:pour ceux qui sont sous ubuntu et qui n'arrive pas à installer val(a)ide, regardez ici ;)
 
Hors ligne Charles-Martel # Posté le 25/07/2011 à 10:58:14
Avatar

Pas mal pour un début, juste une chose :

Citation : Yno
Python et C# sont de plus interprétés, c'est à dire qu'ils dépendent d'un autre programme pour fonctionner (respectivement un interpréteur Python, et le projet Mono). Cela a deux conséquences : premièrement, cela ajoute des dépendances à votre application, qui devient plus difficile à distribuer et plus lourde. Deuxièmement, cela nuit sérieusement aux performances : un programme écrit en Python ou en C# sera plus lent qu'un équivalent écrit en C.


Le C# est un language précompilé au même titre que java, le code précompilé est éxécuté par la machine virtuelle .NET,
de plus l'interet est justement de rendre l'application "portable" sous réserve d'avoir .NET ou Mono.
Connecté Chiheb2010 # Posté le 01/05/2012 à 18:01:56
dcScript
Avatar
Flux RSS

Ville : Carpentras
Pays : France métropolitaine

Pour info' il n'est plus question d'ordre juridique pour Mono avec Microsoft, l'entreprise a été complètement d'accord pour les laisser continuer en paix.
Et comme déjà dit C# n'est pas interprété, il est compilé en IL qui est compilé à la volé en binaire par la machine virtuelle .NET ou Mono sous Linux. ;)

Image utilisateur Retrouvez dcScript sur mon blog !
 
Hors ligne pikapiou # Posté le 01/05/2012 à 22:31:33

Bonjour,
le lien de téléchargement est mort.
Pour les utilisateurs de Windows, la liste est ici.

Voir tous les commentaires