Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

: Sortie de Vala 0.1.6

Posté par Émilien Tlapale (page perso, ). Modéré le 20 janvier 2008.
La version 0.1.6 de Vala est sortie ! Vala est un langage de programmation avec une syntaxe fortement inspirée du C# conçu pour l'environnement GNOME. Bien qu'il s'agisse d'un langage de haut niveau, possédant par exemple des patrons de classe, de l'inférence de type ou des fonctions anonymes, il est compilé en C et utilise la bibliothèque GObject de façon standard.

Bien que principalement conçu pour GNOME, le langage Vala est utilisable simplement combiné avec GLib et GObject. Le langage est de plus facilement interopérable avec d'autres bibliothèques écrites en C, pour lesquelles il suffit de créer un fichier VAPI, et utilisable depuis d'autres langages de programmation capable de s'interfacer avec le C.

Cette nouvelle version vient à point combler les manques des versions précédentes en permettant aux méthodes d'objet d'être invoquées par des signaux, en rajoutant le support de la compilation conditionnelle et en autorisant l'imbrication des types génériques.

> Lire la dépêche (132 commentaires, moyenne: 2,5).  

Vous avez demandé le commentaire #897505.

compilo

Posté par Matthieu C () le 20/01/2008 à 11:42. (lien). Évalué à 4.


Vala est un langage de programmation avec une syntaxe fortement inspirée du C# conçu pour l'environnement GNOME.

Y aurait il la grammaire du langage quelque part ? L'API ?
J'ai rien vu de précis sur le site de vala.

Bien qu'il s'agisse d'un langage de haut niveau, possédant par exemple des patrons de classe, de l'inférence de type ou des fonctions anonymes, il est compilé en C et utilise la bibliothèque GObject de façon standard.
Et qu'est ce que ça change ?
A part que ça sent un peu l'usine à gaz derrière.
J'espère qu'ils ont prévu des surcouche à gcc, gdb, ... pour retranslater le C généré en un truc débugable.

Je trouve dommage qu'ils ne sont pas parti d'un langage existant. Créer un langage propre et qui marche est loin d'être trivial...

Et pour la fin un petit troll tirer de http://live.gnome.org/Vala
There won't be a vala runtime library and applications can distribute the generated C code with their tarballs, so there are no additional run- or build-time dependencies for users.
miam, ca va être du bonheur s'il y a des erreurs de compil.

  • [^]Re: compilo

    Posté par Moonz () le 20/01/2008 à 12:14. (lien). Évalué à 4.

    Non, le code généré par Vala est très lisible et extrèmement proche de ce qu'aurait écrit un développeur C+GObject (certains argueront que ce n'est justement pas lisible, mais là n'est pas le troll :))

    > Et qu'est ce que ça change ?
    100% et immédiatement compatible avec le C et l'énorme paquet de code GObject existant, le tout avec une syntaxe un peu moins lourde

    > Créer un langage propre et qui marche est loin d'être trivial...
    Justement, c'est plus proche d'un préprocesseur que d'un vrai langage...

    [^]Re: compilo

    Posté par Clément David (Jabber id, page perso, ) le 20/01/2008 à 17:54. (lien). Évalué à 2.

    Si tu veux la grammaire du langage, regarde dans les exemples, ils sont relativement complets et permettent de commencer à programmer en Vala très simplement. De plus si tu connait le C#, tu connait le Vala.

    Pour 'l'usine à gaz' tu repassera, tout les constructions syntaxiques de Vala sont formalisés dans GObject. Ceci permet de ne pas rajouter de surcoût par rapport à du C/Gnome bien programmé. L'option '-g' du compilateur valac permet d'ajouter les '#line ' qui vont bien dans le fichier C généré et permettent à gdb de retrouver ses petits dans le fichier .vala correspondant.

    Le langage existant s'appelle le C# et je pense qu'il est suffisamment connu et reconnu pour être considéré comme MAJEUR. Le fait de ne pas avoir eu à spécifier la grammaire du langage permet de rassembler les programmeurs. La réponse de Jürg (le développeur principal) à tout ajout de syntax est clair, ce qui n'est pas utilisé pour du C#, ne doit pas l'être pour du Vala (j'ai perdu le lien).

    --
    C# (sans runtime) + GObject = Vala
    • [^]Re: compilo

      Posté par Antoine () le 20/01/2008 à 18:14. (lien). Évalué à 5.

      La réponse de Jürg (le développeur principal) à tout ajout de syntax est clair, ce qui n'est pas utilisé pour du C#, ne doit pas l'être pour du Vala (j'ai perdu le lien).

      Voilà qui promet une grande évolutivité :-))

      • [^]Re: compilo

        Posté par Clément David (Jabber id, page perso, ) le 20/01/2008 à 19:04. (lien). Évalué à 2.

        j'aurais peut-être du dire ça autrement :).

        Le fait de transformer la syntaxe pour mieux coller au modèle GObject a déjà été effectuée (l'exemple du construct). Seulement un changement/ajout majeur de syntaxe ne peut que porter à confusion et ce n'est pas le but du langage de définir une nouvelle syntaxe.

        Je dois être plus clair comme ça :). Et pour l'évolution du langage tu peut toujours contacter Jürg sur [irc://irc.gimp.org/#vala], je pense qu'il saura mieux t'expliquer que moi ;).

        --
        C# (sans runtime) + GObject = Vala

    [^]Re: compilo

    Posté par Jul (page perso, ) le 20/01/2008 à 19:35. (lien). Évalué à 3.

    Le c# est un normé ECMA (javascript aussi)
    http://www.ecma-international.org/publications/standards/Ecm(...)


    C'est juste du "sucre syntaxique" pour que les humains puissent écrire dans le CLR (common language runtime)

    le c#/VBscript est au CLR ce que perl 6.0 et python seront à parrot (si ça arrive un jour) juste un truc haut niveau agréable à lire et à écrire.

    En fait si on fait un parser/analyseur lexical on peut avec la norme faire un transformateur c# -> python/perl ou autres, mais faut être maso : faire des closures et proche de l'impossible en c# (voir delegate et lambda function)

    Les trucs intéressants sont les generics et les delegates.

    A noter que comme leur truc étaient trop rigide (typage fort) ils ont le DLR (dynamic language runtime) avec comme portage : javascript coté serveur / python qui pondent du CLR au final bindable avec avec les dll systèmes et vice versa.