Dart — мова програмування, яку розробляє компанія Google, позиціонуючи як мову для Веб. Розробники вважали, що в довгостроковій перспективі Dart може стати прогресивною заміною JavaScript, котрий потерпає від наявних в даний час проблем з розширюваністю, продуктивністю і підтримкою розробки складних застосунків. Мова має схожий на Java синтаксис, не вимагає явного визначення типів і її можна використовувати для створення серверних та клієнтських застосунків.
Dart | |
---|---|
Парадигма | об'єктно-орієнтована |
Дата появи | 10 жовтня 2011 |
Творці | d і d |
Розробник | |
Останній реліз | 3.0.4 (7 червня 2023 ) |
Система типізації | опціональна |
Під впливом від | d, Java, JavaScript, Smalltalk, Erlang і C Sharp |
Платформа | кросплатформова програма |
Операційна система | кросплатформова програма |
Ліцензія | Ліцензія BSD |
Звичайні розширення файлів | .dart |
Репозиторій вихідного коду | github.com/dart-lang/sdk |
Вебсайт | dart.dev |
|
У березні 2015 компанія Google представила оновлену стратегію просування Dart, у котрій вирішено не прив'язувати Dart до браузеру і відмовитися від ідеї інтеграції віртуальної машини Dart у Chrome. Розробку буде зосереджено на застосуванні Dart як проміжної мови, скомпільованої в JavaScript. Розвиток Dart як окремої мови, альтернативної JavaScript і безпосередньо підтримуваної у браузерах, визнано недоцільним. Замість цього Dart рухатиметься у бік якіснішої інтеграції з JavaScript і генерації оптимального JavaScript-коду. При цьому розробку віртуальної машини Dart VM буде продовжено, але вона позиціонуватиметься в основному для створення серверних і мобільних застосунків.
Влітку 2014 асоціація ECMA International, що займається стандартизацією інформаційних і комунікаційних технологій, затвердила специфікацію ECMA-408 [ 30 березня 2015 у Wayback Machine.], яка стандартизує синтаксис і семантику мови Dart, а також склад базових бібліотек і супутніх мові технологій, відтоді мова Dart є офіційним стандартом Ecma. 9 Грудня 2015 в Токіо було затверджено 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('Hello World!'); }
Функція для розрахунку n-ого числа Фібоначчі:
int fib(int n) { return (n <= 1) ? n : (fib(n - 1) + fib(n - 2)); } main() { print('fib(20) = ${fib(20)}'); }
Простий клас:
// імпортуємо бібліотеку math, щоб мати доступ до функції sqrt import 'dart:math' as math; // створюємо клас для точки - Point class Point { // final-змінні не можуть бути змінені після присвоювання значення // створюємо дві змінні екземпляра final num x, y; // конструктор, з синтаксичним цукором для встановлення змінних екземпляра Point(this.x, this.y); // іменований конструктор зі списком ініціалізації Point.origin() : x = 0, y = 0; // метод num distanceTo(Point other) { var dx = x - other.x; var dy = y - other.y; return math.sqrt(dx * dx + dy * dy); } } // всі програми Dart стартують з main(). main() { // встановлюємо об'єкти Point var p1 = new Point(10, 10); var p2 = new Point.origin(); var distance = p1.distanceTo(p2); print(distance); }
Виноски
- sdk/CHANGELOG.md at main · dart-lang/sdk. GitHub. Процитовано 26 липня 2023.
- . Архів оригіналу за 28 березня 2015. Процитовано 29 березня 2015.
- . Архів оригіналу за 24 квітня 2015. Процитовано 10 липня 2014.
- . Архів оригіналу за 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. (PDF). Архів оригіналу (PDF) за 25 квітня 2013.
- A Walk on the Dart Side: A Quick Tour of Dart [ 10 листопада 2013 у Wayback Machine.] (November 2011) — Lecture given at Stanford University by Google software engineer (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.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
U Vikipediyi ye statti pro inshi znachennya cogo termina DART Dart mova programuvannya yaku rozroblyaye kompaniya Google pozicionuyuchi yak movu dlya Veb Rozrobniki vvazhali sho v dovgostrokovij perspektivi Dart mozhe stati progresivnoyu zaminoyu JavaScript kotrij poterpaye vid nayavnih v danij chas problem z rozshiryuvanistyu produktivnistyu i pidtrimkoyu rozrobki skladnih zastosunkiv Mova maye shozhij na Java sintaksis ne vimagaye yavnogo viznachennya tipiv i yiyi mozhna vikoristovuvati dlya stvorennya servernih ta kliyentskih zastosunkiv DartParadigmaob yektno oriyentovanaData poyavi10 zhovtnya 2011Tvorcid i dRozrobnikGoogleOstannij reliz3 0 4 7 chervnya 2023 12 misyaciv tomu 2023 06 07 Sistema tipizaciyiopcionalnaPid vplivom vidd Java JavaScript Smalltalk Erlang i C SharpPlatformakrosplatformova programaOperacijna sistemakrosplatformova programaLicenziyaLicenziya BSDZvichajni rozshirennya fajliv dartRepozitorij vihidnogo kodugithub com dart lang sdkVebsajtdart dev Mediafajli u Vikishovishi U berezni 2015 kompaniya Google predstavila onovlenu strategiyu prosuvannya Dart u kotrij virisheno ne priv yazuvati Dart do brauzeru i vidmovitisya vid ideyi integraciyi virtualnoyi mashini Dart u Chrome Rozrobku bude zoseredzheno na zastosuvanni Dart yak promizhnoyi movi skompilovanoyi v JavaScript Rozvitok Dart yak okremoyi movi alternativnoyi JavaScript i bezposeredno pidtrimuvanoyi u brauzerah viznano nedocilnim Zamist cogo Dart ruhatimetsya u bik yakisnishoyi integraciyi z JavaScript i generaciyi optimalnogo JavaScript kodu Pri comu rozrobku virtualnoyi mashini Dart VM bude prodovzheno ale vona pozicionuvatimetsya v osnovnomu dlya stvorennya servernih i mobilnih zastosunkiv Vlitku 2014 asociaciya ECMA International sho zajmayetsya standartizaciyeyu informacijnih i komunikacijnih tehnologij zatverdila specifikaciyu ECMA 408 30 bereznya 2015 u Wayback Machine yaka standartizuye sintaksis i semantiku movi Dart a takozh sklad bazovih bibliotek i suputnih movi tehnologij vidtodi mova Dart ye oficijnim standartom Ecma 9 Grudnya 2015 v Tokio bulo zatverdzheno 4 e vidannya 31 lipnya 2021 u Wayback Machine Nadannya Dart statusu standartu Ecma dozvolit rozshiriti oblast vikoristannya movi ta priskoriti zabezpechennya jogo pidtrimki v nayavnih na rinku brauzerah i produktah Vibir Ecma International yak organizaciyi dlya standartizaciyi obumovlenij tim sho cya asociaciya vzhe rozvivaye blizki do specifiki Dart standarti dlya mov JavaScript Eiffel i C Prosuvannyu Dart yak standartu spriyalo nadannya kompaniyeyu Google vsih pov yazanih z rozrobkoyu patentiv u bezoplatne vikoristannya sho ne vimagaye oplati vidrahuvan royalty free Korotkij oglyadMova maye shozhij na Java sintaksis ne vimagaye yavnogo viznachennya tipiv i mozhe vikoristovuvatisya dlya stvorennya servernih i kliyentskih zastosunkiv Dlya zapusku vseredini brauzera kod movoyu Dart mozhe buti peretvorenij v JavaScript podannya abo zapushenij bezposeredno pid upravlinnyam specialnogo JavaScript interpretatora Dartboard Pidtrimuyetsya vbudovuvannya kodu movoyu Dart v HTML storinki vikoristovuyuchi MIME tip application dart Na storoni servera zastosunok na movi Dart mozhe buti vikonanij vseredini specialnoyi virtualnoyi mashini yaka zabezpechuye produktivnist vikonannya blizku do kompilovanih v mashinnij kod mov Virtualnu mashinu Dart planuyut integruvati v majbutni versiyi brauzera Chrome sho dozvolit vikonuvati zastosunki movoyu Dart bez kompilyaciyi v JavaScript Mova pidhodit yak dlya rozrobki odnim programistom nevelikih skriptiv bez zhorstkoyi strukturi tak i dlya stvorennya visoko masshtabovanih velikih modulnih proektiv pidtrimuvanih velikim kolektivom z potreboyu bilsh yavnoyi tipizaciyi dlya togo shob uniknuti plutanini i pomilok Pri comu yavne zadannya tipiv ne obov yazkove napriklad mozhna pochati rozrobku bez vkazannya tipiv a nadali pri neobhidnosti dodati yih napriklad spochatku napisati var x a potim zaminiti na num x Kod Dart zavzhdi vikonuyetsya tilki v ramkah odnoyi potoku dlya organizaciyi paralelnogo vikonannya proponuyetsya vikoristovuvati klasi z atributom isolate U kozhnomu skripti vikoristovuyetsya vlasnij prostir imen dlya vikoristannya zovnishnih ob yektiv funkcij abo zminnih slid yih yavno importuvati za dopomogoyu konstrukciyi import Vsi zminni pochatkovo diyut tilki v mezhah potochnogo skriptu i ne eksportuyutsya globalno Dlya sproshennya rozrobki movoyu Dart postavlyayetsya SDK yakij vklyuchaye v sebe kompilyator dart2js virtualnu mashinu Dart VM paketnij menedzher pub statichnij analizator kodu dart analyzer i nabir bibliotek Dlya vikonannya i vidlagodzhennya zastosunkiv na movi Dart bez kompilyaciyi v JavaScript poshiryuyetsya Dartium skladannya brauzera Chromium z integrovanoyu virtualnoyu mashinoyu Dart VM Do skladu SDK vhodit Dart Editor specializovane integrovane seredovishe rozrobki movoyu Dart Dart Editor z odnogo boku dosit legkovagovij i ne vimoglivij do resursiv a z inshogo pidtrimuye taki elementi suchasnih IDE yak refaktoring avtodopovnennya kodu perehid na viznachennya kontekstni pidkazki mistit vbudovanij vidlagodzhuvach i analizator kodu Plagini z pidtrimkoyu Dart takozh pidgotovleni dlya IntelliJ IDEA WebStorm Eclipse Emacs i Vim Dodatkovi pakunki z bibliotekami j utilitami poshiryuyutsya cherez repozitorij pub yakij stanom na vesnu 2015 nalichuye ponad pivtori tisyachi pakunkiv u tomu chisli frejmvorki dlya rozrobki vebzastosunkiv AngularDart i polymer dart Osoblivosti moviOsoblivosti movi Dart Zvichnij i prostij dlya vivchennya sintaksis prirodnij dlya programistiv na JavaScript S i Java Zabezpechennya shvidkogo zapusku i visokoyi produktivnosti dlya vsih suchasnih vebbrauzeriv i riznih tipiv otochen vid portativnih pristroyiv do potuzhnih serveriv Mozhlivist viznachennya klasiv i interfejsiv sho dozvolyayut vikoristovuvati inkapsulyaciyu i povtorno vikoristovuvati isnuyuchi metodi i dani Neobov yazkove vkazuvannya tipiv vikoristovuvati chi ni statichni tipi virishuye rozrobnik Vkazuvannya tipiv dozvolyaye sprostiti znevadzhennya i viyavlennya pomilok robit kod yasnishim i chitanim sproshuye jogo doopracyuvannya ta analiz storonnimi rozrobnikami Sered pidtrimuvanih tipiv rizni vidi heshiv masiviv i spiskiv chergi chislovi i ryadkovi tipi tipi dlya viznachennya dati i chasu regulyarni virazi RegExp Mozhlivo stvorennya svoyih tipiv Dlya organizaciyi paralelnogo vikonannya proponuyetsya vikoristovuvati klasi z atributom isolate kod yakih vikonuyetsya povnistyu v izolovanomu prostori v okremij oblasti pam yati vzayemodiyuchi z osnovnim procesom cherez vidpravku povidomlen Pidtrimka vikoristannya bibliotek sho sproshuyut pidtrimku i znevadzhennya velikih vebproektiv Storonni realizaciyi funkcij mozhut pidklyuchatisya u viglyadi podilyuvanih bibliotek Zastosunki mozhna rozbiti na chastini i doruchiti rozrobku kozhnoyi z chastin okremij komandi programistiv Nabir gotovih instrumentiv dlya pidtrimki rozrobki movoyu Dart vklyuchayuchi realizaciyu zasobiv dinamichnoyi rozrobki ta znevadzhennya z vipravlennyam kodu na lotu edit and continue Mozhlivist stvoryuvati odnoridni sistemi sho ohoplyuyut yak kliyentsku tak i servernu chastinu Vikoristannya odniyeyi movi ta instrumentariyu dlya kliyentskih i servernih komponentiv sproshuye proces koduvannya i pozbavlyaye vid postijnoyi zmini kontekstu PrikladiHello world main print Hello World Funkciya dlya rozrahunku n ogo chisla Fibonachchi int fib int n return n lt 1 n fib n 1 fib n 2 main print fib 20 fib 20 Prostij klas importuyemo biblioteku math shob mati dostup do funkciyi sqrt import dart math as math stvoryuyemo klas dlya tochki Point class Point final zminni ne mozhut buti zmineni pislya prisvoyuvannya znachennya stvoryuyemo dvi zminni ekzemplyara final num x y konstruktor z sintaksichnim cukorom dlya vstanovlennya zminnih ekzemplyara Point this x this y imenovanij konstruktor zi spiskom inicializaciyi Point origin x 0 y 0 metod num distanceTo Point other var dx x other x var dy y other y return math sqrt dx dx dy dy vsi programi Dart startuyut z main main vstanovlyuyemo ob yekti Point var p1 new Point 10 10 var p2 new Point origin var distance p1 distanceTo p2 print distance Vinoskisdk CHANGELOG md at main dart lang sdk GitHub Procitovano 26 lipnya 2023 Arhiv originalu za 28 bereznya 2015 Procitovano 29 bereznya 2015 Arhiv originalu za 24 kvitnya 2015 Procitovano 10 lipnya 2014 Arhiv originalu za 29 grudnya 2021 Procitovano 29 grudnya 2021 PosilannyaOficijnij sajt Standard ECMA 408 Dart Programming Language Specification 30 bereznya 2015 u Wayback Machine Dart FAQ 22 travnya 2013 u Wayback Machine Seth Ladd and Jaime Wren PDF Arhiv originalu PDF za 25 kvitnya 2013 A Walk on the Dart Side A Quick Tour of Dart 10 listopada 2013 u Wayback Machine November 2011 Lecture given at Stanford University by Google software engineer video archive YouTube 20 lipnya 2013 u Wayback Machine transcript 1 grudnya 2011 u Wayback Machine Google Dart Language and Tools Announced 19 kvitnya 2013 u Wayback Machine Google s Dart announced 19 chervnya 2013 u Wayback Machine