Dart

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

Виноски

  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.

Посилання

Read other articles:

Furfural Nama Nama IUPAC Furan-2-carbaldehyde Nama lain furfural, furan-2-carboxaldehyde, fural, furfuraldehyde, 2-furaldehyde, pyromucic aldehyde Penanda Nomor CAS 98-01-1 Y Model 3D (JSmol) Gambar interaktif 3DMet {{{3DMet}}} ChEMBL ChEMBL189362 Y ChemSpider 13863629 Y Nomor EC KEGG C14279 Y PubChem CID 7362 Nomor RTECS {{{value}}} UNII DJ1HGI319P Y CompTox Dashboard (EPA) DTXSID1020647 InChI InChI=1S/C5H4O2/c6-4-5-2-1-3-7-5/h1-4H YKey: HYBBIBNJHNGZAN-UHF...

 

 

New MexicoNegara bagian BenderaLambangPeta Amerika Serikat dengan ditandaiNegaraAmerika SerikatSebelum menjadi negara bagianWilayah New MexicoBergabung ke Serikat6 Januari 1912 (47)Kota terbesarAlbuquerqueMetropolitan terbesarAlbuquerque-Rio Rancho MetroPemerintahan • GubernurSusana Martínez (R) • Wakil GubernurDiane D. Denish (D) • Majelis tinggi{{{Upperhouse}}} • Majelis rendah{{{Lowerhouse}}}Senator ASJeff Bingaman (D) Tom Udall (D)Delegasi ...

 

 

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus. Cet article ne cite pas suffisamment ses sources (août 2022). Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références » En pratique : Quelles sources sont attendues ? Comm...

Halaman ini berisi artikel tentang anak perusahaan. Untuk induk perusahaan yang kini menggunakan singkatan BEI SMGR, lihat Semen Indonesia. PT Semen GresikLogo PT Semen GresikJenisAnak perusahaan BUMNIndustriSemenPendahuluPT Semen Gresik (Persero) Tbk (inkarnasi pertama)Didirikan7 Agustus 1957 (peresmian Pabrik Semen Gresik pertama)10 Januari 2014 (sebagai perusahaan yang mengalami restrukturisasi pasca pembentukan holding Semen Indonesia)KantorpusatTuban, Jawa Timur dan Rembang, Jawa Tengah,...

 

 

