Дякуємо за запитання! Повна відмова від відповідальності, я працюю над командою Dart.
Мабуть, найкраща перевага, яку сьогодні має Dart, це те, що вона знайома C #, Java, C ++ та більшості розробників JavaScript. Багато розробників мають набір очікувань щодо своєї мови (клас на базі класу, лексична сфера, знайомий синтаксис) та їхніх інструментів (завершення коду, рефакторинг, навігація по коду, налагодження), які Dart прагне досягти та перевищити.
Необов’язкові статичні типи. Коли я створюю прототипи або просто пишу невеликі сценарії, я не використовую багато статичних типів. Мені просто не потрібні їх, і я не хочу заплутатися з церемонією. Однак деякі з цих сценаріїв перетворюються на більші програми. У міру масштабування сценаріїв, я, як правило, хочу класувати примітки та статичні типи.
Невинний, поки не доведеться винні. Dart дуже намагається мінімізувати ситуації, які призводять до помилки часу компіляції. Багато умов у Dart - це попередження, які не зупиняють роботу програми. Чому? У відповідності з модою веб-розробок, обов'язково потрібно дозволити розробникам спробувати трохи коду, натиснути перезавантажити і подивитися, що відбувається. Розробнику не слід спочатку доводити, що вся програма є правильною, перш ніж тестувати кут коду.
Лексичний обсяг. Це приголомшливо, якщо ви до цього не звикли. Простіше кажучи, видимість змінних і навіть це визначається структурою програми. Це виключає клас загадок у традиційному веб-програмуванні. Не потрібно повторно прив’язувати функції, щоб дотримати це до того, що ви думаєте чи очікуєте.
Справжні заняття запекли на мові. Зрозуміло, що більшість розробників хочуть працювати на заняттях, оскільки більшість рамок веб-розробок пропонують рішення. Однак, "клас" з фреймворку A не сумісний з рамкою B в традиційній веб-розробці. Дарт використовує класи природним чином.
Функції верхнього рівня. Болісною частиною Java є те, що все треба класти в клас. Це трохи штучно, особливо коли потрібно визначити кілька функцій утиліти. У Dart ви можете визначати функції на верхньому рівні, поза будь-яким класом. Це робить композицію бібліотеки більш природною.
Класи мають неявні інтерфейси. Усунення явних інтерфейсів спрощує мову. Більше не потрібно визначати IDuck скрізь, все, що вам зараз потрібно, - це клас Дак. Оскільки кожен клас має неявний інтерфейс, ви можете створитиMockDuck implements Duck
Названі конструктори. Ви можете надати конструкторам імена, що справді допомагає в читанні. Наприклад:var duck = new Duck.fromJson(someJsonString)
Заводські конструктори. Заводський зразок досить поширений, і приємно бачити, що це запекло на мові. Заводський конструктор може повернути сингл, об'єкт із кешу або об’єкт підтипу.
Ізоляти. Пройшли дні обміну змінним станом між потоками (техніка, схильна до помилок). Ізолят Dart - це відокремлена купа пам'яті, здатна запускатися в окремому процесі або потоці. Ізоляти спілкуються, надсилаючи повідомлення через порти. Ізоляти працюють у Dart VM і можуть збиратись для веб-працівників у програмах HTML5.
Dart компілює в JavaScript. Це вкрай важливо, оскільки JavaScript є лінгва-франкою в Інтернеті. Додаток Dart має працювати у сучасному Інтернеті.
Сильний інструментарій. Проект Dart також надсилає редактора. Ви знайдете завершення коду, рефакторинг, швидкі виправлення, навігацію по коду, налагодження та багато іншого. Також IntelliJ має плагін Dart.
Бібліотеки. Ви можете організувати код Dart в бібліотеки, щоб полегшити простір імен та повторно використовувати. Ваш код може імпортувати бібліотеку, а бібліотеки можуть реекспортувати.
Строкова інтерполяція. Це просто приємна функція, яка дозволяє легко складати рядок:var msg = "Hello $friend!";
noSuchMethod Dart - це динамічна мова, з якою ви можете обробляти довільні виклики методів noSuchMethod()
.
Джерела. Уміння сказати "це список яблук" дає вашим інструментам набагато більше інформації, щоб допомогти вам і рано зафіксувати потенційні помилки. На щастя, генеричні дані Дарта є більш простими, ніж те, що ви, мабуть, звикли.
Перевантаження оператора. Класи Dart можуть визначати поведінку для операторів, таких як +
або -
. Наприклад, ви можете написати код типу new Point(1,1) + new Point(2,2)
.
Сказавши все це, є набагато більше бібліотек JavaScript.
Особисто я вважаю, що в Інтернеті є місце для багатьох мов. Якщо додаток приголомшливо, і він працює у більшості сучасних браузерів, мені все одно, на якій мові він написаний. Поки ви, розробник, щасливі, продуктивні та запускаєтеся в Інтернеті, це що важливо! :)