Два года с Dart: о том, как мы пишем на языке, который ежегодно «хоронят» (часть 2)

в 8:11, , рубрики: angular2, AngularJS, dart, dartium, ddc, flutter, Fuchsia, Google, javascript, wrike, wriketechclub, Блог компании Wrike, Программирование, Разработка веб-сайтов

Два года с Dart: о том, как мы пишем на языке, который ежегодно «хоронят» (часть 2) - 1

Продолжаем наше интервью с менеджером по разработке Wrike Игорем Демьяновым. Сегодня поговорим о перспективах языка, его развитии и улучшении инструментов, а также попробуем ответить на вопрос «Dart Шреденгира»: жив все-таки или умер язык, можно ли безбоязненно использовать его в своих проектах.

Часть 1

Кто еще из больших компаний использует Dart в разработке в России?

Есть ребята, которые делают outsourcing на западный рынок, но лично я с ними не знаком. Периодически к нам подходят на конференциях с вопросами о языке, значит люди на нем пишут. У нас есть канал Ru-Dart в слэке, где мы стараемся поддерживать связь с русскоязычным сообществом, там уже больше 100 человек, но не все, конечно, из больших компаний. Хайп — это не самая сильная сторона Dart.
Google, конечно, поддерживает коммьюнити, но это явно не первоочередная их задача, они сейчас активно вкладываются именно в техническое развитие своих языков и инструментов для фронтенда, бэкенда и мобильных устройств.

Dart можно использовать и для создания мобильных приложений?

Да, это Flutter, который они активно сейчас продвигают. На недавней конференции Google I/O было пять докладов по Flutter и один про Angular. Вот такой mobile first. Очевидно, что в приоритете у Google искусственный интеллект и мобильные устройства, акцент с веба немного сместился.
Конечно, есть еще их большой проект Fuchsia, и он тоже задействует Dart.

Два года с Dart: о том, как мы пишем на языке, который ежегодно «хоронят» (часть 2) - 2

А какие собственные проекты Google пишет на Dart?

На этом языке написаны все основные прибылеприносящие сервисы Google — AdWords, AdSense, но, как Google сам заявляет, это верхушка айсберга. Много внутренних систем написано на дарте, какие-то их CMS, финансовые тулы.

По твоим ощущениям, насколько интенсивно язык развивается?

Язык стандартизирован, и его стандарты не изменятся. Основное развитие сейчас и дальше будет связано с появлением и улучшением различных инструментов. Например, они отказываются от Dartium, потому что очень сложно держать две виртуальные машины, и переход с одной версии дартиума на другую проблематичен. Вместо него развивают Development Dart Compiler (DDC). Он будет работать по такому же принципу, как в Babel и в TypeScript. DDC будет использоваться для разработки, а для продакшн-кода — текущий компилятор, который достаточно хорошо жмет и оптимизирует.

Насколько разработчики языка прислушиваются к сообществу и к большим компаниям, которые этот язык используют?

Ребята из Google знают о нас. Раз в год мы делаем в Питере совместный митап по Dart, ежемесячно участвуем в онлайн-встречах с разработчиками языка. Нам сообщают новости о том, как развиваются инструменты, что в дальнейшем планируется, наши “хотелки” спрашивают. Мы можем на баги пожаловаться: что-то закрывается, что-то нет. Можно сказать, прямой диалог у нас есть.

И какие инсайты?

Как я понимаю, основная ставка сейчас делается на развитие Angular, который довольно сильно в 3 и 4 версии будет отличаться от тайпскриптового, ну и на DDC.
В Angular 4 должен быть очень сильный Boost и по скорости, и по размеру кода. То есть в третьем уже был boost – от 10 до 20%, плюс на 10% уменьшение самой кодовой базы. В четвертом ждем еще больше.
И второй вектор их развития – это DDC. Они сейчас его активно «пилят», хотят освободить ресурсы, которые тратят на поддержку Dartium.

На всех конференциях, где участвуют спикеры Wrike, приходится слышать два вопроса “Жив ли Dart?” и “Почему не TypeScript?”. Не устали отвечать?