Lake in Slovakia For other uses, see Morské oko (disambiguation). Morské okoMorské okoLocationVihorlat MountainsCoordinates48°54′56″N 22°11′54″E / 48.91556°N 22.19833°E / 48.91556; 22.19833Basin countriesSlovakiaSurface area13 ha (32 acres)Max. depth25.1 m (82 ft)Surface elevation618 m (2,028 ft) View of Morské oko from Sninský kameň in winter Morské oko (called Veľké Vihorlatské jazero in the past; literally Eye of t...

 

 

Patrick M. Shanahan Pelaksana tugas Menteri Pertahanan Amerika SerikatMasa jabatan1 Januari 2019 – 23 Juni 2019PresidenDonald TrumpWakilDavid Norquist (pelaksana tugas)PendahuluJim MattisPenggantiMark EsperWakil Menteri Pertahanan Amerika Serikat ke-33Masa jabatan19 Juli 2017 – 1 Januari 2019PresidenDonald TrumpPendahuluRobert O. WorkPenggantiDavid Norquist Informasi pribadiLahirPatrick Michael Shanahan27 Juni 1962 (umur 61)Palo Alto, California, ASAnak3PendidikanUn...

马来西亚—英国关系 马来西亚 英国 代表機構马来西亚驻英国高级专员公署(英语:High Commission of Malaysia, London)英国驻马来西亚高级专员公署(英语:British High Commission, Kuala Lumpur)代表高级专员 阿末拉席迪高级专员 查尔斯·海伊(英语:Charles Hay (diplomat)) 马来西亚—英国关系(英語:Malaysia–United Kingdom relations;馬來語:Hubungan Malaysia–United Kingdom)是指马来西亚与英国�...

 

 

British comic book story Death SquadDeath Squad as shown in the 12 July 1980 edition of Battle, art by Eric Bradbury.PublisherIPC MagazinesPublication date12 July 1980 – 4 June 1981Genre War Title(s)Battle12 July 1980 to 4 June 1981Battle Annual1982Main character(s)'Grandad' Halbritter'Frankie' Franke'Swede' Norung'Licker' KoppleGus SchdmidtCreative teamWriter(s)Alan Hebden[a]Artist(s)Eric BradburyEditor(s)Terry Magee Death Squad is a British comic war story publi...

 

 

2016年美國總統選舉 ← 2012 2016年11月8日 2020 → 538個選舉人團席位獲勝需270票民意調查投票率55.7%[1][2] ▲ 0.8 %   获提名人 唐納·川普 希拉莉·克林頓 政党 共和黨 民主党 家鄉州 紐約州 紐約州 竞选搭档 迈克·彭斯 蒂姆·凱恩 选举人票 304[3][4][註 1] 227[5] 胜出州/省 30 + 緬-2 20 + DC 民選得票 62,984,828[6] 65,853,514[6]...

Radio station in Halfway, MarylandWDLDHalfway, MarylandBroadcast areaHagerstown, MarylandFrequency96.7 MHzBrandingLive 96-7ProgrammingFormatRhythmic Top 40OwnershipOwnerAlpha Media(Alpha Media Licensee LLC)Sister stationsWCHAWHAGWIKZWQCMHistoryFirst air date1965 (59 years ago) (1965)[1]Former call signsWHAG-FM (1965–1970)WQCM (1970)WHAG-FM (1970–1974)WQCM (1974–2002)[1]Call sign meaningSounds like Wild (former branding)Technical information[2]Licen...

 

 

Artikel ini bukan mengenai Super Dragon Ball Z atau Super Dragon Ball Heroes (anime). Dragon Ball SuperGambar visual kunci animeドラゴンボール超(スーパー)(Doragon Bōru Sūpā)GenrePetualangan, fantasi, bela diri[1][2] MangaPengarangAkira ToriyamaIlustratorToyotarouPenerbitShueishaPenerbit bahasa InggrisNA Viz MediaPenerbit bahasa IndonesiaElex Media KomputindoImprintJump ComicsMajalahV JumpDemografiShōnenTerbit20 Juni 2015 – sekarangVolume23 (Daftar volume)...

 

 

American sociologist (1910–1989) George Caspar HomansAssociate Professor of Sociology at Harvard in 1946Born(1910-08-11)August 11, 1910Boston, MassachusettsDiedMay 29, 1989(1989-05-29) (aged 78)Cambridge, MassachusettsCitizenshipUnited StatesAlma materHarvard University (1932), Cambridge University (1955) (Masters)Known forThe Human Group, Social Behavior: Its Elementary Forms, Exchange TheoryScientific careerFieldsSociology George Caspar Homans (August 11, 1910 – May 29, 1...

Kadipaten VenesiaDogado (vec)Domini di Republik Venesia697–1797Laguna Venesia, Mestre di daratan, Murano, Venesia, dan LidoSejarahEra sejarahAbad Pertengahan• Didirikan 697• Traktat Campo Formio 17 Oktober 1797 1797 Didahului oleh Digantikan oleh ksrKekaisaran Romawi Timur Monarki Habsburg Dogado atau Kadipaten Venesia adalah wilayah utama Republik Venesia yang dikepalai oleh seorang Doge. Wilayah ini terdiri dari kota Venesia dan wilayah pesisir kecil yang terbentang dari Lor...

 

 

Gea spinipes Klasifikasi ilmiah Kerajaan: Animalia Filum: Arthropoda Kelas: Arachnida Ordo: Araneae Famili: Araneidae Spesies: Gea spinipes Nama binomial Gea spinipesC L Koch, 1843 Gea spinipes adalah spesies laba-laba yang tergolong famili Araneidae. Spesies ini juga merupakan bagian dari ordo Araneae. Nama ilmiah dari spesies ini pertama kali diterbitkan pada tahun 1843 oleh C L Koch. Laba-laba ini biasanya banyak ditemui di India, Cina, Taiwan hingga Borneo. Referensi Platnick, Norman I. ...

 

 

Election 1902 Massachusetts gubernatorial election ← 1901 November 4, 1902 1903 →   Nominee John L. Bates William A. Gaston John C. Chase Party Republican Democratic Socialist Popular vote 196,276 159,156 33,629 Percentage 49.23% 39.92% 8.44% County resultsBates:      40–50%      50–60%      60–70%      70–80%Gaston:      50–60%...

Italian film director (1930–2019) Ugo GregorettiBorn(1930-09-28)28 September 1930Rome, ItalyDied5 July 2019(2019-07-05) (aged 88)Rome, ItalyOccupation(s)Film directorActorScreenwriterYears active1956–2019 Ugo Gregoretti (28 September 1930 – 5 July 2019)[1] was an Italian film, television and stage director, actor, screenwriter, author and television host. He directed 20 films during his career. Biography Born in Rome, Gregoretti entered RAI in 1953, working as a do...

 

 

Chemical compound MiboleroneClinical dataTrade namesCheque Drops, MatenonOther namesU-10997; CDB-904; Dimethylnandrolone; Dimethylnortestosterone;[1] DMNT; 7α,17α-Dimethyl-19-nortestosterone; 7α,17α-Dimethylestr-4-en-17β-ol-3-oneAHFS/Drugs.comInternational Drug NamesRoutes ofadministrationBy mouthDrug classAndrogen; Anabolic steroid; ProgestogenATC codeNoneLegal statusLegal status BR: Class C5 (Anabolic steroids)[2] CA: Schedule IV US: Schedule III Pharmaco...

 

 

International standard This article relies largely or entirely on a single source. Relevant discussion may be found on the talk page. Please help improve this article by introducing citations to additional sources.Find sources: ISO 12006 – news · newspapers · books · scholar · JSTOR (June 2020) ISO 12006 is within the discipline of architecture for building construction. ISO 12006 Building construction - Organization of information about construction w...

Rock music of Russia and Soviet Union This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article's tone or style may not reflect the encyclopedic tone used on Wikipedia. See Wikipedia's guide to writing better articles for suggestions. (February 2021) (Learn how and when to remove this message) This article contains weasel words: vague phrasing that often accompanies biased or unverifia...

 

 

Международный трибунал по РуандеInternational Criminal Tribunal for RwandaTribunal pénal international pour le Rwanda эмблема Трибунала Вид международный судебный орган Инстанция суд высшей инстанции Юрисдикция  Руанда Дата основания 8 ноября 1994 года Дата роспуска 31 декабря 2015 года Языки делопроизводст�...