Анонс Dart 2.0: Оптимизированный для клиентской разработки

перевод
bunopus 24 февраля в 12:59 10,2k
Оригинал: Anders Thorhauge San…
Сегодня мы анонсируем Dart 2, перезагрузку языка, которая более полно отражает наше видение Dart как уникально оптимизированного языка для клиентской разработки на Web и мобильных платформах.

Dash - официальный маскот языка
Dash — официальный маскот языка

С Dart 2 мы значительно усилили и упростили систему типов, очистили синтаксис и переписали большую часть инструментария с нуля, чтобы сделать мобильную и веб-разработку более приятной и продуктивной. Dart 2 также учитывает уроки, полученные от ранних пользователей языка, включая Flutter, AdWords и AdSense, а также тысячи улучшений, больших и малых, сделанных в ответ на отзывы клиентов.

Основные принципы Dart


Прежде чем говорить о нововведениях в Dart 2, стоит понять, почему мы считаем, что Dart удовлетворяет всем потребностям разработчиков клиентского кода.

В дополнение к свойствам, необходимым для современного языка общего назначения, язык для клиентской разработки должен быть:

  • Продуктивным. Синтаксис должен быть четким и кратким, инструментарий — простым, а цикл разработки — почти мгновенным
  • Быстрым. Производительность запуска и выполнения должны быть отличными и предсказуемыми даже на медленных мобильных устройствах.
  • Портируемым. Разработчики клиентских приложений должны сегодня думать о трех платформах: iOS, Android и Web. Язык должен хорошо работать на всех из них.
  • Доступным. Язык не может уходить слишком далеко от знакомых вещей, если он хочет оставаться понятным миллионам разработчиков.
  • Реактивным. Язык должен поддерживать реактивный стиль программирования.

Dart используется для создания критически важных высококачественных приложений в Web, iOS и Android в Google и других компаниях и ​​отлично подходит для мобильной и веб-разработки:

  • Dart увеличивает скорость разработки, поскольку он имеет четкий, лаконичный синтаксис и может работать на виртуальной машине с JIT-компилятором. Это позволяет поддерживать горячую перезагрузку в процессе мобильной разработки, что приводит к супер быстрым циклам разработки, где вы можете редактировать, компилировать и заменять код в уже запущенном приложении на устройстве.
  • Благодаря своей способности эффективно компилировать исходный код заранее, Dart обеспечивает предсказуемую и высокую производительность, а также быстрый запуск на мобильных устройствах.
  • Dart поддерживает компиляцию в нативный код (ARM, x86 и т.д.) для быстрой работы на мобильных устройствах, а также транспиляцию в эффективный JavaScript код для Web.
  • Dart понятен для большинства разработчиков благодаря своим объектно-ориентированным аспектам и синтаксису, которые, по словам наших пользователей, позволяют C++, C#, Objective-C или Java разработчикам писать код на Dart буквально через несколько дней.
  • Dart с его SDK хорошо подходит для реактивного программирования, он включает потоки и фьючерсы; также обладает хорошей поддержкой управления короткоживущими объектами с помощью быстрого сборщика мусора.

Dart 2: улучшение клиентской поддержки


В Dart 2 мы предприняли несколько вещей, чтобы сделать Dart отличным языком для написания именно клиентского кода. В частности, мы добавили несколько новых функций, включая строгую типизацию и улучшение того, как пользовательский интерфейс определяется через код.

Строгая типизация


Команды, стоящие за AdWords и AdSense, с помощью Dart создали одни из самых крупных и самых передовых веб-приложений Google для управления рекламой, эти сервисы приносят значительную долю дохода Google. Работая в тесном контакте с этими командами, мы решили усилить систему типов Dart. Это поможет Dart-программистам ловить ошибки в процессе разработки, лучше масштабировать приложения, созданные крупными командами, и повышать общее качество кода.

Конечно, в этом нет ничего уникального. В экосистеме Web также наблюдается тенденция к добавлению типов к JavaScript. Например, TypeScript и Flow расширяют JavaScript аннотациями и выводом типов, чтобы улучшить возможности для анализа кода.

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

void main() {
  List<int> prices = ['99', '27', '10000', '20000000'];
  
  // Отсортировать цены от низких к высоким
  prices.sort();
  
  print('Самая низкая цена: ${prices[0]}!');
}

Что делает этот код? Вы можете ожидать, что он напечатает «27». Но без системы типов Dart 2 он печатал «10000», потому что это самый первый элемент в списке строк, упорядоченных лексикографически. Однако с Dart 2 этот код выдаст ошибку типизации.

Пользовательский интерфейс через код


При создании пользовательского интерфейса необходимость переключаться между отдельным языком разметки и языком программирования, который вы используете в приложении, часто вызывает раздражение. Мы стремимся уменьшить необходимость переключения контекста. Dart 2 вводит необязательные new и const. Этот функционал очень ценен сам по себе, а также открывает другие возможности. Например, благодаря необязательным new и const мы можем сделать определение виджета более чистым и простым.

// До Dart 2
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(
      ...
    ),
  );

Использование Dart на стороне клиента


Мобильные платформы


Одним из самых важных применений Dart является Flutter, новая мобильная платформа Google для создания пользовательских интерфейсов для iOS и Android. Официальное приложение для чрезвычайно популярного шоу Hamilton: The Musical — пример того, как Flutter помогает разработчикам создавать приложения в рекордные сроки. Flutter использует реактивный стиль программирования и контролирует пользовательский интерфейс пиксель за пикселем. Для Flutter, Dart подходит идеально, с точки зрения простоты обучения, реактивного программирования, высокой скорости разработки и высокопроизводительной системы исполнения с быстрым сборщиком мусора.

Web


Dart отлично проявил себя как платформа для критически-важных веб-приложений. В нем есть веб-библиотеки, такие как dart:html, а также полная веб-среда на основе Dart. Команды, использующие Dart для Web, были в восторге от улучшения скорости разработки. Как говорит Маниш Гупта, вице-президент по разработке Google AdWords:
Интерфейс AdWords большой и сложный, и он имеет решающее значение для доходов Google.
Мы выбрали Dart из-за отличной комбинации продуктивности и предсказуемости, простоты обучения, системы типов и поддержки в Web и мобильных устройствах.
Наши инженеры в два-три раза более продуктивны, чем раньше, и мы рады, что мы перешли на Dart.

Что дальше


С Flutter и Dart разработчики наконец-то получили возможность писать качественные приложения для Android, iOS и Web без каких-либо компромиссов, используя общую кодовую базу. В результате члены команды могут плавно перемещаться между платформами и помогать друг другу, например, проверять код. Такие команды, как AdWords Express и AppTree, переиспользуют от 50% до 70% своего кода на мобильных устройствах и в Web.

Dart — проект с открытым исходным кодом, поддерживает открытый стандарт ECMA. Мы приветствуем вклад как в основной проект Dart, так и в растущую экосистему пакетов для Dart.

Вы можете попробовать Dart 2 во Flutter и Dart SDK прямо из командной строки. Для Dart SDK, загрузите Dart 2 из dev канала и запустите свой код с флагом --preview-dart-2. Мы также приглашаем вас присоединиться к нашему сообществу на gitter.

Благодаря объявленным сегодня улучшениям, Dart 2 — производительный, чистый и проверенный в деле язык, который решает проблемы разработки современных приложений. Его уже любят некоторые из самых требовательных разработчиков на планете, и мы надеемся, что он понравится и вам.

Примечание переводчика: присоединяйтесь к рускоязычному сообществу Dart в Telegram или Slack.
Проголосовать:
+22
Сохранить: