The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск языка программирования Dart 2.0

07.08.2018 20:39

Увидел свет релиз языка программирования Dart 2. Dart 2 является не столько новой значительной веткой, сколько общим переосмыслением целей и задач проекта. Разработчики видят Dart 2 в качестве языка для Web и мобильных систем, оптимизированного для разработки компонентов, выполняемых на стороне клиента.

Dart 2 отличается от изначального варианта языка Dart кардинальным изменением подхода к типизации. Если в Dart 1.x определение типов было необязательным и разработчик мог удалить все аннотации типов без влияния на поведение приложения, то в Dart 2 применена строгая статическая типизация, но при этом типы могут выводиться автоматически и аннотации типов по прежнему не являются обязательными. Например, при указании "var i = 1" в Dart 2 для переменной "i" будет выведен тип int, в то время как в Dart 1 в этому случае была бы использована динамическая типизация (тип dynamic).

В Dart 2 поддержка режима "checked", при котором выполняются ограниченные проверки типов, будет прекращена, его место займёт режим "strong", обеспечивающий строгую проверку всех типов. Для упрощения подготовки к переходу на Dart 2 в Dart 1.x также добавлен режим "strong", при выборе которого поведение по использованию типов приближено к Dart 2. Строгая типизация позволяет обеспечить быструю компиляцию в JavaScript при помощи компилятора dartdevc без необходимости применения специальных виртуальных машин. Вместо Dartium, сборки браузера Chromium с Dart VM, для тестирования приложений отныне предлагается использовать компиляцию в JavaScript и любые штатные браузеры.

Из изменений Dart 2 также можно отметить проведение чистки синтаксиса и переработку многих инструментов, которые теперь нацелены на предоставление удобных и эффективных возможностей для web-разработки и создания мобильных приложений. Вместо применения отдельного языка разметки для компоновки элементов интерфейса в Dart 2 представлена возможность определять виджеты для интерфейса без обязательного использования ключевых слов new и const. Например:


// В Dart 1.x:
Widget build(BuildContext context) {
  return new Container(
    height: 56.0,
    padding: const EdgeInsets.symmetric(horizontal: 8.0),
    decoration: new BoxDecoration(color: Colors.blue[500]),
    child: new Row(
      ...
    ),
  );
}

// В Dart 2:
Widget build(BuildContext context) =>
  Container(
    height: 56.0,
    padding: EdgeInsets.symmetric(horizontal: 8.0),
    decoration: BoxDecoration(color: Colors.blue[500]),
    child: Row(
      ...
    ),
);

Для создания мобильных приложений предлагается использовать фреймворк Flutter, на основе которого также построена пользовательская оболочка развиваемой в Google новой микроядерной операционной системы Fuchsia. Для разработки для Web реализован набор специфичных библиотек, таких как dart:html, а также web-фреймворк Angular. Также продвигается возможность создавать однородные системы, использующие единую общую кодовую базу, при разработке приложений для Android, iOS и Web. Например, в мобильных приложениях и Web-интерфейсах AdWords Express и AppTree совместно используется от 50% до 70% общего кода.

