Очікує на перевірку

Dart

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Dart
Парадигмаоб'єктно-орієнтована
Дата появи10 жовтня2011
ТворціЛарс БакdіKasper Lundd
РозробникGoogle
Останній реліз3.0.4 (7 червня2023;15 місяців тому(2023-06-07)[1])
Система типізаціїопціональна
Під впливом відStrongtalkd,Java,JavaScript,Smalltalk,ErlangіC Sharp
Платформакросплатформова програма
Операційна системакросплатформова програма
ЛіцензіяЛіцензія BSD
Звичайнірозширення файлів.dart
Репозиторійвихідного кодуgithub /dart-lang/sdk
Вебсайтdart.dev

Dartмова програмування,яку розробляє компаніяGoogle,позиціонуючи як мовуструктурованого програмуваннядляВеб.Розробники вважали, що в довгостроковій перспективі Dart може стати прогресивною заміноюJavaScript,котрий потерпає від наявних в даний час проблем з розширюваністю, продуктивністю і підтримкою розробки складнихзастосунків.Мова має схожий на Java синтаксис, не вимагає явного визначення типів і її можна використовувати для створення серверних та клієнтських застосунків.

У березні 2015 компанія Google представила оновлену стратегію просування Dart[2],у котрій вирішено не прив'язувати Dart до браузеру і відмовитися від ідеї інтеграції віртуальної машини Dart уChrome.Розробку буде зосереджено на застосуванні Dart як проміжної мови, скомпільованої вJavaScript.Розвиток Dart як окремої мови, альтернативної JavaScript і безпосередньо підтримуваної у браузерах, визнано недоцільним. Замість цього Dart рухатиметься у бік якіснішої інтеграції з JavaScript і генерації оптимального JavaScript-коду. При цьому розробку віртуальної машини Dart VM буде продовжено, але вона позиціонуватиметься в основному для створення серверних і мобільнихзастосунків.

Влітку 2014 асоціаціяECMA International,що займається стандартизацією інформаційних і комунікаційних технологій, затвердила[3]специфікаціюECMA-408[Архівовано30 березня 2015 уWayback Machine.],яка стандартизує синтаксис і семантику мови Dart, а також склад базових бібліотек і супутніх мові технологій, відтоді мова Dart є офіційним стандартом Ecma. 9 Грудня 2015 вТокіобуло затверджено 4-е[4]видання[Архівовано31 липня 2021 уWayback Machine.].Надання Dart статусу стандарту Ecma дозволить розширити область використання мови та прискорити забезпечення його підтримки в наявних на ринкубраузерахі продуктах. Вибір Ecma International як організації для стандартизації обумовлений тим, що ця асоціація вже розвиває близькі до специфіки Dart стандарти для мовJavaScript,EiffelіC#.Просуванню Dart як стандарту сприяло надання компанієюGoogleвсіх пов'язаних з розробкою патентів у безоплатне використання, що не вимагає оплати відрахувань (royalty free).

Короткий огляд

[ред.|ред. код]

Мова має схожий наJavaсинтаксис, не вимагає явного визначення типів і може використовуватися для створення серверних і клієнтських застосунків. Для запуску всерединібраузеракод мовою Dart може бути перетворений в JavaScript-подання або запущений безпосередньо під управлінням спеціального JavaScript-інтерпретатора Dartboard. Підтримується вбудовування коду мовою Dart вHTML-сторінки, використовуючиMIME тип«application/dart». На стороні сервера застосунок на мові Dart може бути виконаний всередині спеціальноївіртуальної машини,яка забезпечує продуктивність виконання близьку докомпільованихвмашинний кодмов. Віртуальну машину Dart планують інтегрувати в майбутні версії браузераChrome,що дозволить виконувати застосунки мовою Dart без компіляції в JavaScript.

Мова підходить як для розробки одним програмістом невеликих скриптів без жорсткої структури, так і для створення високо масштабованих великих модульних проектів, підтримуваних великим колективом з потребою більш явної типізації для того, щоб уникнути плутанини і помилок. При цьому явне задання типів не обов'язкове, наприклад, можна почати розробку без вказання типів, а надалі при необхідності додати їх (наприклад, спочатку написати «var x», а потім замінити на «num x»). Код Dart завжди виконується тільки в рамках одноїпотоку,для організації паралельного виконання пропонується використовувати класи з атрибутомisolate.У кожному скрипті використовується власнийпростір імен,для використання зовнішніх об'єктів, функцій або змінних слід їх явно імпортувати за допомогою конструкції «import». Всі змінні, початково, діють тільки в межах поточного скрипту і не експортуються глобально.

