Если вы хотите создавать клиент-серверные веб-приложения, веб-сайты, скрипты, миниигры и вы еще не адепт JS, то ответ однозначно «Да». Если вы флэш разработчик и хочется вновь делать что-то, что запустится в браузере, я бы сказал «Да». Если вы просто хотите научиться программировать и еще не знаете ни одного языка, то Dart будет хорошим и приятным стартом. Под катом я постараюсь развернуть каждое утверждение.

Я не знаю ни одного языка программирования, почему именно Dart?

Потому, что можно начать с азов программирования без оглядки на окружение. Это сложно сделать, начиная свой путь с JS, кто-то должен подсказать, что нужно установить NodeJS, а потом придётся объяснить, чем JS из Node отличается от того, что в браузере.

Консольное приложение на Dart, оно же серверное, оно же скриптовое может выглядеть вот так:
main() {// Точка входа приложения, прямо как в С
  var language = "Dart"; // Объявляем переменную
  print('Я хочу изучить $language.'); // Выводим в консоль.
}

Начав с Dart, вы потом с лёгкостью сможете перейти на C# или Java. А немного освоившись вы сможете написать что-то, что можно разместить на веб-страничке и похвастаться перед кем-то своими успехами просто отправив ссылку.

Я флэш-разработчик, с какой стороны подойти?

У Dart есть такая библиотека как StageXL, это адаптация API из flash. И в целом Dart отличается не сильно от AS3 и в лучшую сторону. А с использованием Dart Toolkit for Flash можно делать арт и анимации прямо во Flash professional, а потом использовать их. Мне как бывшему AS3-программисту даже не пришлось привыкать к новому языку, всё пошло как по накатанной.

Как делать миниигры?

Как уже сказано немного выше, StageXL и Dart Toolkit for Flash это именно то, что нужно. Можно смотреть уроки по игрострою на флэш, а потом применять их в Dart.

Как делать скрипты и что они могут?

Вместе с SDK поставляется виртуальная машина, в этом плане у Dart те же возможности что у Python или любого другого подобного скриптового языка. Парсить сайты или грабить картинки, работать с локальными файлами, это всё в пределах возможностей.

Всё-таки я хочу писать сайты, что может Dart?

Во первых есть AngularDart, высокоуровневая абстракция, позволяет писать сайт модульно с использованием компонентов, использовать связывание переменных с UI. Доступна так же библиотека Angular2. Для тех, кто любит компоненты, но не любит монстров как Angular, есть Polymer. А если хотите что-то быстро сваять в стиле Material Design, то есть Material Design Lite for Dart.

А что там с сервером, я хочу бэкенд писать уже сегодня?

Для таких случаев есть Redstone.
import 'package:redstone/server.dart' as Server;

void main() {
  Server.setupConsoleLog();
  Server.start();
}

Всё, Карл, сервер запущен и работает. Больше ничего не нужно, ты понимаешь, Карл?
Вы скажете, что этот сервер ничего не умеет, а я скажу, что очень просто научить, добавив вот эти строки:
@Server.Route("/hello")
String hello() {
  print("User soliciting greeting...");
  return "Привет, браузер!";
}

И теперь, запустив сервер и открыв страничку по адресу «http:// localhost:8080/hello», мы увидим «Привет, браузер!».

А смогу ли я на этом языке писать мобильные приложения как на JS с использованием Cordova?

В этом направлении язык только начал двигаться, есть первые два проекта, которые решают эту задачу, но они совершенно не готовы к коммерческому использованию.

Заключение.

В заключении хочу сказать, что для меня основным преимуществом языка является наличие StageXL и интеграции с Flash Professional. Это позволяет так же легко писать простенькие игры и интерфейсы как это было раньше. Если сравнивать Dart с нынешним JS, то преимуществ много, но они очевидны только для тех, кто приходит из таких языков как Java, C#, C++. Если сравнивать с TypeScript, то выбор в пользу Dart становится менее очевидным и это скорее не выбор по каким-то объективным параметрам, а просто по принципу нравится/не нравится. Сравнить Dart с GWT или чем-то подобным я не могу, т. к. не имею опыта. Однако наличие в одном языке всех плюшек (Angular, Polymer, StageXl, Flash Toolkit, Redstone и красивого синтаксиса) делает его одним из лидеров, на которого точно стоит взглянуть тем, кто хочет начать веб-разработку.
Нужны ли уроки для новичков по Dart?

Проголосовало 289 человек. Воздержалось 89 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Комментарии (3)


  1. TyVik
    21.10.2015 18:24

    А как у него с производительностью в плане графики? (webGL или openGL, извините, здесь не силён). Есть большое приложение на js, которое позволяет работать с 3D моделями, даст ли переход на dart прирост производительности? Потянет ли его iOS/Android? Вопрос не праздный — мой core2duo с 8 гигами оперативки периодически подтормаживает.


    1. Vilyx
      21.10.2015 18:40

      Производительность графики редко зависит от языка. При переходе от JS к Dart существенного прироста в производительности ждать не стоит, это может случиться, но по той причине, что на Dart вам будет проще построить грамотную архитектуру приложения. Про мобильные платформы не могу сказать, давно не тестировал. Если ваш js проект работает через webgl и тормозит, то либо модели слишком сложные для веб, либо webgl всё-таки не запустился и ваш 3d двиг откатывается на Canvas2D. Я специализируюсь на 3D для веб и если хотите, то я могу подсказать по вашему проекту что можно сделать, напишите мне тогда в личку.


  1. ko11ega
    21.10.2015 18:26

    Отличный пост!
    Кратко, все по делу и понятно для начинающих.

    Мне кажется, вот здесь очень хорошо объясняется почему может быть полезно переключиться на Dart


    От себя добавлю, что богатство стандартной библиотеки Dart; поддержка на уровне языка: генериков, async/await и возможность отладки в dartium без компиляции в js очень убыстряют разработку.