Сегодня компания Google официально представила новый язык структурного веб-программирования Dart, который позволит создавать быстрые и высокопроизводительные веб-приложения. При всей своей простоте для написания маленьких скриптов, с помощью Dart можно будет создавать и сложные модульные веб-приложения, использовать библиотеки, дебаггеры, редакторы кода и другой инструментарий.
На официальном сайте представлен технический обзор языка (перевод на русский от azproduction), спецификации (PDF), список библиотек.
Как объяснялось во внутренней переписке компании, Dart позиционируется в качестве замены/альтернативы Javascript, страдающего от «фундаментальных» изъянов, которые невозможно исправить путём эволюционного развития.
Ключевые преимущества Dart
Dart пока находится на ранней стадии разработки. Создателем языка является известный программист Ларс Бак (Lars Bak), которому помогает группа разработчиков в датском офисе. Дополнительный инструментарий делает команда Брюса Джонсона (Bruce Johnson) в Атланте, а поддержкой уровня Web Inspector для Dart и Harmony занимается Павел Фельдман (Pavel Feldman) с разработчиками из Санкт-Петербурга.
Вот как один и тот же класс Point можно вводить в простом коде, с параметрами x и y, без дополнительных типов.
И тот же код с использованием дополнительного типа num, что нужно при росте сложности веб-приложения.
Использовать Dart можно разными способами:
Напомним, что Dart разработан с учётом трёх главных целей:
Dart также должен обеспечивать максимальную безопасность там, где эта задача не конфликтует с тремя главными.
Предполагается, что поддержка Dart будет встроена во все браузеры как основной нативный клиентский язык (вместо Javascript), он будет использоваться на серверах фронт-енда, а также в кросс-компиляторах.
Параллельно с «революционным» вариантом, коим является Dart, компания Google будет продвигать и другой вариант решения проблемы — проект Harmony, в рамках которого будут исправлять те недостатки Javacript, какие возможно.
На официальном сайте представлен технический обзор языка (перевод на русский от 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, какие возможно.