Особенности языка Dart:

  • Привычный и простой для изучения синтаксис, естественный для программистов на JavaScript, Си и Java.
  • Обеспечение быстрого запуска и высокой производительности для всех современных web-браузеров и различных типов окружений, от портативных устройств до мощных серверов;
  • Возможность определения классов и интерфейсов, позволяющих использовать инкапсуляцию и повторно использовать существующие методы и данные;
  • Указание типов позволяет упростить отладку и выявление ошибок, делает код более ясным и читаемым, упрощает его доработку и анализ сторонними разработчиками.
  • Среди поддерживаемых типов: различные виды хэшей, массивов и списков, очереди, числовые и строковые типы, типы для определения даты и времени, регулярные выражения (RegExp). Возможно создание своих типов;
  • Для организации параллельного выполнения предлагается использовать классы с атрибутом isolate, код которых выполняется полностью в изолированном пространстве в отдельной области памяти, взаимодействуя с основным процессом через отправку сообщений;
  • Поддержка использования библиотек, упрощающих поддержку и отладку больших web-проектов. Сторонние реализации функций могут подключаться в виде разделяемых библиотек. Приложения можно разбить на части и поручить разработку каждой из частей отдельной команде программистов;
  • Набор готовых инструментов для поддержки разработки на языке Dart, включая реализацию средств динамической разработки и отладки с исправлением кода на лету ("edit-and-continue");
  • Для упрощения разработки на языке Dart поставляется SDK, пакетный менеджер pub, статический анализатор кода dart_analyzer, набор библиотек, интегрированная среда разработки DartPad и плагины с поддержкой Dart для IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 и Vim;
  • Дополнительные пакеты с библиотеками и утилитами распространяются через репозиторий pub, который насчитывает более 3 тысяч пакетов.


  1. Главная ссылка к новости (https://medium.com/dartlang/da...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/49096-dart
Ключевые слова: dart, lang
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (37) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 23:16, 07/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А потом оно сдохнет и весь код придётся переписывать?
     
     
  • 2.3, zo0M (?), 23:18, 07/08/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    оно еще взлетать не начало (и неизвестно начнет ли вообще), а ты уже хоронишь, осади коней.
     
     
  • 3.20, Аноним (20), 13:00, 08/08/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Практика показывает, что если сразу не взлетело, то и не взлетит (к примеру сравни C# и D)
     
     
  • 4.27, Питекантроп (?), 16:03, 08/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Руби с тобой не согласен.
     
     
  • 5.44, Аноним (20), 08:53, 10/08/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Что это?
     
  • 2.26, Аноним (26), 15:53, 08/08/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Оно уже сдохло. Точнее сейчас нет практического смысле его применять. Когда Dart появился лет 10 назад он был реально полезен. В него добавили много языковых конструкций, которых не хватало в JS и это было удобно. Сейчас JS 2015 поддерживается повсеместно и в нем есть все то полезное, что добавили в Dart.

    В результате сейчас Dart в России используют только во Wrike, больше он никому не нужен (а за бугром он нужен только Гуглу). Если нужно реализовать веб приложение, то проще взять Vue или другой фреймворк. Его проще установить, освоить, к нему будет больше разных дополнительных библиотек, документации и людей, готовых помочь разобраться. С работодателями тоже все сильно лучше.

     
     
  • 3.33, Аноним (33), 13:10, 09/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В JS нет нормальных миксинов из коробки. Из-за этого приходится делать всякое http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/ .
     
     
  • 4.34, Аноним (34), 14:30, 09/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    И не нужно. В js используется композиция вместо этого.
     
  • 3.48, Аноним (48), 21:21, 13/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Wrike начал заменять дарт тайпскриптом где-то в начале года.
    А еще из цитрикс в тот же период за много $  купил, может быть совпало, а может быть и нет :).
     

  • 1.4, vaider (?), 00:44, 08/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    всё также, для того, чтобы хоть что-то с ним делать, нужно ставить левую сборку хромиума? это если не любитель как хипстера "компилить" на каждое изменение?
     
     
  • 2.8, Аноним (8), 02:28, 08/08/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > как хипстера "компилить" на каждое изменение?

    C++/C/Java-прогеры у вас внезапно все хипстеры. Ибо компилят каждое изменение

     
     
  • 3.12, Аноним (12), 09:57, 08/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Так все верно. А ненавистники хипстеров пишут портянки на баше.
     
     
  • 4.13, Ан (??), 10:23, 08/08/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Который(баш) написан на C хипстерами. :D
     
     
  • 5.31, Аноним (12), 02:58, 09/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ты фотографии хакеров из семидесятых видел? В особенности всяких там столлманов. Хиппари и хипстеры. Это сегодня из них песок сыплется, а в свое время это были огого горячие финские парни. Хипстеры рулят, а олд-пердYны пишут баш-портянки, чтобы не переходить на хипстерский системдэ.
     
     
  • 6.39, vaider (?), 01:28, 10/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Хипстеры рулят

    в кювет

     
  • 6.40, vaider (?), 01:31, 10/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Хиппари и хипстеры
    > хипстеры

    чё прям с айфонами, молескинами, смузями и иконой джобса на груди? а гироскутеры тоже есть на фото?

     
  • 3.29, vaider (?), 18:18, 08/08/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    а тема эта конечно про C++/C/Java

    заметил, что хипстеры не умеют в контекст. у них или а или б. или чёрное или белое. ну вобщем туповаты

     
     
  • 4.30, Аноним (30), 19:03, 08/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Причём здесь контекст? Вы отнесли к хипстерсту компиляцию на каждое изменение, хотя ничего плохого в этом нет
     
     
  • 5.38, vaider (?), 01:28, 10/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    лол. говорю же: туповаты
     
     
  • 6.41, Аноним (41), 03:56, 10/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Просто тут различий нет, что такая компиляция, что другая. Ну в разные языки, а так разницы нет. Так что вот вы необоснованно сейчас бочку катите
     
     
  • 7.46, vaider (?), 23:30, 10/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    погромист на html в треде! все в w3c!
     
  • 3.42, Аноним (42), 06:01, 10/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну необязательно, для них есть REPL)
     
  • 2.23, Аноним (23), 14:39, 08/08/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Нет, в новости же написано.
    >Вместо Dartium, сборки браузера Chromium с Dart VM, для тестирования приложений отныне предлагается использовать компиляцию в JavaScript и любые штатные браузеры.
     

  • 1.14, Аноним (14), 10:49, 08/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    неужели у языка есть фанбои и они сюда набежали?
     
  • 1.15, Аноним (15), 11:21, 08/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В чем преимущество Dart перед TypeScript?
     
     
  • 2.18, Аноним (18), 12:20, 08/08/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ни в чем. Даже есть проблемы. Dart в отличие от TS не совместим с библиотеками на js. А это значит что у него экосистема сильно меньше.
     
     
  • 3.21, Аноним (21), 13:22, 08/08/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Ни в чем. Даже есть проблемы. Dart в отличие от TS не совместим с библиотеками на js. А это значит что у него экосистема сильно меньше.

    ИМХО, но это как раз преимущество.

    > nikov
    > нужно иметь в виду, что система типов TypeScript "deliberately unsound", т.е. гарантий того, что типы сойдутся в runtime, нет. Кроме того, она undecidable, что в компиляторе решается некоторыми произвольными ограничениями на сложность выводимых типов.

    В Dart 2.0 судя по все это как раз не так,
    то есть после компиляции есть некоторые гарантии.
    Чем больше проект тем это важнее.

     
     
  • 4.47, Аноним (47), 08:06, 12/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    C каких пор наличие доп.библиотек и ресурсов стало недостатоком? Акстись дурень!
     

  • 1.19, Аноним (20), 12:59, 08/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Этак они и с++ изобретут
     
     
  • 2.22, IB (?), 14:24, 08/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Компиляторов из C++ в JS/web.asm есть.
    Как минимум LLVM - изобретать не нужно.
     
     
  • 3.28, J.L. (?), 16:28, 08/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Компиляторов из C++ в JS/web.asm есть.
    > Как минимум LLVM - изобретать не нужно.

    расскажите, пожалуйста, всё, что имеет фронтенд в LLVM, можно скомпилить в JS/web.asm с использованием бекенда LLVM->js ?

     
     
  • 4.35, Аноним (34), 14:47, 09/08/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Гугли Emscripten
     

  • 1.32, Аноним (32), 11:43, 09/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Google сделал Dart для всех, но он оказался практически никому не нужен.
    Сейчас (уже в который раз) Google пытается найти ему применение.
    То есть, нет абсолютно никаких гарантий того, что в один прекрасный момент не будет прекращена разработка Dart.
    Кто знает что будет, но Dart реально "не взлетел" из-за отношения разработчиков к членам сообщества.
    Сколько раз они делали опросы?
    Множество раз.
    Сколько раз они получали информацию из этих опросов о потребностях сообщества?
    Каждый раз.
    Сколько раз они удовлетворили эти потребности (те, что были в приоритете у сообщества)?
    НИ РАЗУ.
    Может быть они просто издевались многократно когда просили принять участие в своих опросах?
    Задайте этот вопрос разработчикам из Google, если это Вас действительно интересует.
    Но ответа, мне кажется, не последует.
     
  • 1.36, Попугай Кеша (?), 16:14, 09/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Я пишу на Kesha++. Но всем пофиг. То же самое и с Dart )
     
     
  • 2.43, Аноним (43), 08:45, 10/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Я пишу на Kesha++. Но всем пофиг. То же самое и с
    > Dart )

    Да, на тебя всем пофиг.

     
     
  • 3.45, Попугай Кеша (?), 14:29, 10/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> Я пишу на Kesha++. Но всем пофиг. То же самое и с
    >> Dart )
    > Да, на тебя всем пофиг.

    Аааа! О нет! Как же я проживу без твоего мнения? Да пофиг )

     

  • 1.37, Аноним (37), 19:54, 09/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Этот Dart имеет отношение к syndicate?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру