Developpez.com

Le Club des Développeurs et IT Pro

Google publie Dart 1.9

Qui apporte le support de la programmation asynchrone

Le 2015-03-27 13:48:53, par Hinault Romaric, Responsable .NET
L’univers Dart est sceptique suite à l’annonce de l’abandon du développement d’une machine virtuelle (VM) Dart pour le navigateur Chrome. Par cette nouvelle Google, à demi-mot, met fin à son ambition d’offrir Dart comme une alternative à JavaScript.

Au contraire, Google va investir pour faire de Dart l’outil qu’il faut pour l’écriture du code JavaScript de qualité et performant. Pour ceux qui voyaient en cette annonce une fin probable du jeune langage Dart, ils devront attendre.

D’ailleurs, 24 heures après cette annonce, Google a publié une nouvelle version de Dart pour montrer que le langage compte bien se tailler une place dans l’écosystème du Web. Mais, cette fois aux cotés de JavaScript, tout comme des outils tels que JQuery et Node.js.

Dart 1.9 apporte une nouveauté qui fera plaisir à de nombreux fans du langage : le support de la programmation asynchrone.

Cette version introduit les méthodes async et les expressions await. Grace à ces nouveautés, les développeurs pourront écrire plus facilement du code qui ne bloque pas l'UI et ne monopolise pas inutilement des threads de travail.

A titre d’exemple, le code ci-dessous :


Devient plus simple avec le support de la programmation asynchrone :


En plus du support de la programmation asynchrone, Dart 1.9 apporte d’autres améliorations, dont :
  • le support complet des énumérations (enum). Une fonctionnalité très demandée par les développeurs ;
  • le déplacement de « Dart Analyzer » à « Dart Analysis Server ». Cela rend plus facile l’intégration de l’analyseur de code Dart avec d’autres EDI ;
  • une mise à jour du moteur d’expressions régulières pour la machine virtuelle Dart. Il est désormais 150x plus rapide que la mise en œuvre précédente ;
  • l’intégration de l’API Isolate dans la VM Dart, ce qui rend plus facile la création d’applications qui ciblent plusieurs processeurs.


Dart 1.9 et ses outils sont disponibles en téléchargement sur le site du projet.

Télécharger Dart 1.9

Source : Blog Dart

Et vous ?

Etes-vous sceptique par rapport à l’avenir de Dart ou pensez-vous que le langage a encore un futur glorieux ?
  Discussion forum
