ru:https://highload.today/blogs/ubit-javascript-ne-poluchilos-za-chto-my-lyubim-dart-yazyk-sozdaniya-prilozhenij-na-flutter-i-komu-on-podhodit/ ua:https://highload.today/uk/blogs/za-shho-my-lyubymo-dart-golovnu-ta-yedynu-movu-stvorennya-dodatkiv-na-flutter/
logo

«Убить JavaScript не получилось»: за что мы любим Dart — язык создания приложений на Flutter (и кому он подходит)

Сергій Гузенко BLOG

CEO у WEZOM

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

Но сегодня мы хотели бы поговорить о Dart — языке программирования, который делает Flutter таким, каким он есть. Кратко и без воды расскажем об особенностях и преимуществах Dart, поделимся опытом работы и полезными для джунов материалами.

Немного контекста

Технически Dart появился в 2011 году в дебрях Google. В те времена СМИ любили писать, что Google намерена «убить» JavaScript, да и сами разработчики Dart любили говорить на презентациях о «фундаментальных недостатках» JS. 

Что ж, убить JavaScript не получилось, но сегодня Dart позиционируется как универсальный client-side-язык, который может как работать как с собственной виртуальной машиной на нативных платформах, так и компилироваться в JS.

Это очень удобный язык для мира, где параллельно существует множество платформ: десктоп, мобайл, веб. Веб-разработчики могут легко ее изучить и повторно использовать большую часть кода под разные системы — Android, IOS и MacOS, Windows, Ubuntu. 

Сегодня о Dart говорят и как о языке для IoT-устройств, и как о языке для бэкенда, хотя там и без него высока конкуренция. 

Принципи Dart  

Мы говорим о типизированном C-образном языке программирования, а значит, синтаксис Dart очень похож на JS. Но при этом система типов у Dart не слишком разветвленная и сначала может показаться «бедной».

На самом деле Dart входит в относительно редкую категорию soundness-языков: речь идет здесь не о звуках, а о приоритете здравого смысла в работе с типами, то есть отсутствии внутренних противоречий. К примеру, если у вас есть переменная типа int, то она гарантированно будет оставаться с типом int. Это существенное отличие от JS, где типы можно приводить друг к другу. 

На официальном сайте Dart эту модель называют sound type system, и приводят следующие преимущества:

  1. Своевременное выявление связанных с типами багов при компиляции. 
  2. Онлайн курс FrontEnd від CyberBionic Systematics.
    Навчитесь чи покращите свої навички у створенні та підтримці користувацьких інтерфейсів вебсайтів і вебзастосунків.
    Дійзнайтеся більше
  3. Лучше читаемый код (ведь типы не могут вам «лгать»).
  4. Удобство поддержки кода — если вы изменяете один фрагмент, система типов может предупредить вас о других фрагментах, которые только что сломались из-за вашей правки.
  5. Улучшенная AOT-компиляция. Хотя AOT можно производить и без типов, сгенерированный таким образом код будет менее эффективным. 

Отдельно можем выделить также реализуемый в Dart null-safety: переменная не может быть нулем, если только разработчик собственными руками не определил обратное. 

Dart воспринимается интуитивно и не нуждается в такой разветвленной системе типов, которая есть, например, в TypeScript. Можно воспринимать это как предохранитель, мешающий вам выстрелить себе в ногу 🙂

Как работает Dart 

Dart может работать нативно через собственную виртуальную машину DartVM, которая хорошо сочетает преимущества компиляции JIT (Just in time) и AOT (Ahead of time).

JIT — это компиляция кода на лету, тогда как AOT — это работа на опережение с уже скомпилированным кодом.

При разработке на Flutter Dart предоставляет характерную для JIT опцию hot reload, что ускоряет всю работу и помогает отлавливать баги. Но при развертывании продукта он также предоставляет возможности AOT-компиляции (например, под ARM или x64), чтобы конечный продукт был стабильным и работал быстро. При этом Flutter предоставляет в скомпилированный код определенный рантайм, чтобы обеспечить сбор мусора и избежать проблем с типами.

В то же время Dart может с легкостью интерпретироваться и в JavaScript, то есть превращаться в код, который можно открыть в любом браузере. Компиляция под веб происходит по пайплайнам V8 или любому другому движущему устройству. 

Онлайн-курс "Нотації BPMN" від Laba.
Опануйте мову BPMN для візуалізації бізнес-процесів, щоб впорядкувати хаос у них.Після курсу ви точно знатимете, що саме обрати для розв’язання завдань вашого бізнесу.
Дізнатись більше

Такая гибкость в компиляции делает Dart очень универсальным, код с мобайла можно с минимальными изменениями переносить в интернет, и наоборот. Создаваемые таким образом проекты легко поддерживать. При этом скомпилированный у Dart код остается достаточно резвым, лишь немного уступая в нативном быстродействии. 

