dimanche 16 octobre 2011

Bientôt Le Langage DART De Google !


On le savait depuis qu’un email interne avait fuité le mois dernier, Google préparait un nouveau langage de programmation pour le Web, appelé alors Dash et destiné à combler les lacunes de JavaScript. C’est à la conférence GOTO qui se tenait cette semaine au Danemark que la firme de Mountain View a officiellement dévoilé Dart.

Les limites de JavaScript

Développer des applications à grande échelle pour le web en JavaScript se heurte aujourd’hui à de nombreux obstacles : lenteur inhérente au langage de script, difficulté à structurer un programme (et à posteriori à retrouver la structure d’un programme), absence de typage statique, bibliothèque native et outillage insuffisants…
Bien sûr, d’immenses progrès ont été faits. Concernant la performance, Google a été le premier à s’attaquer au problème en proposant son moteur V8 dans Chrome, suivi par Mozilla avec Monkey, Microsoft avec Chakra et Apple avec Nitro. Aujourd’hui, toutes les astuces ont été utilisées (compilation à la volée JIT, exploitation des processeurs multi-cœurs, accélération matérielle par le GPU…), on arrive aux limites des optimisations. Un langage de script n’attendra jamais la performance d’un langage compilé.
Concernant l’outillage, les frameworks et les outils se mutliplient et visent de plus en plus l’entreprise. Mais il n’y a toujours pas de vrai IDE, et le langage est trop malléable pour des opérations de maintenance telles que le refactoring. L’absence de classes, de variables typées, de système de module rendent l’élaboration et la maintenance des grands programmes encore complexes.

Google jette sa fléchette

Pour pallier à ces inconvénients, Google lance un nouveau langage. Selon Lars Bark, un des créateurs de Dart, « Les objectifs sont de créer un langagestructuré mais flexiblefamilier et naturel donc facile à apprendre pour les programmeurs, délivrant des performances élevées sur tous les navigateurs et les plates-formes modernes, depuis les périphériques mobiles jusqu’aux serveurs d’exécution.» Vaste programme.
Dart reprend et étend les fonctionnalités de JavaScript, mais avec une syntaxe héritée de Java : orienté objet, basé sur les classes (héritage simple, interfaces..), avec typage optionnel.
Un programme Dart s’exécute selon deux modes : dans une machine virtuelle dédiée, ou dans un moteur JavaScript après être passé par un compilateur Dart vers JavaScript. Cette seconde possibilité le rend théoriquement compatible avec tous les navigateurs. Dans la pratique, seules les versions récentes des navigateurs modernes sont pour l’instant supportées. Il est également prévu qu’il puisse tourner dans un VM sur le serveur, à la manière de PHP.
Encore en version Technology Preview, Dart est fourni en open source :
·        http ://dartlang.org : la spécification du langage et un tutorial
·        http ://dart.googlecode.com : les sources des bibliothèques, des exemples de code, de la machine virtuelle Dart, du compilateur Dart vers JavaScript, etc.
Pour l’heure, seuls les outils et la machine virtuelle sous Linux sont fournis. Google envisage d’intégrer la machine virtuelle dans Chrome, mais rien n’est encore planifié.

Hello World

A quoi ressemble Dart ?  Par exemple le programme HelloWorld s’écrit :
class HelloDartTest {
  static testMain() {
    print(“Hello, Darter!”);
  }
}
 
main() {
  HelloDartTest.testMain() ;
}
Compilé en JavaScript, ce programme se traduit par 17 259 lignes de code JavaScript (soit 538 Ko), ce qui a bien fait se gausser la communauté JavaScript.  Cependant, en rajoutant l’option –optimize, on élimine le code mort et on réduit notablement la taille du code (de 538 Ko à 28 Ko). Bien sûr, Dart n’est pas conçu pour écrire des programmes de type Hello World.
En résumé, quelques caractérisques de Dart comparées à JavaScript :        

JavaScript
Dart
Type
Script
Compilé
modèle objet
Prototype
Classes, interfaces
Typage
Dynamique
Dynamique et statique
Types génériques
Non
Oui
Surcharge opérateur
Non
Oui
Gestion des erreurs
Non
Oui
Modèle de threading
Web Workers
Isolate
Système modulaire
Non
Bibliothèque
Implémentation
Tous les navigateurs
Aucune
Plate-forme de dev
Toutes
Linux 

#Cool !

Dart a reçu un accueil pour le moins mitigé de la part de la communauté des développeurs. Intéressant, sympathique pour les uns, sans valeur ajoutée, inadapté pour les autres, Dart crée la polémique. Ce que les partisans de Dart en disent :
  • Dart n’introduit pas de rupture technologique, il reste à la fois pragmatique et familier dans ses concepts et sa syntaxe. Les développeurs ne devraient pas avoir de mal à se l’approprier.
  • Dart est adapté à toutes les tailles de projet, depuis les petits scripts jusqu’aux grandes applications d’entreprise. Le typage optionnel combine la souplesse du typage dynamique du JavaScript avec la rigueur du typage statique de Java. Une grande entreprise peut par exemple mettre en place des règles autorisant les expérimentations non typées lors du développement, mais nécessitant l’élimination de toutes les erreurs de typage avant le déploiement.
  • Dart résout de manière simple et élégante le parallélisme : avec le concept d’Isolate, les processus mono-threads passent des messages entre eux sans partage d’état ni de verrouillage explicite. En cela il s’inspire des Actor Models d’Erlang, des web workers en JavaScript/HTML5, ou encore des channels en Go.

#Fail !

Ce que les détracteurs répliquent : 
  • Pour de nombreux développeurs, les fondations du web restent HTML, CSS et JavaScript, des technologies sur lesquelles ils ont investi et qui leur permet déjà de faire des choses extraordinaires, malgré les limitations. Dart n’apporte pas grand-chose dans la mesure où il n’y a pas de « killer feature ».
  • Dart n’apporte pas grand-chose par rapport à CoffeeScript par exemple, un langage mutli-paradigme qui se compile lui aussi en JavaScript.
  • La plupart des lacunes de JavaScript (bibliothèques/modules, classes…) seront comblées dans la future version d’ECMAScript Harmony. Dart va à l’encontre des efforts de standardisation
  • La tendance dans le développement web depuis quelques années est d’aller vers des langages dynamiques tels que Ruby ou Python, s’éloignant des langages dérivés de C.
  • Dart semble s'adresser plutôt aux grandes entreprises et n'intéresse pas les développeurs web.  
  • Source: http://www.zdnet.fr/blogs/developpeur-zone/mais-que-nous-prepare-donc-google-avec-dart-39764845.htm
  • Partagez Si Vous Avez Aimé !