
На официальном сайте представлен технический обзор языка (перевод на русский от azproduction), спецификации (PDF), список библиотек.
Как объяснялось во внутренней переписке компании, Dart позиционируется в качестве замены/альтернативы Javascript, страдающего от «фундаментальных» изъянов, которые невозможно исправить путём эволюционного развития.
Ключевые преимущества Dart
- Классы и интерфейсы, которые обеспечивают простой и понятный механизм для чётко определённых API. Эти конструкции также обеспечивают инкапсуляцию и повторное использование методов и данных.
- Дополнительные типы (optional types), благодаря которым можно переходить от самых простых приложений к сложным модульным системам, а также использовать дебаггеры для проверки типов.
- Поддержка библиотек.
- Инструментарий. Планируется создать множество дополнительных программ в помощь разработчику.
Dart пока находится на ранней стадии разработки. Создателем языка является известный программист Ларс Бак (Lars Bak), которому помогает группа разработчиков в датском офисе. Дополнительный инструментарий делает команда Брюса Джонсона (Bruce Johnson) в Атланте, а поддержкой уровня Web Inspector для Dart и Harmony занимается Павел Фельдман (Pavel Feldman) с разработчиками из Санкт-Петербурга.
Примеры
Определение интерфейса, класса и подкласса.interface Shape {
num perimeter();
}
class Rectangle implements Shape {
final num height, width;
Rectangle(num this.height, num this.width); // Compact constructor syntax.
num perimeter() => 2*height + 2*width; // Short function syntax.
}
class Square extends Rectangle {
Square(num size) : super(size, size);
}
Вот как один и тот же класс Point можно вводить в простом коде, с параметрами x и y, без дополнительных типов.
class Point {
var x, y;
Point(this.x, this.y);
scale(factor) => new Point(x*factor, y*factor);
distance() => Math.sqrt(x*x + y*y);
}
main() {
var a = new Point(2,3).scale(10);
print(a.distance());
}
И тот же код с использованием дополнительного типа num, что нужно при росте сложности веб-приложения.
class Point {
num x, y;
Point(num this.x, num this.y);
Point scale(num factor) => new Point(x*factor, y*factor);
num distance() => Math.sqrt(x*x + y*y);
}
void main() {
Point a = new Point(2,3).scale(10);
print(a.distance());
}
Использовать Dart можно разными способами:
- трансляция в JavaScript, что поддерживается некоторыми современными браузерами (Chrome, Safari 5+, Firefox 4+);
- исполнение кода напрямую в виртуальной машине на серверной стороне;
- использовать встроенный редактор Dartboard для написания, редактирования и исполнения простых скриптов в окне браузера.
Напомним, что Dart разработан с учётом трёх главных целей:
- Производительность. Виртуальные машины на Dart не будут иметь тех проблем с производительностью, которые есть у всех машин EcmaScript.
- Удобство разработки. Будет сохранена динамическая, лёгкая в освоении, не требующая компиляции природа Javascript, которая сделала веб-платформу абсолютным лидером среди программистов-любителей.
- Поддержка редакторов кода и дополнительных инструментов. Dart спроектирован таким образом, чтобы было легче использовать дополнительные инструменты для больших серьёзных проектов, которые требуют поддержки, в том числе таких функций как рефакторинг и поиск мест вызова функций. В то же время Dart не будет требовать обязательного использования редактора кода для эффективного программирования, так что обычный разработчик вполне может быть доволен работой в текстовом редакторе.
Dart также должен обеспечивать максимальную безопасность там, где эта задача не конфликтует с тремя главными.
Предполагается, что поддержка Dart будет встроена во все браузеры как основной нативный клиентский язык (вместо Javascript), он будет использоваться на серверах фронт-енда, а также в кросс-компиляторах.
Параллельно с «революционным» вариантом, коим является Dart, компания Google будет продвигать и другой вариант решения проблемы — проект Harmony, в рамках которого будут исправлять те недостатки Javacript, какие возможно.