Bonjour,
J'aimerai avoir vos critiques sur ces deux nouveaux langages que sont Vala et Genie.
A première vue ce sont deux langages différents, pourtant ils sont basés sur le même principe et utilise le même compilateur.
Pour le principe, le code est transformé en code C utilisant la bibliothèque GObject qui est ensuite compilé avec un compilateur C classique. Vala empreinte sa syntaxe au C# alors que le second s'inspire de python.
Dans les deux langages on retrouve les mêmes fonctionnalités :
- Langage orienté objet
- Les propriétés
- Les signaux
- Les fonctions lambda
- Les génériques
- Les exceptions
Voici deux exemples simples histoire de montrer les deux syntaxes :
en Vala :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class Window : Gtk.Window
{
construct
{
this.title = "Vala demo";
this.default_height = 250;
this.default_width = 250;
this.destroy += Gtk.main_quit;
var btn = new Gtk.Button.with_label ("Hello world");
btn.clicked += (s) => {
this.destroy ();
};
this.add (btn);
}
}
void main (string[] args)
{
Gtk.init (ref args);
var window = new Window ();
window.show_all ();
Gtk.main ();
} |
Compilation :
valac --pkg=gtk+-2.0 main.vala
En Genie :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| [indent=2]
class Window : Gtk.Window
init
title = "Genie demo"
default_height = 250
default_width = 250
destroy += Gtk.main_quit
var btn = new Gtk.Button.with_label ("Hello world");
btn.clicked += def (s)
destroy ()
add (btn)
init
Gtk.init (ref args)
var window = new Window ()
window.show_all ()
Gtk.main () |
Compilation :
valac --pkg=gtk+-2.0 main.gs
Voici, de mon point de vue, les avantages de ces langages :
- Pas de machine virtuelle/interpréteur
- Simplicité d'écriture par rapport au C
- Portabilité
- Compatibilité ascendante et descendante avec les bibliothèques écrites en C
- Rapidité d'exécution
Si vous voulez tester, j'ai écrit un tutoriel sur Vala : http://nicolasj.developpez.com/gtk/vala
Et créé un installeur tout-en-un (Vala, gcc et GTK+) pour Windows : http://code.google.com/p/valide/down...vala-0.5.2.exe
Partager