Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dart, one language to rule them all

Dart, one language to rule them all

Sébastien Deleuze

May 18, 2013
Tweet

More Decks by Sébastien Deleuze

Other Decks in Technology

Transcript

  1. Worldline   Lyon   ! Architecte logiciel (qui code)  

    Innovation Labs   ! Projets Open Sources Sébastien Deleuze
  2. Un langage structuré et flexible pour les développements Web (mais

    pas que)   ! Destiné aux navigateurs modernes   ! Pour améliorer la
 maintenabilité et l’efficacité de nos développements Dart, c’est quoi exactement ?
  3. Une plateforme Open Source Langage Outillage Machine
 virtuelle Documentation API

    Framework
 web Compilateur
 Dart / Javascript Dépôt de paquets
  4. Comparaison = Orienté Objet = Facile à apprendre = Performance

    de la JVM != Dette technologique = Les fonctions sont «first class citizens» = API asynchrone != Dart est fourni «battery-included» Modèle de thread Gestion de la concurence
  5. Langage Orienté objet, typage optionnel et interpolation de chaines import

    'dart:math';
 ! class Point {   num x, y;   ! Point(this.x, this.y);   ! num distanceTo(Point other) {   var dx = x - other.x;   var dy = y - other.y;   return sqrt(dx * dx + dy * dy);   }   }   ! main() {   var a = new Point(2, 3);   var b = new Point(3, 4);   print('distance from a to b = ${a.distanceTo(b)}');   }
  6. Langage Interfaces implicites class Person {   final _name;  

    Person(this._name);   String greet(who) => 'Hello, $who. I am $_name.';   }   ! class Bro implements Person {   String greet(who) => 'Hi $who. What’s up?';   }
  7. Langage Fonctions // Display 0 2 4 6 in the

    console main() {
 [0, 1, 2, 3, 4, 5, 6].where((n) => n.isEven).forEach(print);
 } // Display 0 2 4 6 in the console main() { var array = [0, 1, 2, 3, 4, 5, 6]; for(var n in array) { if(n.isEven) { print(n); }
 } } Version longue Version courte
  8. Langage Paramètres optionnels et valeurs par défaut String say(String from,

    String msg, [String channel='email']) {   // ...   }   ! main() {   say('Bob', 'Howdy');   say('Bob', 'Howdy', 'smoke signal');   } enableFlags({bool bold: false, bool hidden: false}) {   // ...   }   ! main() {   enableFlags();   enableFlags(bold: true);   enableFlags(bold: true, hidden: false);   } Paramètres nommés et valeurs par défaut
  9. Langage Mais aussi - Constructeurs nommés - Mixins - Modèle

    de thread léger proche d’Erlang - Métadatas - Generics - Reflection
  10. API dart:html import 'dart:html';   ! main() {   !

    var message = query('#msg');   ! var b = new ButtonElement()   ..classes.add('important')   ..text = 'Bro Code'   ..onClick.listen((e) => message.text = '''A bro does not dare/challenge another bro to do anything they wouldn’t try them self''');   ! document.body.children.add(b);   ! }
  11. API dart:io import 'dart:io';   ! main() {   HttpServer.bind('127.0.0.1',

    8080).then((server) {   server.listen((HttpRequest request) {   request.response   ..write('A bro cannot give another bro a Teddy bear')   ..close();   });   print('web server started !');   });   }
  12. Performance 0 175 350 525 700 Temps  de  chargement  d'un

     programme  de  55000  lignes  (ms) Sans  snapshot Avec  snapshot Démarrage
  13. Performance 0 50 100 150 200 250 DeltaBlue Richards Tracer

    Javascript dart2js Dart  VM Java Exécution
  14. Performance Single instruction, multiple data (SIMD) 1.0 5.0 6.0 2.0

    10.0 12.0 3.0 12.0 15.0 4.0 20.0 24.0 + = var a = new Float32x4(1.0, 2.0, 3.0, 4.0);
 var b = new Float32x4(5.0, 10.0, 15.0, 20.0);
 var c = a + b;
  15. Performance Taille javascript généré 0 45 90 135 180 Taille

     de  l'applicaJon  Todo  (Ko) AngularJS Dart AngularJS  +  jQuery
  16. Outillage pub name: myproject
 version: 1.1.0   description: Sample application

      author: Sébastien Deleuze   homepage: http://jyuro.org   documentation: http://jyuro.org/doc   dependencies:   route: 0.4.5
 mustache : '>=0.1.5'
 mylib:   git: git://github.com/jyuro/mylib.git   dev_dependencies:   unittest: any
  17. Conclusion Sébastien Deleuze - @sdeleuze Quelques liens :   -

    http://news.dartlang.org   - http://gplus.to/dartlangfr - http://try.dartlang.org/ - https://github.com/sdeleuze/polymer-dart-blog Dart 1.0 est sorti, testez-le ...