Комментарии 26
Вот по этому пункту есть поправочка:
популярный препроцессор стилей Sass был недавно переписан на Dart, чтобы сделать его более быстрым, более портативным и более простым для разработки
Так совпало, что основной разрабочкик dart-sass (более 90% коммитов), по совместистельству является core-контрибьютором dart и активно коммитит туда.
Поэтому на объективный и непредвзятый пример эта история не тянет.
Ну к слову сказать нигде и не говорится, что этот пример непредвзят. Если в моей команде работает разработчик, создавший один из популярных web инструментов, я бы тоже об этом написал, почему бы и нет.
Раз он уже больше года не даёт мне покоя, когда нибудь я сорвусь и освою этот язык, по наитию чувствую что он прекрасен :-). Надеюсь это правда :)
Мне вот только непонятно, чем же он так хорош что, разработчики готовы изучить новый язык, менять привычный стэк ради каких-то выгод. Неужели Java, Kotlin, Swift (продолжите сами) не устраивают мобильных разработчиков? Ну хорошо, бизнес хочет экономить на разработке и по этому прибегает к JavaScript решениям, и тут понятно, JS очень популярен и кандидатов у нанимателя очень много на такие позиции.
Но почему Dart? В чём фишка? :)
Я вообще не планировал использовать Dart до Flutter, т.к. вокруг JS уже была огромная экосистема, TypeScript решал проблемы с типизацией, и поэтому смысла использовать Dart не было. Сейчас смысл появился :)
Даже в том, чтобы пробовать Dart на фронте и бекенде (хотя бы ради код шейринга)
Быстрое гугление показало, что зародился он в бородатом 2011, потому что JS не очень. 2011 — это тот год, когда strict mode был новшеством. С тех пор прошло много времени и, если я правильно понял, Dart транслируется в JS.
Зачем нужен Dart? Какие актуальные проблемы он решает кроме типизации?
Ну зародился в 2011, вышел в 2013.
Да, в браузере транспилируется в JS, на сервере и мобильных устройствах — нет. Актуальные проблемы:
- Типизация
- Богатый SDK (без большого привлечения сторонних библиотек)
- Кроссплатформенность
Да, по-поводу последнего трудно спорить с JavaScript, но на мобильных — React Native проигрывает Flutter по удобству и быстродействию. Поэтому в 2018 я бы брал Dart для достаточно больших проектов, в которых нужна сильная система типов, и которые скорее всего будут масштабироваться на несколько платформ.
Ниразу не специалист. Из вашего ответа трудно понять разницу с Typescript, например.
Не очень понятно для чего это все.
TypeScript год назад был официально принят гуглом для использования во внутренних разработках (https://www.reddit.com/r/programming/comments/64e6x7/typescript_got_approved_as_internal_development/). Тот же angular в гугле пишут на typescript и затем (поправьте если ошибаюсь) транспилируют в Dart.
В общем перспективы и преимущества этого языка не ясны.
Но мне тоже непонятно, зачем им одновременно и тайпскрипт, и дарт, и котлин.
Google — огромная корпорация, мне кажется там вряд ли когда-то будет использоваться всего один язык или инструмент. Впрочем про Google лучше ответят mraleph или zviad. Да, есть языки, которые спорят с Дартом в каких-то аспектах. JS есть в каждом утюге, TS прочно закрепился на рынке, для Android есть Kotlin, на сервере же вообще рог изобилия НО:
- Dart можно использовать на широком спектре платформ. Тот же JS конечно тоже так может но:
- У Dart есть жёсткая система типов
- богатый SDK со стримами, коллекциями и прочим
- Flutter, который (по моему мнению) даст фору React Native
Т.е. получается, что используя Dart можно получить преимущества единого подхода для большого круга задач. С точки зрения бизнеса это круто, для определённых проектов можно нанять одного разработчика, тот сделает несложный сервер, web клиент, и два клиента под обе мобильные платформы. При этом может ещё и зареюзать код и сэкономить время.
На вкус и цвет :-)
Размер кода — сам по себе overhead конечно есть, но я бы не сказал, что в разы, если писать на голом JS. Есть такая замечательная штука в Dart как tree shaking. Он крайне аггресивно выкидывает неиспользуемый код. Классы, методы, библиотеки. Это + отложенная загрузка из коробки позволяет сделать бандл небольшим. Но опять таки повторюсь, от overhead никуда не деться.
Но опять таки повторюсь, от overhead никуда не деться
Да нет, это я прекрасно понимаю. Но как бы основа всего это МЕРА. Когда например мне kotlin выдал полтора мегабайта джаваскрипта для простейшего приложения типа hello world, я даже не стал разбираться в достоинствах языка. С другой стороны scala.js настолько хороша, что с ней я не пользуюсь даже jquery. Просто использую её самую низкоуровневую dom-библиотеку, а удобную оболочку пишу уже на самой scala. Кстати очень жаль что из dart такую библиотеку выкинули и оставили нечто похожее на jquery в качестве самой низкоуровневой. Ибо dart как язык тоже очень неплох и таким как я любителям минимализма низкоуровневая dom-библиотека + расширения с помощью языка, пришлась бы очень по вкусу.
Есть такая замечательная штука в Dart как tree shaking. Он крайне аггресивно выкидывает неиспользуемый код. Классы, методы, библиотеки.
Вот это уже интересно! В scala.js используется гугловский минимизатор (если мне не изменяет мой склероз называется google closhure compiler). Честно говоря не знаю есть ли у него такой функционал. Не разбирался с ним.
Это + отложенная загрузка из коробки позволяет сделать бандл небольшим.
Тоже интересно. Честно говоря я нормальный отложенный загрузчик так и не сделал. Почему? Как говорится х.з. :) Более сложная штука — менеджер загрузки данных с сервера по web socket(или comet если ws не поддерживается) у меня есть. Хотя и корявая.
А в целом конечно очень здорово, что язык жив и развивается. Вот сейчас раскидаю немного дела, и попробую с этим поиграться :)
Релиз стабильной версии Dart 2.0 и Dart Web Platform