Для спрощення розробки мовою Dart поставляєтьсяSDK,який включає в себекомпіляторdart2js,віртуальну машинуDart VM, пакетний менеджер pub, статичний аналізатор коду dart_analyzer, і набірбібліотек.Для виконання івідлагодженнязастосунків на мові Dart, без компіляції в JavaScript, поширюється Dartium — складаннябраузераChromiumз інтегрованою віртуальною машиною Dart VM.

До складу SDK входить Dart Editor — спеціалізованеінтегроване середовище розробкимовою Dart. Dart Editor з одного боку досить легковаговий і не вимогливий до ресурсів, а з іншого підтримує такі елементи сучасних IDE, якрефакторинг,автодоповненнякоду, перехід на визначення, контекстні підказки, містить вбудованийвідлагоджувачі аналізатор коду.Плагіниз підтримкою Dart також підготовлені дляIntelliJ IDEA,WebStorm,Eclipse,EmacsіVim.

Додаткові пакунки з бібліотеками й утилітами поширюються черезрепозиторійpub, який станом на весну 2015 налічує понад півтори тисячі пакунків, у тому числіфреймворкидля розробкивебзастосунківAngularDart і polymer.dart.

Особливості мови

[ред.|ред. код]

Особливості мови Dart:

  • Звичний і простий для вивчення синтаксис, природний для програмістів наJavaScript,СіJava;
  • Забезпечення швидкого запуску і високої продуктивності для всіх сучаснихвеббраузеріві різних типів оточень, від портативних пристроїв до потужнихсерверів;
  • Можливість визначеннякласівіінтерфейсів,що дозволяють використовуватиінкапсуляціюі повторно використовувати існуючіметодиідані;
  • Необов'язкове вказування типів, використовувати чи ні статичні типи вирішує розробник. Вказування типів дозволяє спростити зневадження і виявлення помилок, робить код яснішим і читаним, спрощує його доопрацювання та аналіз сторонніми розробниками.
  • Серед підтримуваних типів: різні види хешів, масивів і списків, черги, числові і рядкові типи, типи для визначення дати і часу,регулярні вирази(RegExp). Можливо створення своїх типів;
  • Для організації паралельного виконання пропонується використовувати класи з атрибутом isolate, код яких виконується повністю в ізольованому просторі в окремій області пам'яті, взаємодіючи з основним процесом через відправку повідомлень;
  • Підтримка використання бібліотек, що спрощують підтримку і зневадження великих вебпроектів. Сторонні реалізації функцій можуть підключатися у вигляді поділюваних бібліотек.Застосункиможна розбити на частини і доручити розробку кожної з частин окремій команді програмістів;
  • Набір готових інструментів для підтримки розробки мовою Dart, включаючи реалізацію засобів динамічної розробки та зневадження з виправленням коду на льоту («edit-and-continue»);
  • Можливість створювати однорідні системи, що охоплюють як клієнтську, так і серверну частину. Використання однієї мови та інструментарію для клієнтських і серверних компонентів спрощує процес кодування і позбавляє від постійної зміни контексту.

Приклади

[ред.|ред. код]

Hello, world!:

main(){
print('HelloWorld!');
}

Функція для розрахунку n-огочисла Фібоначчі:

intfib(intn){
return(n<=1)?n:(fib(n-1)+fib(n-2));
}

main(){
print('fib(20)=${fib(20)}');
}

Простий клас:

// імпортуємо бібліотеку math, щоб мати доступ до функції sqrt
import'dart:math'asmath;

// створюємо клас для точки - Point
classPoint{

// final-змінні не можуть бути змінені після присвоювання значення
// створюємо дві змінні екземпляра
finalnumx,y;

// конструктор, з синтаксичним цукором для встановлення змінних екземпляра
Point(this.x,this.y);

// іменований конструктор зі списком ініціалізації
Point.origin():x=0,y=0;

// метод
numdistanceTo(Pointother){
vardx=x-other.x;
vardy=y-other.y;
returnmath.sqrt(dx*dx+dy*dy);
}
}

// всі програми Dart стартують з main().
main(){
// встановлюємо об'єкти Point
varp1=newPoint(10,10);
varp2=newPoint.origin();
vardistance=p1.distanceTo(p2);
print(distance);
}

Виноски

[ред.|ред. код]
  1. sdk/CHANGELOG.md at main · dart-lang/sdk.GitHub.Процитовано 26 липня 2023.
  2. Dart for the Entire Web.Архіворигіналуза 28 березня 2015.Процитовано 29 березня 2015.
  3. Ecma approves the 1st edition of the Dart language specification.Архіворигіналуза 24 квітня 2015.Процитовано 10 липня 2014.
  4. 4th edition – Dart Programming Language Specification.Архіворигіналуза 29 грудня 2021.Процитовано 29 грудня 2021.

Посилання

[ред.|ред. код]