За что мы любим Dart?

  • Легкий в изучении. Если у вас есть определенный опыт с JS или Rust, изучение Dart не составит для вас никакой проблемы. Синтаксис будет интуитивно понятен и очевиден. Следовательно, на адаптацию понадобится буквально две-три недели.
  • Делает возможным Hot Reload. Это некая магия, полностью меняющая ваш опыт разработки. Ведь вы можете вживую видеть, как изменения в коде влияют на визуал и функционал того, что вы создаете.
  • Есть документация и инструменты. Разработчики сделали все, чтобы вам не пришлось проводить шаманские ритуалы и искать ответы в дебрях Stack Overflow и Github. Это не значит, что вы не будете этого делать, но в целом ваши поиски будут безболезненными.
  • Доступный. Никакой проприетарности: инструменты для разработки доступны практически на всех десктопных системах — Windows, MacOS, Ubuntu. Почти всюду доступны эмуляторы Android и IOS. Для работы подойдет большинство распространенных IDE — Visual Studio Code или Android Studio.
  • Помогает улучшать UI. Ведь речь идет о client-side-языке, нацеленном на работу с визуалом и анимациями. В Dart есть множество функций для борьбы с микролагами и дерганием в работе интерфейсов. Обычно приложения на Flutter работают плавно и выглядят приятно.

Какие сложности возникают из Dart? 

К чему должен быть готов разработчик, изучающий Dart или мигрирующий на него? Какие здесь подводные камни? Ничего критического, но о некоторых вещах нужно сказать.

Dart = Flutter

Flutter — это единственный большой фреймворк на Dart, и это проблема. Каким бы удобным и мощным ни был Flutter, это всего один инструмент, и его мало. Dart-комьюнити могло бы развиваться гораздо быстрее, если бы у Flutter появились приспешники и конкуренты, но пока их не видно (если не учитывать Angular Dart, который, к сожалению, не выстрелил).

Экосистема Flutter развивается быстро, но за быстрый рост силами малой команды приходится платить багами. 

Курс-професія "Motion Designer" від Skvot.
Навчіться створювати 2D- та 3D-анімації у софтах After Effects, Cinema 4D та Octane Render. Протягом курсу ви створите 14 моушн-роликів, 2 з яких — для реального клієнта.
Детальніше про курс

Однопоточность

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

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

Кроссплатформенность

Вы скажете, что это ключевое преимущество Dart, и будете правы. Но множество платформ, на которые ориентируется Flutter, диктуют разработчикам дополнительные требования: им придется получить базовые представления о принципах и особенностях этих платформ. Это самая большая сложность, с которой при переходе на Flutter сталкиваются веб-разработчики.  

Где искать информацию и ответы

Итак, вы решили изучить Dart/Flutter, нужно ли вам быстро овладеть его. С чего начать:

  1. В арто пойти на официальные сайты — Dart.dev и Flutter.dev. Документация закрывает 90% всех вопросов работы в экосистеме.
  2. Если английский позволяет, то стоит пойти на самые крупные англоязычные веб-ячейки комьюнити — Awesome Flutter и Awesome Dart на Github.
  3. Можно посетить крупнейшие Discord-сообщества, посвященные Dart и Flutter.
  4. Украинский чат на тему Dart/Flutter в Telegram — для поиска ответов, вакансий и единомышленников.

Будущее Dart

Flutter стал для нас ключевым инструментом разработки кроссплатформенных мобильных приложений — мы ценим его гибкость, доступность и технологичность.

Курс Frontend від Mate academy.
Frontend розробник може легко створити сторінки вебсайту чи вебдодаток. Тому після курсу ви станете затребуваним фахівцем у сфері, що розвивається.
Інформація про курс

Стремительное распространение Flutter работает на комьюнити и стимулирует развитие Dart. Поэтому мы верим, что проектов на нем будет становиться все больше — и не только в мобайле, но и в интернете. Уверены: в дальнейшем он может заполучить себе место и в бэкенде, и на десктопных системах. 

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Англійська для IT від Englishdom.
В межах курсу можна освоїти ключові ІТ-теми та почати без проблем говорити з іноземними колегами.
Дійзнайтеся більше

Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.

Топ-5 самых популярных блогеров марта

PHP Developer в ScrumLaunch
Всего просмотровВсего просмотров
2434
#1
Всего просмотровВсего просмотров
2434
Founder at Shallwe, Python Software Engineer (Django/React)
Всего просмотровВсего просмотров
113
#2
Всего просмотровВсего просмотров
113
Career Consultant в GoIT
Всего просмотровВсего просмотров
95
#3
Всего просмотровВсего просмотров
95
CEO & Founder в Trustee
Всего просмотровВсего просмотров
94
#4
Всего просмотровВсего просмотров
94
Рейтинг блогеров

Ваша жалоба отправлена модератору

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: