IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Wren, un petit langage de script concurrent rapide basé sur des classes est en cours de conception


Sujet :

Langages de programmation

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2014
    Messages
    1 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 1 089
    Points : 26 555
    Points
    26 555
    Par défaut Wren, un petit langage de script concurrent rapide basé sur des classes est en cours de conception
    Wren, un petit langage de script concurrent rapide basé sur des classes est en cours de conception
    il souhaite faire de l’ombre aux autres langages de script par sa concision et ses performances

    Les langages de script, on en a à foison. PowerShell, JavaScript, Bash, AppleScript, Python, Ruby, Lua pour ne citer que ceux-là sont autant de langages de script qui sont disponibles et répondent à des besoins spécifiques. À cette pléthore de langages vient s’ajouter un nouveau langage de script nommé Wren. Il est encore à la version 0.4 et donc en cours de conception. Mais apportera-t-il quelque chose de nouveau dans le paysage surchargé des langages de script ?

    Selon la description faite par les développeurs du langage, Wren est un petit langage de script concurrent rapide basé sur des classes. Il s’apparente à Smaltalk dans un package de Lua avec un soupçon d’Erlang et enveloppé dans une syntaxe moderne et familière, peut-on lire sur la page officielle du langage. Bien évidemment, chaque équipe de développement d’un langage peut aligner tous les superlatifs qui lui vient à l’esprit pour qualifier son langage. Aussi pour mieux comprendre les caractéristiques mis en avant par les développeurs, ces derniers donnent les détails suivants :

    • Wren est petit, car l’implémentation de la machine virtuelle est inférieure à 4 000 points-virgules. Vous pouvez parcourir le tout en un après-midi. C’est petit, mais pas dense. C’est lisible et commenté avec amour ;
    • Wren est rapide, car avec un compilateur rapide en un seul passage pour un bytecode réduit et une représentation d’objet compacte, Wren peut rivaliser avec d’autres langages dynamiques ;
    • Wren est basé sur des classes : il existe de nombreux langages de script, mais beaucoup ont des modèles d’objets inhabituels ou inexistants. Wren place les classes au premier plan et au centre ;
    • Wren est concurrent : les fibres légères sont au cœur du modèle d’exécution et vous permettent d’organiser votre programme en un ensemble de coroutines communicantes.
    • Wren est un langage de script : il est destiné à être intégré dans des applications. Il n’a aucune dépendance, une petite bibliothèque standard et une API C facile à utiliser. Il se compile proprement en C99, C++98 ou quoi que ce soit de plus récent.


    Ci dessous, un aperçu du code Wren :

    Code Wren : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    System.print("Hello, world!")
     
    class Wren {
      flyTo(city) {
        System.print("Flying to %(city)")
      }
    }
     
    var adjectives = Fiber.new {
      ["small", "clean", "fast"].each {|word| Fiber.yield(word) }
    }
     
    while (!adjectives.isDone) System.print(adjectives.call())

    Un premier parcours du code montre un code moins verbeux que d’autres langages de script. Toutefois, est-ce un argument de poids pour pousser les développeurs à se ruer vers lui ? Bien évidemment, non. Pour convaincre les programmeurs qui majoritairement sont réticents à apprendre de nouveaux langages, Bob Nystrom, le développeur à l’origine de Wren, ayant également développé Magpie et Finch, et travaillant actuellement sur Dart, explique que Wren a été créé sur les bases de Lua. SI vous aimez Lua et la programmation orientée objet, vous aimerez certainement Wren. En guise d’exemple, Nystrom présente ces deux bouts de code en appliquant le modèle de la programmation orientée objet.

    En Lua, ça donne ceci :

    Code Lua : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    -- account.lua
     
    Account = {}
    Account.__index = Account
     
    function Account.create(balance)
       local acnt = {}             -- our new object
       setmetatable(acnt,Account)  -- make Account handle lookup
       acnt.balance = balance      -- initialize our object
       return acnt
    end
     
    function Account:withdraw(amount)
       self.balance = self.balance - amount
    end
     
    -- create and use an Account
    account = Account.create(1000)
    account:withdraw(100)

    En Wren, le même code donne cela :

    Code Wren : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //account.wren
    
    class Account {
      construct new(balance) { _balance = balance }
      withdraw(amount) { _balance = _balance - amount }
    }
    
    // create and use an Account
    var account = Account.new(1000)
    account.withdraw(100)

    Il explique que les classes ont la réputation d’être complexes, car la plupart des langages largement utilisés avec elles sont assez complexes : C++, Java, C#, Ruby et Python. Avec Wren, il espère montrer que ce sont ces langages qui sont complexes, et non les classes elles-mêmes. Il ajoute que Smalltalk, le langage qui a inspiré la plupart de ces langages, est célèbre pour sa simplicité. Sa syntaxe tient sur une fiche. Son objectif est donc de garder Wren aussi minimal tout en conservant le pouvoir expressif des classes.

    En plus d’être concis, Wren se veut également performant. Après avoir exécuté un code à dix reprises avec plusieurs langages sur un MacBook pro 2,3 GHz Intel Core i7 doté de 16 Go de RAM DDR3 à 1 600 MHz et conservé le meilleur temps, Nystrom rapporte les résultats suivants :

    Nom : Wren Benchmark.png
