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

932 views

Published on

Доклад про Google Dart c Екатеринбургской встречи Web Standart Days 2012

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
932
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Dart — Светлая сторонасилы?Михаил ДавыдовJavaScript разработчик группы разработки Веб-чатовWeb Standards Days, Екатеринбург, 28 апреля 2012
  2. 2. 2
  3. 3. Проблемы JavaScript1. Длительная инициализация2. Любой объект === хэш3. Манкипатчинг, eval3
  4. 4. «Особенности» JavaScript1. Прототипы и странное наследование2. Магия с операторами, this, instanceof…3. Мало синтаксического сахара4. Нет вменяемых модулей4
  5. 5. Задача — устранить проблемы JavaScript5
  6. 6. Особенности Dart1. Структурированный, но гибкий2. Знакомый и естественный3. Быстрый при старте и работе4. Нацелен на все устройства6
  7. 7. СтруктурированностьИнтерфейсы: Map, List, Set, Queue...// Более стукрурированныйMap items = new Map();// Но гибкийvar items = {};// Опциональный типString name = Dart;// var name =7
  8. 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. Разделяемая куча, Images9
  10. 10. Мне кажется иливсе очень хорошо?10
  11. 11. Опциональные типыQueue callbacks = new Queue();callbacks = 1000; // IDE Warningcallbacks.add((x)=>x++); // Error!11
  12. 12. Тип == документацияQueue callbacks = new Queue();// фактически эквивалентно для JS/** * @type {Queue} */var callbacks = new Queue();12
  13. 13. Привкус JavaAssertionError, Clock, Expect, FallThroughError,Futures, Math, Object, Strings, TypeError,Collection<E>, Comparable, Completer<T>, Date ,double, Duration , Dynamic, Function, Future<T>...13
  14. 14. if (Dart is VBScript) return JavaScript;14
  15. 15. 15
  16. 16. 16
  17. 17. 17
  18. 18. Это маловероятно18
  19. 19. Dart-to-JavaScript?19
  20. 20. Проблемы трансляции1. Нет обратной совместимости2. Лишний код и тормоза3. Сложная отладка20
  21. 21. Ни что не раздражает больше, чем новый язык программирования (с)21
  22. 22. PROFIT от Dart для JS22
  23. 23. Ленивая инициализацияLMD — Ленивая декларация модулей — Всего 250 байт === быстрый старт — Внедряется в Вебчате на Я.Почте http://clck.ru/mEML23
  24. 24. Callable ObjectObject.createCallableObject =function (f, proto) { for (var prop in proto) f[prop] = proto[prop]; return f;}24
  25. 25. Именованные конструкторыvar LatLon = function (lat, lon){};LatLon.fromString = function (coords){};LatLon.fromString.prototype =LatLon.prototype = { distanceTo: function (latLon){}};new LatLon(1, 2); // instanceof LatLonnew LatLon.fromString(1,2);// instanceof LatLon25
  26. 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 Listlist.push(1); // Без изменений26
  27. 27. Итого + Много возможностей - Дистрибуция = ??? + Профит для JavaScript27
  28. 28. Вопросы?28
  29. 29. Михаил Давыдов JavaScript и Node.js разработчик azproduction@yandex-team.ru Twitter @azproduction Habr http://azproduction.habrahabr.ru GitHub https://github.com/azproduction29

×