• [^] # Re: C'est quoi Vala

    Posté par (site web personnel) . En réponse à la dépêche Premières versions de Caméléon et Final Page. Évalué à 10.

    Vala, c'est avant tout un langage, comme le C, le C++, le C#, le Java, etc...
    Il est en fait très très similaire au C#.

    Pour plus de détails, il faut rentrer dans les aspects techniques:
    Vala est un langage qui ne se compile pas en code machine (comme gcc le fait avec le C), le compilateur vala génère du C qui lui est compilé avec GCC. Pour être précis, il génère du C/GObject. GObject étant la librairie permettant de faire de la programmation orientée objet en C. GTK+ et toute la plateforme Gnome s'appuie sur le C/GObject.

    Le défaut du C/GObject, c'est que c'est très verbeux. C'est bien fait mais un peu pénible à coder, surtout pour un contributeur occasionnel. On fait aussi plus d'erreurs en C: une partie des fonctionnalités objet du C/GObject reposent sur des conventions et ne sont pas vérifiées à la compilation comme en C++/Java/C#

    Il existe donc des bindings C++ et Python pour coder plus facilement sur la plateforme GNOME. Ces bindings sont une sorte de glue qui permettent d'appeler du code C/GObject depuis le C++ ou Python.

    Maintentant si une personne écrit un nouveau super widget GTK en python avec PyGTK, les gens qui font du C++ avec gtkmm ne peuvent pas en profiter: le widget est codé en python. le C/GObject est le seul dénominateur commun entre tous les bindings. Si tu veux que ton widget soit disponible pour tout le monde, tu dois le coder en C/GObject.

    Voilà pourquoi Vala a été créé: pour fournir un langage de haut niveau qui permet néanmoins de réutiliser ce qui a été écrit avec lui dans d'autres langages supportés via des bindings.

    En résumé, on a:

    Vala -> C/GObject

    C/GObject -> Python (via bindings)
    C/GObject -> C++ (via bindings)
    C/GObject -> Java (via bindings)