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

Dart — Светлая сторона силы?

Dart — Светлая сторона силы?

B827d6cfdfbcfce33700b0e6cc03e344?s=128

Mikhail Davydov

October 11, 2012
Tweet

Transcript

  1. Dart — Светлая сторона силы? Михаил Давыдов JavaScript разработчик группы

    разработки Веб-чатов Web Standards Days, Екатеринбург, 28 апреля 2012
  2. 2

  3. 3 Проблемы JavaScript 1. Длительная инициализация 2. Любой объект ===

    хэш 3. Манкипатчинг, eval
  4. 4 «Особенности» JavaScript 1. Прототипы и странное наследование 2. Магия

    с операторами, this, instanceof… 3. Мало синтаксического сахара 4. Нет вменяемых модулей
  5. Задача — устранить проблемы JavaScript 5

  6. Особенности Dart 6 1. Структурированный, но гибкий 2. Знакомый и

    естественный 3. Быстрый при старте и работе 4. Нацелен на все устройства
  7. // Более стукрурированный Map items = new Map(); // Но

    гибкий var items = {}; // Опциональный тип String name = 'Dart';// var name = 7 Структурированность Интерфейсы: Map, List, Set, Queue...
  8. #library('Geometry'); class Rect { final num h, w; // короткий

    конструктор Rect(num this.w, num this.h); } class Square extends Rect { Square(num w): super(w, w); } 8 Естественные классы
  9. Быстрый старт и работа 9 1. Декларативные классы 2. Нет

    eval и манкипатчинга 3. Разделение выполнения и инициализации 4. Разделяемая куча, Images
  10. Мне кажется или 10 все очень хорошо?

  11. Queue callbacks = new Queue(); callbacks = 1000; // IDE

    Warning callbacks.add((x)=>x++); // Error! 11 Опциональные типы
  12. Queue callbacks = new Queue(); // фактически эквивалентно для JS

    /** * @type {Queue} */ var callbacks = new Queue(); 12 Тип == документация
  13. 13 Привкус Java AssertionError, Clock, Expect, FallThroughError, Futures, Math, Object,

    Strings, TypeError, Collection<E>, Comparable, Completer<T>, Date , double, Duration , Dynamic, Function, Future<T>...
  14. if (Dart is VBScript) return JavaScript; 14

  15. 15

  16. 16

  17. 17

  18. 18 Это маловероятно

  19. Dart-to-JavaScript? 19

  20. Проблемы трансляции 20 1. Нет обратной совместимости 2. Лишний код

    и тормоза 3. Сложная отладка
  21. Ни что не раздражает больше, чем новый язык программирования (с)

    21
  22. PROFIT от Dart для JS 22

  23. 23 Ленивая инициализация LMD — Ленивая декларация модулей — Всего

    250 байт === быстрый старт — Внедряется в Вебчате на Я.Почте http://clck.ru/mEML
  24. Object.createCallableObject = function (f, proto) { for (var prop in

    proto) f[prop] = proto[prop]; return f; } 24 Callable Object
  25. var LatLon = function (lat, lon){}; LatLon.fromString = function (coords){};

    LatLon.fromString.prototype = LatLon.prototype = { distanceTo: function (latLon){} }; new LatLon(1, 2); // instanceof LatLon new LatLon.fromString('1,2'); // instanceof LatLon 25 Именованные конструкторы
  26. var List = function (type) { if (this instanceof List)

    return []; var L = function () {this.items = []}; L.prototype.push: function (item) { if (!type || item instanceof type) // or typeof return this.items.push(item); }; return L; }; new List(); // Array == [] // С типом var list = new (List(Function))(); // Generic List list.push(1); // Без изменений 26 Обобщенные списки
  27. 27 Итого + Много возможностей - Дистрибуция = ??? +

    Профит для JavaScript
  28. Вопросы? 28

  29. Михаил Давыдов JavaScript и Node.js разработчик azproduction@yandex-team.ru Twitter @azproduction Habr

    http://azproduction.habrahabr.ru GitHub https://github.com/azproduction 29