167 commentaires
  • tomlev
    Rédacteur/Modérateur
    Envoyé par Hinault Romaric
    Tiens, j'ai l'impression d'avoir déjà vu ça quelque part... ça ressemble étrangement à ce que propose C# 5
  • Vlozer
    Membre habitué
    Envoyé par Hinault Romaric
    Dart 1.9 apporte une nouveauté qui fera plaisir à de nombreux fans du langage : le support de la programmation asynchrone.
    L'asynchronisme en Dart existe depuis bien longtemps et etait deja tres simple à utiliser grace aux Stream/Future, surtout coté utilisateur.
    Là c'est juste l'ajout de certains mot clées qui permettent d'avoir un code plus propre (eviter d'avoird 40 imbrication d'exp lambda dans certaines situations, simplifier la creation des retours des methode asynchrone...)

    Envoyé par tomlev
    Tiens, j'ai l'impression d'avoir déjà vu ça quelque part... ça ressemble étrangement à ce que propose C# 5
    C'est tres largement assumé par la DartTeam. Et ça me desole un peu qu'Anders Hejlsberg n'en fasse pas de meme pour typescript... :/
  • SurferIX
    Membre chevronné
    Envoyé par Logan Mauzaize
    Qu'est-ce que tu trouves difficile ? La programmation asynchrone ? ca n'est en rien spécifique à Dart ...
    Je n'ai jamais dit que c'était difficile, j'ai dit que la "lecture était difficile", énorme nuance.
    Je pense que tu es une personne intelligente, mais il semble te manquer un truc qui manque souvent aux personnes intelligentes : la capacité d'imaginer que beaucoup de gens ne comprendront pas aussi facilement qu'eux le code.

    Si je dis que le code est difficile à lire, ça n'est pas forcément pour moi, c'est avec du recul, la maintenabilité du programme : tout nouveau développeur aura énormément de mal à comprendre facilement et rapidement énormément de lignes de codes asynchrone. Et quand on voit le turnover énorme en entreprise, il faut toujours imaginer cela - c'est peut être ce qui est devenue une mauvaise habitude de ma part : lorsque le développeur qui a écrit ça partira, est-ce que le suivant pourra comprendre rapidement ? La réponse est : neuf chance sur dix : "non". Toi, oui, tu es le un sur dix Mais pas les neuf autres.

    Envoyé par Logan Mauzaize
    La réponse la plus évidente : l'écosystème JS (node/io.js, web browser)

    Sinon à ma connaissance (et n'étant pas vraiment au fait de ces langages) :
    • Python n'a pas de contrôle du type
    • C++ ne permet pas de s'affranchir du type (ou de l'inférer)
    • Les fonctions anonymes/lambda sont "récentes" en C++
    • Les lambdas en Python sont limitées
    • PHP n'a de généricité


    Sinon avec ce genre de philosophie, on inventerait plus grand chose ...
    Python n'a pas de contrôle du type ? Je te laisse te googler...
    C++ ne permet pas de s'affranchir du type (ou de l'inférer) Je te laisse te googler...
    Les fonctions anonymes/lambda sont "récentes" en C++ WTF
    Les lambdas en Python sont limitées
    PHP n'a de généricité

    Comme dans une autre conversation, j'ai perdu trop de temps à vouloir m'exprimer, ça ne donne pas une image positive, et je n'arriverai pas convaincre - même si je donne des éléments concrets...
    Et l'écosystème JS...
    La seule chose qui intéresse tous les développeurs JS du moment c'est : "c'est à la mode, ça m'intéresse". Vive bower, node, interact, nosql (et pas prononcer jquery c'est plus à la mode).
    Ca passera d'ici quelques années. Seuls les langages dignes de ce nom survivront. D'ailleurs pourquoi Google essaie de rajouter tout ce qui manque à JS ? Regarde tout ce qui est ajouté au fur et à mesure... c'est qu'il a de gros manques, et que ça coûte cher à une entreprise de maintenir du JS. Ils implémentent en réalité ce que le meilleur langage existant, C++, a déjà. Même chose pour tous les mauvais langages qui deviennent connus (regarde toutes les nouveautés et implémentations de Php : ils en ont marre des problèmes de typage, ils ajoutent la possibilité de préciser le type des arguments, ils en on marre du manque d'héritage multiple, ils créent les traits (au passage, quelle horreur, l'écriture des traits omg...), et je pourrais te citer chaque évolution de Php : c'est combler un manque qui existe déjà dans la plupart des bons langages). Donc quelque part, faire évoluer un langage pour qu'il ressemble à ce qui existe déjà depuis des années, c'est simplement réinventer la roue. Je suis bien content qu'à l'IUT d'Aix, ils forcent énormément sur le C++, parce qu'une fois que tu comprends ce langage, tous les autres sont faciles (voire très faciles) à apprendre.

    Donc désolé pour ne plus suivre le fil de cette conversation après ce post, mais tu dois avoir moins de 30 ans, car sinon tu verrais qu'on ré-invente systématiquement la roue pour faire les mêmes choses et je me lasse d'expliquer que je trouve inutile de réinventer la roue (sous prétexte de nouveauté) systématiquement.
  • Traroth2
    Membre émérite
    C'est moi ou Google commence à partir dans tous les sens ?
  • yahiko
    Rédacteur/Modérateur
    Pas de panique les amis. Anders Hejlsberg et son équipe ont prévu l'async/await dans la version 1.6 du compilateur TypeScript. Soit grosso modo vers la fin de l'année je présume vu que la version 1.5 devrait être publiée très prochainement.
  • Logan Mauzaize
    Rédacteur/Modérateur
    Envoyé par SurferIX
    - la première montre simplement qu'il n'y a absolument aucun intérêt à développer en dart, car la lecture est très difficile - donc la maintenance (ce qui coûte le plus cher aux entreprises) quasiment impossible (imaginez 10 fois plus de code comme ça pour une application entière)
    Qu'est-ce que tu trouves difficile ? La programmation asynchrone ? ca n'est en rien spécifique à Dart ...

    Envoyé par SurferIX
    - la seconde montre simplement que... bah ça existe déjà en Php, en Python, en CSharp et en C++. Pourquoi ré-inventer la roue ? J'aimerais comprendre les avantage supplémentaires par rapport aux autres langages. S'il n'y en a pas et que c'est juste pour le fun histoire de connaître un langage en plus, ça n'a strictement aucun intérêt du point de vue d'une entreprise.
    La réponse la plus évidente : l'écosystème JS (node/io.js, web browser)

    Sinon à ma connaissance (et n'étant pas vraiment au fait de ces langages) :
    • Python n'a pas de contrôle du type
    • C++ ne permet pas de s'affranchir du type (ou de l'inférer)
    • Les fonctions anonymes/lambda sont "récentes" en C++
    • Les lambdas en Python sont limitées
    • PHP n'a de généricité


    Sinon avec ce genre de philosophie, on inventerait plus grand chose ...
  • youtpout978
    Expert confirmé
    Je pense qu'il voulait simplement dire que le code était plus concis et de ce faite plus lisible que le gros pâté en dart.
  • Logan Mauzaize
    Rédacteur/Modérateur
    Envoyé par SurferIX
    Je n'ai jamais dit que c'était difficile, j'ai dit que la "lecture était difficile", énorme nuance.
    C'est bien ce que j'entendais également

    Envoyé par SurferIX
    Je pense que tu es une personne intelligente, mais il semble te manquer un truc qui manque souvent aux personnes intelligentes : la capacité d'imaginer que beaucoup de gens ne comprendront pas aussi facilement qu'eux le code.
    De mon expérience (et une fois de plus, n'ayant pas encore atteint le cap fatidique des 30ans, il la prendre avec des pincettes), tant qu'on explique aux gens, ils finissent par comprendre.
    Surtout apprendre une API pour un développeur ne pose généralement pas des masses de problèmes.

    Après je te l'accorde, les entreprises "gaspillent" rarement leurs temps à formerexpliquer aux nouveaux.

    Envoyé par SurferIX
    Si je dis que le code est difficile à lire, ça n'est pas forcément pour moi, c'est avec du recul, la maintenabilité du programme : tout nouveau développeur aura énormément de mal à comprendre facilement et rapidement énormément de lignes de codes asynchrone. Et quand on voit le turnover énorme en entreprise, il faut toujours imaginer cela - c'est peut être ce qui est devenue une mauvaise habitude de ma part : lorsque le développeur qui a écrit ça partira, est-ce que le suivant pourra comprendre rapidement ? La réponse est : neuf chance sur dix : "non". Toi, oui, tu es le un sur dix Mais pas les neuf autres.
    En fait on maintient déjà énormément de lignes de code asynchrone avec les moyens du bord : API graphique, dialogues réseaux, etc.

    Ceci étant, cela n'est encore et toujours pas spécifique à Dart. Certains ne saventconnaissent pas la programmation parallèle, ca ne fait pas des langages qui le permettent de mauvais langages.

    Envoyé par SurferIX
    Python n'a pas de contrôle du type ? Je te laisse te googler...
    Je n'ai rien trouvé dans le documentation de Python mais bien quelques documents de travail. Une source officielle du support du "static typing" ?

    Envoyé par SurferIX
    C++ ne permet pas de s'affranchir du type (ou de l'inférer) Je te laisse te googler...
    Je connaissais pas l'inférence de type. Mais cela reste "récent". Et quid du typage dynamique ?

    Envoyé par SurferIX
    Les fonctions anonymes/lambda sont "récentes" en C++ WTF
    2011 c'est une broutille. Ca correspond exactement à l'annonce de Dart.

    Envoyé par SurferIX
    Les lambdas en Python sont limitées
    Les lambdas sont limités à une seule expression (https://docs.python.org/3/reference/...ns.html#lambda). Bon ok, ce n'est pas peut-être pas un mal, mais c'est une limitation en soit. A la rigueur, je préfère ne pas avoir de lambda mais des "pointeurs" de fonction.

    Comme je le précisai, c'était du maigre haut de mes connaissances de ces langages que je ne connais guère.

    Envoyé par SurferIX
    Et l'écosystème JS...
    La seule chose qui intéresse tous les développeurs JS du moment c'est : "c'est à la mode, ça m'intéresse". Vive bower, node, interact, nosql (et pas prononcer jquery c'est plus à la mode).
    J'avoue que l'écosystème n'est pas très stable. Mais l'arrivée de bower, karma, npm, etc. montre que la technologie gagne en maturité. Rien ne dit si node/io survivront mais le JS dans les navigateurs risque de durer encore bien longtemps !

    Envoyé par SurferIX
    Ca passera d'ici quelques années. Seuls les langages dignes de ce nom survivront. D'ailleurs pourquoi Google essaie de rajouter tout ce qui manque à JS ? Regarde tout ce qui est ajouté au fur et à mesure... c'est qu'il a de gros manques, et que ça coûte cher à une entreprise de maintenir du JS. Ils implémentent en réalité ce que le meilleur langage existant, C++, a déjà. Même chose pour tous les mauvais langages qui deviennent connus (regarde toutes les nouveautés et implémentations de Php : ils en ont marre des problèmes de typage, ils ajoutent la possibilité de préciser le type des arguments, ils en on marre du manque d'héritage multiple, ils créent les traits (au passage, quelle horreur, l'écriture des traits omg...), et je pourrais te citer chaque évolution de Php : c'est combler un manque qui existe déjà dans la plupart des bons langages). Donc quelque part, faire évoluer un langage pour qu'il ressemble à ce qui existe déjà depuis des années, c'est simplement réinventer la roue. Je suis bien content qu'à l'IUT d'Aix, ils forcent énormément sur le C++, parce qu'une fois que tu comprends ce langage, tous les autres sont faciles (voire très faciles) à apprendre.
    On est vendredi ? :troll:
    Plus sérieusement, le C++ s'inspire également des standards du moment. Et je pense également que c'est un bon langage (mais que je connais que trop peu, surtout avec les grosses évolutions qu'il a connu).
    Mais il ne fait pas le café. Sinon il n'y aurait pas autant de langages différents.

    Envoyé par SurferIX
    Donc désolé pour ne plus suivre le fil de cette conversation après ce post, mais tu dois avoir moins de 30 ans, car sinon tu verrais qu'on ré-invente systématiquement la roue pour faire les mêmes choses et je me lasse d'expliquer que je trouve inutile de réinventer la roue (sous prétexte de nouveauté) systématiquement.
    Même avant 30ans on peut avoir connu beaucoup de choses (je dis pas que c'est mon cas ). Je vois les choses différemment : je trouve intéressant de s'améliorer systématiquement.
  • SurferIX
    Membre chevronné
    Envoyé par Hinault Romaric
    ...

    Devient plus simple avec le support de la programmation asynchrone :

    ...
    Quand je vois ces deux images, deux constats :
    - la première montre simplement qu'il n'y a absolument aucun intérêt à développer en dart, car la lecture est très difficile - donc la maintenance (ce qui coûte le plus cher aux entreprises) quasiment impossible (imaginez 10 fois plus de code comme ça pour une application entière)
    - la seconde montre simplement que... bah ça existe déjà en Php, en Python, en CSharp et en C++. Pourquoi ré-inventer la roue ? J'aimerais comprendre les avantage supplémentaires par rapport aux autres langages. S'il n'y en a pas et que c'est juste pour le fun histoire de connaître un langage en plus, ça n'a strictement aucun intérêt du point de vue d'une entreprise.