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

JavaScript Discussion :

Imba, le nouveau langage se compilant en JavaScript est disponible


Sujet :

JavaScript

  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 554
    Points
    26 554
    Par défaut Imba, le nouveau langage se compilant en JavaScript est disponible
    Imba, le nouveau langage se compilant en JavaScript est disponible
    avec un support natif pour les tags et une lisibilité du code compilé

    Le grand succès de JavaScript pousse les développeurs à proposer sans cesse des améliorations à ce langage de scripts. Au rang des langages dérivés, nous avons CoffeScript, Dart, TypeScript, LiveScript, Caffeine pour ne citer que ceux-là.

    À nouveau, un développeur norvégien du nom de Sindre Aaarsaether vient de mettre sur la toile un nouveau langage se compilant en JavaScript dénommé imba. Ce langage est le fruit de plus de six années de réflexions menées dans le but de faire tourner Ruby dans les navigateurs.

    De ces recherches est née CoffeScript, un langage amélioré se compilant en JavaScript et offrant plus de lisibilité et de concision dans le code. Non satisfaits des résultats, les initiateurs du projet entreprennent des travaux en 2012 en créant un fork de CoffeScript. C’est cette fourche qui a donné naissance à imba, le nouveau langage se compilant en JavaScript.

    Ce dernier dispose de fonctionnalités pour la définition, l’extension, le sous-classement, l’instanciation et le rendu des nœuds du DOM. Comme avantage mis en avant, il se trouve qu’imba dispose d’un support natif pour les tags et les sélecteurs. De même, le code compilé est très lisible et extrêmement performant. À titre d’exemple, on peut faire une comparaison entre le code écrit avec imba et celui qui a été compilé.

    Code imba
    Code : 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
    20
    21
    22
    23
     
    var number = 42
    var opposite = true
    var string = "the answer is {number}"
    var regex = /answer is (\d+)/
     
    # Functions:
    var square = do |x| x * x
     
    # Arrays:
    var list = [1, 2, 3, 4, 5]
     
    # Objects:
    var math =
    	square: square
    	cube: do |x| x * math.square(x)
    	rand: do Math.random
     
    # Array comprehensions:
    var cubes = (math.cube num for num in list)
     
    # Implicit calling:
    math.rand.toFixed 2
    Code compilé en JavaScript
    Code : 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
    20
    21
    22
    23
    24
    25
    26
     
    var number = 42
    var opposite = true
    var string = ("the answer” is number)
    var regex = /answer is (\d+)/;
     
    // Functions:
    var square = function(x) { return x * x; };
     
    // Arrays:
    var list = [1, 2, 3, 4, 5];
     
    // Objects:
    var math = {
    	square: square,
    	cube: function(x) { return x * math.square(x); },
    	rand: function(x) { return Math.square(); }
    };
     
    // Array comprehensions:
    For (var cubes = [], i=0 len=list.lenght; i < len; i++) {
    	cubes.push(math.cube(list[i]));
    };
     
    // Implicit calling:
    math.rand().toFixed(2);
    Comme on le constate, le code compilé reste très lisible. Aaarsaether avance que « un de nos principaux objectifs a toujours été de garder le code compilé aussi lisible que possible. Tous les indentations et commentaires devraient être préservés ». Et d’ajouter « nous voulons qu’il soit aussi aisé que possible de passer à Imba et y revenir ».

    Pour ce qui est des performances de ce langage en matière de rendu des applications, Aaarsaether soutient que « pour une application semi-complexe comme TodoMVC, il est plus de 20 fois plus rapide que de React avec moins de code, et une bibliothèque beaucoup plus petite ».

    Enfin, on peut également noter qu’avec ce langage tout est considéré comme une expression.

    Toutefois, bien que la première version n’ait pas encore été libérée, vous pouvez déjà effectuer des tests et poster des commentaires sur GitHub en vue d’accélérer la sortie de la version stable.

    Télécharger Imba (zip)

    Source : Imba

    Et vous ?

    Que pensez-vous de ce nouveau langage ?

    Allez-vous l’utiliser pour vos applications ?
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre éprouvé
    Avatar de octal
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 441
    Points : 957
    Points
    957
    Par défaut
    La seule vraie nouveauté est la "lisibilité" du code généré. Sinon, avec LLVM, il y avait déjà un backend qui générait du JavaScript. Du coups, tous les frontEnd LLVM (C, C++, ObjC, D, Modula2, ...) sont potentiellement capables d'être compilés en JavaScript. Il me semble d'ailleur que c'est comme cela que les google Labs avaient réussi à porter certains jeux DOS sous Chrome sans passer par un émulateur hardware.
    http://www.pocketmt.com GLCD Font Creator home site.

  3. #3
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Basé sur l'indentation, et tout est interprété comme une expression multi-line Fuyez, pauvre fous !
    Code imba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var answer = if number == 42
    	'eureka'
    elif 43 > number > 41
    	'closeish'
    else
    	'fat chance'

    Si l'objectif est de gagner en lisibilité, d'après moi il va dans la direction opposée. Enfin, c'est un sujet très subjectif... je me contenterai de le rajouter à la liste des centaines de langages compilant en JS qui n'ont jamais décollé.
    One Web to rule them all

  4. #4
    Membre éprouvé
    Avatar de octal
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 441
    Points : 957
    Points
    957
    Par défaut
    Citation Envoyé par SylvainPV Voir le message
    Basé sur l'indentation, et tout est interprété comme une expression multi-line Fuyez, pauvre fous !
    ...
    Si l'objectif est de gagner en lisibilité, d'après moi il va dans la direction opposée. Enfin, c'est un sujet très subjectif... je me contenterai de le rajouter à la liste des centaines de langages compilant en JS qui n'ont jamais décollé.

    Python est bien basé sur l'indentation, et les codes Python sont très lisibles (tout le monde écrit de la même manière).
    http://www.pocketmt.com GLCD Font Creator home site.

  5. #5
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Le but de l'indentation étant justement de gagner en lisibilité, ce serait un peu contradictoire. Ma remarque sur la lisibilité ne concernait pas l'indentation mais les expressions multi-ligne.

    Par rapport à l'indentation, je soutiens qu'il est essentiel d'avoir un code bien indenté, mais faire un langage où la quantité d'espaces blancs détermine la logique d'un code est une aberration selon moi. Je considère Python comme un excellent langage, et la règle du off-side cille un de ses gros défauts. On ne peut pas mélanger tabulations et espaces pour indenter, ce qui a amené les gens à indenter avec des espaces uniquement. Hérésie !
    One Web to rule them all

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 31
    Points : 44
    Points
    44
    Par défaut
    De très bonnes idées, qui ont déjà été explorées, mais manque de typage statique, ça aurait pu être intéressant il y a 3-4 ans.

  7. #7
    Membre averti Avatar de marts
    Inscrit en
    Février 2008
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 233
    Points : 425
    Points
    425
    Par défaut
    Le code compilé est bourré d'erreurs !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var string = ("the answer” is number)
    Le guillemet qui ferme est mal positionné, et de plus ce n'est pas le même caractère que celui qui ouvre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For (var cubes = [], i=0 len=list.lenght; i < len; i++) {
    "for" sans majuscule serait mieux.
    Il manque une virgule après "i=0".

    Est-ce le compilateur ou juste le rédacteur de l'article qui n'est pas au point ?...
    11001.00101.10010.10000.00111

  8. #8
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    D'après la source, c'est une erreur de retranscription dans l'article. Soyez indulgents, les outils de rédaction sont assez casse-pieds avec les guillemets.
    One Web to rule them all

  9. #9
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Je suis allé à la source, le seul intérêt qu'il pourrait y avoir à Imba selon moi c'est la fusion du langage avec le DOM, pour le reste JS s'en sort très bien.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

Discussions similaires

  1. Nouveau langage de programmation : le langage G
    Par G-FACTION dans le forum Autres langages
    Réponses: 10
    Dernier message: 19/07/2009, 19h58
  2. "Rentring" : est-ce un nouveau langage ?
    Par sergi_o dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 24/11/2006, 23h35
  3. Nouveau langage : le D
    Par cheick dans le forum D
    Réponses: 4
    Dernier message: 30/05/2004, 15h56

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