Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
LINUX & OPEN SOURCE
27 décembre 2008

Qui va là?

Le langage de programmation vala a-t-il un avenir?

Les variantes de C sont nombreuses, et vala peut être considéré comme une évolution de C. Mais vaut-il le coup d'être appris?  Dans la famille C, on trouve: C++ , Java, C# , Objective-C , D et vala.  Cela commence à faire beaucoup de dialectes, avec des syntaxes plus ou moins éloignées du C.

C est langage de bas niveau, juste au dessus de l'assembleur. Programmer en C est plutôt fastidieux, il faut tout détailler ou presque, manipuler des pointeurs, faire attention aux débordements, alloué et désalloué de la mémoire aux variables dynamiques, faire attention aux typages des variables. Le compilateur est extrémement tolérant et donc souple, mais le déboguage est long et surtout la maintenance du programme est difficile. Mais personnellement, j'adore le C pour sa souplesse et l'optimisation poussée du code qu'il est possible d'atteindre (grace à l'utilisation intensive des pointeurs évidemment). Mais l'interfacage avec les bibliothéques graphiques est un réel cauchemard.  Il est aussi vrai  qu'un code trop optimisé est difficile à comprendre, même par soi-même par la suite!  Pour finir, il existe un compilateur C pour tous les microprocesseurs, et avec C tout ou presque est permis, et bien sûr de planter le programme avec un bug sournois.

C++ est très largement utilisé, son principal intérêt à mes yeux, c'est qu'il permet d'utiliser intensivement et relativement simplement l'énorme bibliothèque de fonctions puissantes et largement éprouvées. Bref, avec C++, on ne réinvente pas constamment la roue comme souvent c'est le cas en C. Mais le langage reste complexe, impose de gérer des pointeurs ainsi que l'allocation dynamique de la mémoire.

Java peut être vu comme une simplification de C++ , ses principaux avantages sont: L'absence de pointeurs et le "garbage collector" permettant de libérer automatiquement l'espace mémoire des objets inutilisés. Java améliore beaucoup la productivité du développeur par rapport à C++. Les programmes écrits en Java sont généralement plus robustes qu'en C/C++. Par contre, il nécessite une machine virtuelle (runtime) qui ralentit la vitesse d'exécution d'un facteur 2 environ.

D est une évolution intéressante de C++.  Un de ses intérêts est la manipulation avancée des chaines de caractères. C'est un language compilé qui ne nécessite aucun runtime; le code tourne aussi rapidement qu'en C/C++.  Par contre, il semble qu'aucune application commerciale ait été développée dans ce langage. à voir?

Objective-C est une surcouche légère 'oo' au-dessus du C, mais nécessite un runtime. Je n'en dirai pas plus, je ne connais pas assez ce langage.

C# est un véritable langage de haut niveau, orienté objet, avec en outre des possibilité de manipulation avancée des chaines de caractères. En C# comme en Java, le développement est plus rapide qu'en C ou C++, mais un runtime est nécessaire pour faire tourner le programme, ce qui pénalise la vitesse d'éxecution d'un facteur 2 à 3.

Et nous voilà enfin à vala. Vala est un langage qui reprend beaucoup de la syntaxe du C#, il offre une gestion avancée des chaines (au travers de la GLib) et permet d'accéder simplement à la bibliothèque graphique GTK. C'est un langage récent qui n'est pas encore entièrement finalisé, il devrait l'être courant 2009. Son principal avantage par rapport à Mono-C#, c'est que le programme compilé ne demande pas de runtime pour tourner. Un programme écrit en vala affichera ainsi une vitesse d'exécution sensiblement équivalente au même programme écrit en C/C++. Parce que vala est désigné pour Gnome, il impose la bibliothèque graphique GTK et la bibliothèque générale GLib (GLib seulement pour un programme en mode console texte); ces deux bibliothéques imposées peuvent être vu comme une contrainte dans la portabilité du langage vers d'autres plateformes.

Alors quel avenir pour vala?

Cela dépendra de la qualité de sa documentation et de sa compatibilité avec C#.  Mais quoi qu'il en soit, il lui sera difficile de s'imposer, car:

- Vala entre en compétition avec Mono-C#, ce dernier à l'avantage d'être soutenu par Novell et d'être multiplateforme.

- glibmm et gtkmm sont des "interface C++" des bibliothéques GLib et GTK+, il est donc facile d'utiliser les bibliothéques de Gnome dans du code C++.

Que reste-t-il à Vala? L'avantage d'un programme de haut niveau sans runtime, mais spécifique à Gnome.

Publicité
Publicité
Commentaires
LINUX & OPEN SOURCE
Publicité
Archives
Publicité