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 #897472.

langage de haut niveau?

Posté par Mickaël L () le 20/01/2008 à 10:47. (lien). Évalué à 6.

C'est bizarre, mais on parle de langage de haut niveau, et ensuite le changelog parle de pointeurs. Pour moi c'est un peu incompatible, non?

  • [^]Re: langage de haut niveau?

    Posté par ciol () le 20/01/2008 à 17:24. (lien). Évalué à 0.

    Ben c'est pas obligé de les utiliser :


    Pointers

    IF YOU ARE RELYING ON WHAT I'VE WRITTEN IN THIS SECTION: DO NOT USE POINTERS YET.

    (vala tutorial)

    --
    The megafreeze development model is broken. (tuomov, le 03/03/2007)

    [^]Re: langage de haut niveau?

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

    Pour info la couche GLib fournit la notion de pointeur. Afin de conserver toutes les possibilitées de la GLib dans Vala, la structure 'pointer' a été conservé.

    Pour info on n'utilise cette structure que rarement car l'intérêt en est limité (juste pour des questions de performances).

    Mon petit projet à moi en Vala:
    [http://code.google.com/p/vala-benchmarks/]
    Implémentation de quelques benchs du shootout benchmark en Vala et comparaison avec Mono et C.

    --
    C# (sans runtime) + GObject = Vala
    • [^]Re: langage de haut niveau?

      Posté par Antoine () le 20/01/2008 à 17:57. (lien). Évalué à 1.

      Pour info on n'utilise cette structure que rarement car l'intérêt en est limité (juste pour des questions de performances).

      C'est ça les "TreeNode#" dans ton programme ?

      • [^]Re: langage de haut niveau?

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

        Pas tout à fait le # indique que tu passe par référence. Dans cette classe je n'ai pas eu à utilise de 'free()' alors que si tu utilise un pointeur, tu fait vraiment ce que tu veut.

        Effectivement pour ce programme la performance est importante c'est pour ça que la classe TreeNode n'hérite pas de Object ce qui désactive la gestion de la mémoire (references counting).

        Le tutoriel explique bien la notion de pointeur, elle est très proche du C et permet de spécifier à quel endroit précis du code tu décide de libérer la variable.

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

      [^]Re: langage de haut niveau?

      Posté par Matthieu C () le 20/01/2008 à 18:01. (lien). Évalué à 3.

      Mon petit projet à moi en Vala:
      [http://code.google.com/p/vala-benchmarks/]
      Implémentation de quelques benchs du shootout benchmark en Vala et comparaison avec Mono et C.


      Juste une question à la con :
      Je crois que vala était destiné à faire des appli gnome, c'est à dire des appli qui font soit de l'IHM soit de l'accès aux ressources (accès fichier, configuration wifi, ...).
      Et qu'est ce que l'on trouve dans les bench ? Des trucs purement algorithmique...

      PS : d'ailleurs la comparaison de partialsums est intéressante http://vala-benchmarks.googlecode.com/svn/trunk/partialSums/(...)
      C'est quasiment le même code.

      • [^]Re: langage de haut niveau?

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

        Vala est avant tout destiné à créer des composants logiciels en utilisant les conventions GObject c'est dire tout ce qui tourne autour du monde de Gnome. Ces composant logiciels peuvent être aussi bien de l'IHM que de la manipulation d'images, du XML, etc... Le but de GObject c'est d'apporter les conventions pour que tout Gnome utilise la même 'façon de faire' la couche objet.

        Les benchs peuvent dans certains cas être intéressants, notamment pour tester la gestion de la mémoire (notamment BinaryTrees) ou la compréhension du code Vala, C# et C. La langage Vala en lui même n'apporte pas de chose en plus que du C/GObject bien codé. Ce langage permet surtout à des nouveaux programmeurs intéressées par GNOME d'éviter de mettre le nez dans du C qui suit des conventions pour apporter de l'objet.

        J'avoue certains benchs ne servent pas vraiment à grand chose sauf à l'appel de fonctions C :).

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

    [^]Re: langage de haut niveau?

    Posté par reno () le 20/01/2008 à 19:31. (lien). Évalué à 3.

    Non: en D "par défaut" tu utilise un GC, mais en cas de besoin tu peux faire de l'allocation manuelle et utiliser des pointeurs..

    Les GC ne sont pas forcément le bon outil dans toutes les situations (même si par défaut c'est plus raisonnable d'utiliser un GC que de gerer soi-meme la mémoire).

    • [+] [^]Re: langage de haut niveau?

      Posté par rewind () le 21/01/2008 à 14:09. (lien). Évalué à -1.

      C'est marrant, j'aurais dit l'inverse : par défaut, il vaut mieux savoir désallouer ce que tu as alloué et en cas de besoin (l'allocation et la désallocation se font à des moments et des endroits bien distincts), on peut avoir recours à un GC.

      C'est quoi cette mode de mettre des GC partout ? Un GC n'est pas la réponse à tout, loin de là...

      • [^]Re: langage de haut niveau?

        Posté par pw00t () le 21/01/2008 à 15:25. (lien). Évalué à 5.

        l'idee sous jacente c'est qu'une machine est bien plus adaptee a la tache toute bete qui est le comptage des references qu'un etre humain.
        Et que ca enleve pas mal de bogues potentiels quand meme.
        Et ca fait des vacances au developpeur qui peut se concentrer sur son reel boulot (developer une appli, pas traquer des cases en memoire).

        • [^]Re: langage de haut niveau?

          Posté par Florian Hatat (Jabber id, page perso, ) le 23/01/2008 à 09:17. (lien). Évalué à 1.

          L'autre idée sous-jacente, c'est qu'un humain fera probablement toujours mieux son travail qu'un compteur de référence (l'humain sait libérer une liste doublement chaînée par exemple, alors que le comptage de référence non). Bon mais c'est juste un détail car l'humain est par ailleurs plus mauvais que les autres GC. :-)

          • [^]Re: langage de haut niveau?

            Posté par pw00t () le 23/01/2008 à 09:30. (lien). Évalué à 1.

            ah bon?
            Je te fait des listes doublement chainees, le GC de java le libere tres bien.

            En 4 ans de dev Java, j'ai jamais vu un GC se planter et liberer quand il ne fallait pas ou ne pas liberer quand il fallait.
            Des humains qui font ces 2 erreurs en C++, par contre, j'en ai vu quelques uns...

            Ah si, j'ai eu une fuite memoire en Java, une fois. Apres 15 jours de recherche, elle etait localisee dans la lib C++ appelee en JNI...

            • [^]Re: langage de haut niveau?

              Posté par Florian Hatat (Jabber id, page perso, ) le 23/01/2008 à 14:33. (lien). Évalué à 2.

              On dirait que tu dis la même chose que moi, en faisant semblant de dire le contraire. En effet c'est rassurant que tu n'aies pas trouvé de fuite dans la JVM, puisque justement il paraît qu'elle n'utilise pas de comptage de référence :-)
              http://java.sun.com/docs/hotspot/gc1.4.2/#4.%20Types%20of%20(...)

              Avec mon commentaire, je cherche juste à tordre le coup à l'opinion qui dit qu'un compteur de référence c'est la panacée. (Par ailleurs, les gens qui codent des compilateurs le savent, regardez par exemple pour Parrot : http://www.parrotcode.org/faq/#Why_aren't_you_using_referenc(...) ). Généralement, tout autre GC est préférable.

              Au passage, deux langages et pas des moindres se traînent ce handicap : Perl et Python... Et pour Perl, cela donne par exemple la méthode delete du paquet HTML::Element.
              http://search.cpan.org/~petek/HTML-Tree-3.23/lib/HTML/Elemen(...)

              • [^]Re: langage de haut niveau?

                Posté par pw00t () le 23/01/2008 à 14:46. (lien). Évalué à 2.

                ok, au temps pour moi, j'avais mal compris ton message, par "comptage de reference", je pensais que tu parlais des GC en general.

                [^]Re: langage de haut niveau?

                Posté par GuieA_7 (page perso, ) le 23/01/2008 à 19:06. (lien). Évalué à 1.

                Non, il y a depuis pas mal de temps me semble-t-il un GC dans Python.
                D'ailleurs je me demande dans quelle mesure du comptage de référence pour faire le gros du boulot, plus un GC pour les cas problématiques, est une solution meilleure (ou moins bonne) qu'un GC tout seul....

                • [^]Re: langage de haut niveau?

                  Posté par Philippe Fremy (page perso, ) le 24/01/2008 à 10:08. (lien). Évalué à 2.

                  Il y a eu des implémentations avec un GC optionnel mais la version standard fonctionne toujours par comptage de référence.

                  Dans pypy en revanche, le choix du GC est entièrement configurable. En fait, dans pypi, tout est configurable.

              [^]Re: langage de haut niveau?

              Posté par reno () le 24/01/2008 à 13:46. (lien). Évalué à 2.

              >En 4 ans de dev Java, j'ai jamais vu un GC se planter et liberer quand il ne fallait pas ou ne pas liberer quand il fallait.

              Il ne fait jamais dire jamais :-) :
              en 99, j'ai eu un bug du GC de la JVM Sun qui libérait des objets quand il ne le fallait pas (il ne prenait pas en compte les references statiques).

              Assez pénible ce bug d'ailleurs car il induisait un plantage aléatoire de mon prog..

              • [^]Re: langage de haut niveau?

                Posté par pw00t () le 24/01/2008 à 14:17. (lien). Évalué à 2.

                hehe, bon ok, t'as eu un bug, ya de ca presque 10 ans.

                ya pire quand meme :p

        [^]Re: langage de haut niveau?

        Posté par Antoine () le 21/01/2008 à 22:13. (lien). Évalué à 4.

        C'est quoi cette mode de mettre des GC partout ? Un GC n'est pas la réponse à tout, loin de là...

        Non, mais c'est la plupart du temps une bonne réponse au problème de la gestion mémoire des objets alloués.

        par défaut, il vaut mieux savoir désallouer ce que tu as alloué

        La source de bugs en général ce n'est pas "comment désallouer" mais "quand désallouer"...