Affichages : 166975
Taille : 35,7 Ko
    Les barres plus courtes traduisent les meilleures performances

    Dans la plupart des tests, Wren a la meilleure performance. Selon Nystrom, cela est dû aux décisions de conception qui ont été prises comme le fait que les classes sont définies de manière relativement statique, mais aussi l’implémentation du concept de signature de méthodes, du compilateur en une seule passe et l’usage par l’interpréteur de bytecode des boucles Goto calculés.

    Toutefois, Wren n’a pas que de bons côtés. L’utilisateur Xscott fait remarquer que Wren semble assez élégant, mais il fait la même erreur que beaucoup de langages quand il s’agit de surcharger les opérateurs. Si vous mettez l’opérateur binaire comme méthode sur le premier objet, il n’y a pas de moyen simple d’avoir « builtin_object <operator> your_object ». De même, Wren ne fournit pas de nombres complexes, aussi vous n’obtiendrez donc pas une belle syntaxe pour « 1/z » ou quelque chose de ce genre. Et c’est le cas pour la multiplication scalaire avec les vecteurs, les matrices ou les tableaux de style Numpy, etc. Python et d’autres langages ont des solutions de rechange pour contourner ce problème, mais pas Wren. Pour ce dernier, les opérateurs binaires devraient être des fonctions à 2 arguments, pas des méthodes sur l’objet de gauche.

    Mais pour l’équipe de Wren, ces reproches ne sont pas des erreurs, mais juste un compromis délibéré, Wren étant fondamentalement conçu pour être un langage très petit, simple, mais flexible. Elle souligne que la distribution unique fonctionne très bien comme pour 90 % des types d’opérations que vous souhaitez effectuer dans les programmes. Il lit très bien syntaxiquement et évite d’avoir à espacer chaque fonction avec son type d’argument comme vous le voyez en C et Scheme (hash-remove !, dict-remove !, set-remove !, etc.). Et il le fait sans avoir besoin de types ou de résolution statique. De plus, il est simple de compiler quelque chose d’assez efficace à l’exécution en utilisant une structure de type vtable. Concernant les opérateurs binaires, ça craint. Mais trouver une meilleure solution pour cela nécessite une solution trop élaborée. Les types statiques et les méthodes multiples représentent un énorme saut de complexité. L’approche de Python est vraiment lente. Pour Wren, un choix a été fait afin de le rendre petit et expressif, ce qui signifie que les opérateurs ne sont pas symétriques et c’est plutôt bien, conclut le mainteneur.

    Wren est actuellement en version 0.4, ce qui signifie qu’il va falloir attendre un bout de temps avant de l’utiliser en production.

    Source : Wren

    Et vous ?

    Que pensez-vous de Wren ?

    Pourra-t-il s’imposer dans le monde des langages de script s’il parvient à atteindre sa première version stable ?

    Selon vous, quels sont ses avantages et ses inconvénients ?

    À votre avis, qu’est-ce que Wren devrait intégrer comme atouts pour pouvoir s’imposer dans le monde des langages de script ?

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juillet 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Juillet 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Wren un langage utilisable ?
    Je connais Wren depuis un peu plus d'un an. Je suis tombé dessus suite à des recherches personnelles sur les VM et la création d'interpréteur et/ou compilateurs pour des langages de la famille du Smalltalk (comme squeak, Pharo, etc.).

    En fait, Wren est le successeur d'un démonstrateur, un langage jouet un peu évolué pour illustrer le cours et le livre écrits par Nystrom : http://www.craftinginterpreters.com/, un site remarquablement bien fait au demeurant, qui vous apprendra beaucoup de choses sur la création d'une VM, et d'un interpréteur de langage : le Lox.

    De là à le présenter comme un langage sérieux ... c'est s'avancer un peu : on voit fleurir tellement de langages qui promettaient beaucoup au début et qui sont ensuite rapidement tombés dans l'oubli du fait d'une syntaxe rendant le code complexe à comprendre et à maintenir, ou parce qu'ils ne répondent pas à certains besoins primordiaux (gestion et manipulation des fichiers et de leur contenu, communiquer facilement avec des programmes externes via TCP/IP, etc.) ! Alors Wren propose bien un interfaçage avec le C, mais pour l'instant il y a tout un travail d'encapsulation des fonctions utiles, de création de librairies wren qui reste à faire. C'est un gros chantier

Discussions similaires

  1. Réponses: 14
    Dernier message: 19/11/2017, 14h07
  2. Réponses: 3
    Dernier message: 04/01/2011, 15h05
  3. Réponses: 5
    Dernier message: 14/04/2010, 10h47
  4. Réponses: 6
    Dernier message: 13/11/2007, 12h06
  5. Réponses: 3
    Dernier message: 08/09/2003, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo