Компания Google опубликовала релиз языка программирования Dart 2.14, в котором продолжено развитие кардинально переработанной ветки Dart 2, переориентированной на разработку для Web и мобильных систем и оптимизированной для создания компонентов, выполняемых на стороне клиента. Dart 2 отличается от изначального варианта языка Dart применением сильной статической типизации (типы могут выводиться автоматически, поэтому указание типов не является обязательным, но динамическая типизация больше не используется и вычисленный изначально тип закрепляется за переменной и в дальнейшем применяется строгая проверка типа)...Подробнее: https://www.opennet.me/opennews/art.shtml?num=55778
единственная крупная компания в России (Wrike), использовавшая дарт и как-то взаимодействующая с гуглом, закрывает офисы в стране и уходит на другой стек. Кажется, что дарт в вебе без флаттера всё-таки не прижился.
Они уж Citrix чуть ли не год как, так что не факт что именно в дарте дело.
Причина в том, что гугл похоронил AngularDart.
Официально сделку закрыли только в этом году, но кроме того, что цитрикс не хотел видеть русских, имеющих доступ к данным из России, цитриксу нужно ещё и нанимать в том числе фронтенд разработчиков. Хайринг в Праге шёл совсем плохо, а в Россию уже не хайрили.Хотя варианты других технологий рассматривали как минимум с прошлого года. Но и с дартом у Райка всё не гладко шло, огромная куча js-легаси со своими велосипедами живёт и здравствует. Что тоже говорит не в пользу дарта.
Ни Дарт, ни Флаттер нафиг не нужны. Есть промышленные языки типа С, С++, C# и к ним зарекомендовавшие себя ГУИ. Любой, кто полезет в эту нишу с языком, который ничего из себя не представляет, кроме как "другой синтаксис", обречён.
В этом плане есть прорывной язык Nemerle, который МОЖЕТ выстрелить в нише .NET, но пока что его разработка затухла.
Боже, как же вы не правы =). Флаттер/ReactNative вполне себе живут, вполне удобны для разработки мобильного дерьма. Стоимость разработки намного ниже чем нейтив Swift/Kotlin/Java....
C# из списка можно выбросить, потому что не получиться одну кодовую базу скомпилировать под все платформы.Если рассматривать C/C++, то подумайте о стоимости разработки в сравнении с react native и flatter. Для бизнеса выбор очевиден
Подскажите как запустить скомпилированый .dart файл на Linux, где нет Dart окружения?
так же как любой другой, ./run_me
Имей в виду, дарт как современный язык не поддерживает x32
А где x32 вообще поддерживают? Из ядра собирались выпилить, не взлетело.
Это ж интерпретируемый язык.
Таки нет. Во-первых, есть jit компиляция (внезапно). Во-вторых, особенно для flutter была запилена полная AOT компиляция. Т.е. релизная сборка flutter приложения - это бинарь без намёка на интерпретатор.
Зачем нужны эти nih языки?
Надо было просто JavaScript закомпилировать в native Android/iOS. Но решили и новый синтаксис замутить.
Кроссплатформенные приложения win-linux-macos-ios-android, например. Смотрю типичный такой проект: весь код и логика на Dart, под винду 400 строк на C++, под ios 13 строк на Swift, под android 30 строк на Kotlin - во всех случаях нативный код сводится к инициализации flutter.Это же всяко приятнее, чем писать двойной код на Java или Kotlin под андроид и дублирующий вариант на ObjC или Swift под iOS, и вдобавок добавляется нативное исполнение под десктопными платформами без кучи лишних телодвижений.
RN
"двойной код" - это не "случайная трудность", которую вы преодолели каким-то туnоpылым решением, а НЕОБХОДИМОСТЬ. Как воздух, вода и земля - невозможно ЭФФЕКТИВНО передвигаться в этих средах, используя один и тот же транспорт. Бараны, которые пытаются сделать мультиплатформенную амфибию, обречены - этот павлиноуткаёж будет одинаково безобразен на каждой из платформ, одинакого НЕнативен и одинаково отторжен пользователями. "нативен" - это не просто повторить пиксели оригинала - туда входит ещё и FEEL. Look and feel - вот две составляющие UI. И если look можно повторить (опять же, сильно нагемороившись с сопровождением), то feel - извини, ты пролетаешь.По-моему, куда практичнее сделать некий декларативный язык (типа XAML, но более упрощённый) и его реализовать на каждой платформе в виде нативных контролов. И попутно сделать "нативный интерфейс"(API под каждую ось), чтобы можно было использовать в полный рост этот "родной" элемент. Другими словами, мы создаём layout из нативных контролов и для каждой платформы будет свой API для кастомайзинга. Что-то будет пересекаться, конечно. Главное - не терять "нативность" платформы, ибо внутри ОС заложено слишком много, чтобы это повторно перереализовывать в библиотеке.
> "двойной код" - это не "случайная трудность", которую вы преодолели каким-то туnоpылым
> решением, а НЕОБХОДИМОСТЬ. Как воздух, вода и земля - невозможно ЭФФЕКТИВНО
> передвигаться в этих средах, используя один и тот же транспорт. Бараны,
> которые пытаются сделать мультиплатформенную амфибию, обречены - этот павлиноуткаёж будет
> одинаково безобразен на каждой из платформ, одинакого НЕнативен и одинаково отторжен
> пользователями. "нативен" - это не просто повторить пиксели оригинала - тудаЕсть различные ниши. Софт типа инстаграмма или вотсаппа пусть будет нативным, никто не против. Но бывает сверхбюджетная разработка, или открытое ПО без поддержки, и другие ситуации, когда затратить минимум усилий программиста для максимума доступности важнее, чем формальная нативность.
А вид.. ну вид как вид, никаких претензий к андроид-варианту у меня нет. А кто-то может заодно запустить на ios, винде, макоси, линуксе и тп. Это что, хуже, чем если бы кроме андроида ничего не поддерживалось?
> По-моему, куда практичнее сделать некий декларативный язык (типа XAML, но более упрощённый)
> и его реализовать на каждой платформе в виде нативных контролов. И
> попутно сделать "нативный интерфейс"(API под каждую ось), чтобы можно было использовать
> в полный рост этот "родной" элемент. Другими словами, мы создаём layout
> из нативных контролов и для каждой платформы будет свой API для
> кастомайзинга. Что-то будет пересекаться, конечно. Главное - не терять "нативность" платформы,
> ибо внутри ОС заложено слишком много, чтобы это повторно перереализовывать в
> библиотеке.Во flutter-приложении можно иметь нативные контролы. Но не думаю, что вам это интересно, т.к. вы похоже принципиально не хотите признавать, что есть ниша (и достаточно большая) у подобных кроссплатформенных приложений. Не все приложения разрабатываются в энтерпрайзе с огромным бюджетом разработки, увы.
Если не ошибаюсь, инстаграм полностью или частично - react native. И ничего работает на миллионах устройств
Предлагаете дальше "любить" треклятый JS?
О, почтисовсемнетормозит обновилось, язык одного фреймворка. На фоне котла, который действительно язык общего назначения с адекватным интерропом в целевую платформу, дарт выглядит как высер, мол рыночек займем, а дальше как пойдет, пока серьезные пасаны вылизывают компоуз до мелочей, эта штука и продолжает жить, единственная цель которой, показать как не стоит развивать язык и фреймворк.
Ну как я понял он готовится для Фуксии, а сейчас обкатывается. На Фуксии он будет маст хэв, ИМХО.
Ненужно-язык для ненужно-фреймворка для ненужно-оси? Ну это вин ящитаю, так победим!
Почему это фуксия не нужна?
Потому что сырая поделка в знаменитой "экосистеме гугла" без драйверов и реального применения. И не надо писать про ту фоторамку которую купили полтора умственных инвалида - это даже на троллинг не тянет.
Линукс тоже был сырой поделкой без реального применения.
Жду вас через 30 лет.
Линукс с первых дней своего существования запускался, работал и выполнял реальные задачи на реальном железе.
Котлин провоцирует нечитабельный синтаксис, если тупо не писать как на Java. На практике он кому-то нужен только для Андройда - тому, кто хочет современные фишки, так как Джаву там больше не обновляют.
По сравнению с хрустом или каким-нибудь objective-c там синтаксис уровня питона - проще некуда.
Это вы про Руби?
Хоть я и люблю руби, но да, смешно.
Солидарен!
> ветки Dart 2, которая отличается от изначального варианта языка Dart применением сильной статической типизацииКак раз читаю книгу одного из авторов Дарта - Bracha G., 2015 года издания. Там он восхваляет динамическую типизацию, как будто это чуть ли не главное достоинство языка. Ха-ха!
А какое главное достоинство языка?
Внятная работа с async, как по мне.
Flutter. И всё, наверно.
У гугла это традиция видать, когда го вышёл кричали что дженерики не нужны, мол лишнее усложнение, а теперь хотят выкрутить.
У языка нет мин/макс функций, так как нет элементарной перегрузки функций, к тому же. Если бы не инфантильный максимализм авторов, это был бы действительно не язык, а сказка, т.к. параллелизм там действительно сделал очень достойно. Но если транспорт на нем писать нормально, то логику - ну его нафиг.
Один вопрос - нахуа?
Вангую потерю десятка миллионов человекочасов во всём мире на ознакомление с этим "нужным" языком!
Для полноты картины: к SDK прибита гвоздями телеметрия и выдернуть ее не получается:
Я помню был очень удивлён, когда Vista рещила отправить crash-логи в интернет без запроса (XP сначала спрашивала)... Почему-то операционка отправила избирательно, но в том числе и логм project1.exe (что-то там в билдере пробовал и этот project1.exe раз 5 уже падал).Интересно, кто-нибудь делал нормальную DDoS атаку на эти системы сбора телеметрии? 100500 крешей helloworld'ов заставят призадуматься любой ИИ. А если оно ещё и с одного хоста придёт, то будет непонятно какую рекламу этому хосту рекламировать...
> непонятно какую рекламу этому хосту рекламировать...Get your free copy of Rust today! :)
> 100500 крешей helloworld'ов заставят призадуматься любой ИИ.Вангую анализ отчетов происходит отдельно от загрузки.
Её можно отключить сразу после установки.
Язык недалёкого будущего!
>Язык недалёкого/fixed
единственный конкурент для раст
О, вот пусть они друг с другом и конкурируют.
Вот как раз сейчас изучаю и походу делаю приложение на Dart2+Flutter. До этого были C++/Java/C#. Впечатления пока самые положительные.
Dart2+Flutter = Классный язык (очень простой, безопасный, современный, выразительный) и классная современная платформа (универсальная, быстрая, удобная, логичная, продуманная), работающие в единой связке = отличный инструментарий для разработки моб.приложений на любой вкус.
Современный язык без деструктурирующего присваивания? Хм...
Кстати, а много ли либ/фреймворков для gamedev? Всё ещё около нуля?
Всё-таки деструктирующее присваивание - это синтаксический сахар, причём не самый важный. Вообще, главный парадокс и беда популярных языков в том, что чем больше сахара в язык пихают (с целью упростить), тем сложнее он становится. В результате из удобного инструмента для решения практических задач он превращается в нечто сложное и бесформенное.имхо, главное в ЯП (без учёта библиотек) - это не наличие мешка сахара, а структурная и функциональная достаточность, стройность и надёжность: средства для описания бизнес-логики (типы, классы, интерфейсы, строгая типизация, null safety, дженерики), средства для разделения программы на модули, поддержка асинхронности, обработка ошибок
По второму вопросу - есть https://flame-engine.org/ для 2d-игр, но я не могу его оценить по возможностям, поскольку не занимался геймдевом.
>[оверквотинг удален]
> больше сахара в язык пихают (с целью упростить), тем сложнее он
> становится. В результате из удобного инструмента для решения практических задач он
> превращается в нечто сложное и бесформенное.
> имхо, главное в ЯП (без учёта библиотек) - это не наличие мешка
> сахара, а структурная и функциональная достаточность, стройность и надёжность: средства
> для описания бизнес-логики (типы, классы, интерфейсы, строгая типизация, null safety,
> дженерики), средства для разделения программы на модули, поддержка асинхронности, обработка
> ошибок
> По второму вопросу - есть https://flame-engine.org/ для 2d-игр, но я не могу
> его оценить по возможностям, поскольку не занимался геймдевом.Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary. Scheme demonstrates that a very small number of rules for forming expressions, with no restrictions on how they are composed, suffice to form a practical and efficient programming language that is flexible enough to support most of the major programming paradigms in use today.
Чудик, сахар не усложняет язык, чо ты мелешь?? Суть сахара в том и состоит, чтобы УПРОСТИТЬ громоздкие конструкции синтаксиса более короткими. В чём усложнение?? Парсер стал на 100 строк длиньше? Низлежащие конструкции всё равно остались те же!
А как использовать SVG? Особенно как часть компонента, чтобы он был динамическим (зависел от состояния приложения)?И как анимировать этот SVG?
> А как использовать SVG? Особенно как часть компонента, чтобы он был динамическим
> (зависел от состояния приложения)?Управление состояние с помощью пакета flutter_bloc, поддержка SVG с помощью flutter_svg
> И как анимировать этот SVG?
Поддерживает ли flutter_svg анимированные SVG - не проверял пока.
Я проверил - вроде не поддерживает. Чтобы не просто play / stop, а полноценно управлять.В React Native я беру SVG из Figma, натравливаю SVGR утилиту, которая копирует в React (то же самое, но все теги с большой буквы) и мой компонент готов (это код, а не файл)
Теперь я могу что угодно менять в коде, менять цвета, анимировать и т.д. и т.п.
Dart это то ли C# то ли Java, но зачем? Типа ради Flutter? А ниче что сколько нибудь сложные GUI-приложения на JIT-языках адски тормозят?Именно по этому на связке C#/WPF или Java/Swing ничего сложнее полей для ввода текста нельзя написать, чтобы это дело не тормозило
Тогда вопрос, на Flutter собираются писать десктопные клиенты веб-сервисов, но зачем? Тип есть же на десктопе нормальная веб-версия, в отличии от урезанных версий для мобилок, что решается для последних отдельным приложением
Ну, React Native на JavaScript не просто не тормозит, а летает. Хотя там, конечно, JIT нет.Можно посмотреть демки с новой архитектурой (JSI, TurboModules) которую Facebook уже выкатил на своих приложениях.
Там такие вещи можно делать, никакому Flutter и не снится. При этом GUI летает.
Flutter по сути сейчас паравоз, который тащит за собой Dart. Насчёт сложных приложений и их тормозов: если судить по бенчмаркам, то приложения на Flutter весьма неплохи в плане производительности.Писать UI на Flutter очень удобно. В сочетании с тулингом VS Code - просто сказочно. Приложения работают сразу на куче платформ: Android, iOS, Web, ... Причём это могут быть весьма добротные и большие приложения, а не поделки "приветмир". Вот тут, например, индийский парень подготовил целый видео-курс на примере реализации довольно крутого моб. приложения с очень стройной архитектурой: https://www.techieblossom.dev/flutter/movieapp/pilot_episode/
Интересный язык и фреймворк. Будущее безусловно за кросс-платформенными приложениями.Потому что и по фичам, и по стеку всё очень похоже. Как минимум концептуально.
Однако будущее за React Native.
Будущее наступило... Qt/C++... неблагодари
Это говно, пожалуйста, оставьте себе. Даже не хочу разбираться почему это так.Там хотя бы современные C++ научились использовать или всё так же какие-то слоты и своё NIH говнецо?
по количеству вакнсий Flutter уже обогнал React native, по крайней мере в нашей локации
Заколебался с этими нул сейф, постоянными апгрейдами ради апргрейдов
на нем какой GUI можно сделать? десктопный можно?
Можно, но тебя будут обзывать макакой в комментариях
Ну Sass же как то скушали и не подавились
Это же не Электрон
Новый инсталлятор убунты как раз на нем делают. Но лучше бы не делали.
Пока Microsoft переносит на Github обсуждение с сообществом развития C# как открытой технологии и СТАНДАРТИЗИРУЕТ стабильные версии C# и .NET в ECMA, в это время гугл ложит болт на какое-то там компьюнити и хреначит апдейты языка как разрабы раста раз в месяц....Неудивительно что Dart компьюнити ноль
https://www.ecma-international.org/publications-and-standard.../
Ещё в 2015 году
Dart первой версии в том ECMA, после чего Google забил на стандартизациюC# 5 стандартизирован, сейчас идет работа по стандартизации 6-7 версии
Честное слово, от стандартов net последнее время как то не легче, если вспомнить путь от net framework к текущему состоянию. Просто корыто а не инфраструктура.
NET Framework никогда не был стандартом ECMAСтандарт ECMA опреляет
- Синтаксис языка C#
- API BCL и формат байткода NET
А для TV так и не завезли
что бы там не говорили а Dart Flutter победит все (условно конечно), ибо они реально кросплатформенные, а это очень нравится бизнесу и с этим ничего не сделаешь
Веб версии вроде же нет, реально кроссплатформенный это haxeui
А если внимательно прочитать новость?
> Одновременно представлен значительный релиз Flutter 2.5, который ... позволяет ... создавать приложения для запуска в браузерах.
очередное тормозное дермище, по уровню электрона, те же яйки только с боку.
Каким бы дерьмом это не было, это всё равно лучше чем писать проект одновременно для разных платформ на 4-5 языках сразу.
Swing уже был
Mем про стандарты N+1. Все мы понимаем, как то что земля крутится вокруг солнца, что будущее только за Rust.
Если Microsoft таки выпустит кроссплатформенный MAUI для дотнета, то Dart можно выносить вперед ногами
Microsoft целуется взасос с React Native. У них сейчас многие приложения на нём написаны. И они говорят что ооочень довольны.Это они добавили поддержку Windows в React Native, да ещё и поддерживают MacOS
NET не отменяет Java
MAUI(Xamarin.Forms) не отменяет ReactПросто это конкурирующие технологии, но для дотнета кроссплатформенный гуй из коробки это однозначно плюс
Безусловно. Хорошая конкуренция всегда полезна.
React Native хорош спору нет, но не всем по кайфу JS, ну и про скорость не стоит забывать, пусть React Native это не Apache Cordova, но и до нативного не дотягивает
Ждем NET6 с MAUI
Шикарная система! Все проекты перевожу на дарт а старперы пусть на си попробуют чето написать)
> Все проектыМожет поделитесь, что за проекты?
Это тот на котором пользовательский интерфейс выглядит как куча экскриментов?
Нет, это тот, на котором интерфейс выглядит как ты захочешь (как и в любом другом фреймворке)
Разработчики на flutter сейчас самые высокооплачиваемые.
И жёны у них самые красивые