Dart
Dart | |
---|---|
Парадигма | об'єктно-орієнтована |
Дата появи | 10 жовтня2011 |
Творці | Ларс БакdіKasper Lundd |
Розробник | |
Останній реліз | 3.0.4 (7 червня2023[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»);
- Можливість створювати однорідні системи, що охоплюють як клієнтську, так і серверну частину. Використання однієї мови та інструментарію для клієнтських і серверних компонентів спрощує процес кодування і позбавляє від постійної зміни контексту.
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);
}
- ↑sdk/CHANGELOG.md at main · dart-lang/sdk.GitHub.Процитовано 26 липня 2023.
- ↑Dart for the Entire Web.Архіворигіналуза 28 березня 2015.Процитовано 29 березня 2015.
- ↑Ecma approves the 1st edition of the Dart language specification.Архіворигіналуза 24 квітня 2015.Процитовано 10 липня 2014.
- ↑4th edition – Dart Programming Language Specification.Архіворигіналуза 29 грудня 2021.Процитовано 29 грудня 2021.
- Офіційний сайт
- Standard ECMA-408: Dart Programming Language Specification[Архівовано30 березня 2015 уWayback Machine.]
- Dart FAQ[Архівовано22 травня 2013 уWayback Machine.]
- Seth Ladd and Jaime Wren.Bullseye: Your first Dart App(PDF).Архіворигіналу(PDF)за 25 квітня 2013.
- A Walk on the Dart Side: A Quick Tour of Dart[Архівовано10 листопада 2013 уWayback Machine.](November 2011) — Lecture given atStanford Universityby Google software engineerGilad Bracha(video archive,YouTube[Архівовано20 липня 2013 уWayback Machine.],transcript[Архівовано1 грудня 2011 уWayback Machine.]).
- Google Dart Language and Tools Announced[Архівовано19 квітня 2013 уWayback Machine.]
- Google's Dart announced[Архівовано19 червня 2013 уWayback Machine.]