Это как извечная борьба остроконечников и тупоконечников. Кому что нравится. Я еще раз говорю, что для маленьких проектов, для прототипирования я бы выбрал JavaScript — в браузере накидал быстренько и запустил. Для больших проектов, когда требуются паттерны проектирования, когда нужно ООП, отлично подходит Dart. Да, можно выбрать и путь функционального программирования, но это словно спор двух школ боевых искусств. Задачи можно решать разными путями. Мне на эту тему спорить не интересно.

Два года с Dart: о том, как мы пишем на языке, который ежегодно «хоронят» (часть 2) - 3

В данный момент на рынке труда вы легко можете найти работу на JavaScript. Это связано с тем, что порог вхождения в язык низкий. Но если ты всю жизнь писал на C# или Java и хочешь во фронтенд, тебя вряд ли привлечет JS.

Если речь зашла о людях, то какие разработчики приходят писать на Dart? Понятно, что в России резюме dart-разработчика вряд ли встретишь.

Если вы хотите работать в Wrike, желательно иметь за плечами, кроме JavaScript, еще какой-то язык с достаточно сильным ООП, типа C#, Java, даже С++. Но все-таки главное для нас — умение мыслить и желание развиваться, искать нетривиальные решения.

На техническом собеседовании обычно у нас есть два блока — JS и ООП. Мы спрашиваем про JavaScript, потому что у нас есть Legacy. Здесь мы не требуем глубокого погружения, достаточно знать основы языка, остальному легко научиться. Это не проблема. Проблема, как и у любого языка – это уметь писать хорошо. На JavaScript и TypeScript можно тоже писать хороший код, документированный, использовать JS-доки для JavaScript. Но на JS плохой код писать проще, чем на языках с ООП.
Если у вас есть опыт работы с такими языками, как Java или .net, то пройти собеседование у нас будет достаточно легко.

А если ты без какого бы ни было опыта хочешь попробовать писать на Dart? Речь касается студентов в первую очередь.

Есть достаточно хороший сайт webdev.dartlang.org Там много туториалов для тех, кто хочет погрузиться в язык. В Дарте не так много ключевых слов — классы, миксины, экстенды, надо знать стандартные библиотеки, коллекции. Есть такие вещи как стримы, фьючеры для асинхронности. На этом же сайте можно пройти небольшой курс по Angular Dart.
Но по Angular в интернете достаточно много литературы, как по TypeScript-овому можно почитать, так и по Dart-овому. Там отличие в данный момент минимальное, а тонкости можно в процессе понять, когда будешь использовать код.

Dart и серверную часть позволяет писать?

Да, у нас уже есть опыт в этом. Мы уже зарелизили его в одном из компонентов Wrike (весь основной бэкенд продукта написан на Java), и сейчас в процессе «выпиливания» старого кода, который был раньше на Node. Переводим его в Dart. Все работает достаточно быстро, мы довольны тем, что получается, компонент выдерживает высокую нагрузку.

Как этот код на дарте взаимодействует с кодом на Java? Здесь есть какие-то нюансы?

Он взаимодействует через WebSocket-ы, еще мы используем http-взаимодействие. Ничего особенного нет здесь. Теоретически могут возникнуть проблемы с драйверами для кое-каких баз данных. Google использует свои облачные решения, и для них драйвера есть, для остальных — надо смотреть. На самом деле, я не думаю, что сейчас серверный Dart — это основной вектор языка, хотя, если смотреть на ту же «Фуксию», то там используется именно Dart VM. И Dart там является той средой, в которой запускается приложение.

Wrike и Dart – это навсегда? Или есть что-то, что может вынудить отказаться от языка?

Все может быть. Например, что-то случится с Google… Или подобного порядка вещи. Но сейчас мы видим, что Google хочет закрепить язык какой-то платформой, надежными инструментами, но точных планов гугла, мы, конечно не знаем. Выйдет Fuchsia, посмотрим, что с нею будет. Нас беспокоит, что не так много внимания уделяется сообществу, но это из-за того, наверное, что основные пользователи языка — создатели внутренних сервисов гугла.

Они же проводят раз в год Dart-саммит

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

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

Автор: Wriketeam

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js