Dart

Dart
Dart
Dartのロゴ
パラダイム マルチパラダイムプログラミング、オブジェクト指向プログラミング関数型プログラミング命令型プログラミングリフレクション ウィキデータを編集
登場時期 2011年10月10日 (13年前) (2011-10-10)
開発者 Google ウィキデータを編集
最新リリース 3.6.0 / 2024年12月11日[1]
型付け ver. 1.x:(動的または静的
ver. 2.x: 型推論強い静的型付け)
主な処理系 Dart VM、dart2native、dart2js、Flutter
影響を受けた言語 Strongtalk、JavaJavaScriptSmalltalkErlangC Sharp ウィキデータを編集
プラットフォーム クロスプラットフォーム ウィキデータを編集
ライセンス BSDライセンス ウィキデータを編集
ウェブサイト dart.dev ウィキデータを編集
拡張子 dart ウィキデータを編集
テンプレートを表示

Dart(ダートまたはダーツ。当初はDashと呼ばれていた)は、ウェブアプリやモバイルアプリのクライアント開発向けに設計されたプログラミング言語である[2][3]Googleによって開発された言語で、サーバーやデスクトップ向けアプリケーションの開発にも使用できる。

Dartはオブジェクト指向クラスベースガベージコレクションを備えた、Cスタイルの構文英語版を持つ言語である[4]。DartはネイティブコードまたはJavaScriptにコンパイルでき、インターフェイス英語版Mixin抽象クラスreification英語版ジェネリクス型推論をサポートしている[5]

2011年10月10日 - 12日に開催された デンマークのオーフスで開催された「GOTOカンファレンス」[6]で公開された[7]。この言語は、ウェブブラウザ組み込みのスクリプト言語であるJavaScriptの代替となることを目的に作られた。

歴史

Dart言語はJavaScript言語にある解決できない言語上の問題点を解決し[8]、なおかつ、より優れたパフォーマンスを発揮し、大規模なプロジェクト用途にも耐え得る特徴を備え、セキュリティ面でもより優れた言語[9]として、設計された。Googleの技術者は「Brightly」というクラウド統合開発環境を開発している。恐らくこれが最初のDart言語のアプリケーションだと思われる。GoogleはDart言語をサポートしないウェブブラウザのために、Dart言語で作られたプログラムをECMAScript 3に必要に応じて変換するクロスコンパイラを提供すると告知している。また、型付のClosureコードをDart言語に変換するツールも提供されることになっている[10]。GoogleはDartの仮想機械Chromeブラウザに統合するとしており、他のブラウザがこれに追従することを期待しているようであった。仮想機械とクロスコンパイラは2011年の末までには利用できる予定となっていた[9]

しかし普及は進まず、2015年には仮想機械のChrome統合を断念。また2017年には、DartはGoogleにおいて重要な言語であるとしながらも、競合するTypeScriptがGoogle社内の標準プログラミング言語として承認されたことが発表された[11]

2018年2月にはDart 2が発表された[12]。Dart 2.6より、ネイティブコードコンパイルできるdart2nativeが開発されたほか、強力な型システムなどの言語機能の強化が行われている。

2023年5月にはDart 3が発表された[13]。デフォルト状態においてnull値を不許容にする仕組み(Sound null safety)が導入された。

用途

Dartのコードを実行する方法は4つある。

Web
主要なウェブブラウザで実行できるようにするために、DartはJavaScriptへのsource-to-sourceコンパイラを利用している。プロジェクトのウェブサイトによると、Dartは「開発ツールが簡単に書け、モダンなアプリ開発によく適しており、高性能な実装が可能になるように設計された」言語である[14]。Dartのコードをウェブブラウザで実行する場合には、コードを事前にdart2jsコンパイラを使用してJavaScriptにコンパイルする。JavaScriptとしてコンパイルしたDartのコードは、主要なすべてのブラウザと互換性があり、Dartのサポートは必要としない。コンパイル後のJavaScriptの出力を負荷の高いチェックや操作を避けるように最適化することで、場合によってはJavaScriptのイディオムを使用した等価な手書きのコードより高速に実行できることもある[15]
スタンドアローン
Dart SDKにはスタンドアローンのDart VMが同梱されており、DartコードをCLI環境で実行できる。Dart SDKに含まれる言語ツールは大部分がDart自体で書かれているため、スタンドアローンのDart VMはSDKの重要な部分である。これらのツールには、dart2jsコンパイラやpubと呼ばれるパッケージマネージャーが含まれる。Dartは完全な標準ライブラリを同梱しているため、たとえばカスタムのウェブサーバーなどの完全に動作するシステムアプリを書くことができる[16]
Ahead-of-timeコンパイル
Dartのコードは機械語(ネイティブの命令セット)にAOT-コンパイル英語版することができる。Dartで構築されたモバイルアプリSDKのFlutterで構築されたアプリは、AOTコンパイルされたDartコードとしてアプリストアにデプロイされる[17]
ネイティブ
Dart 2.6では、dart2native コンパイラを使用すると、自己完結型のネイティブの実行コードにコンパイルできる。Dart2.6より前では、この機能はiOSAndroidのモバイルデバイス上でFlutter経由でのみ公開されていた[18]

isolate

並行性(concurrency)を実現するために、Dartではisolateと呼ばれる、メモリを共有せずにメッセージパッシングを使用する独立したワーカーを利用する[19]。これはErlangのprocessに似ている(詳しくはアクターモデルを参照)。すべてのDartプログラムは少なくとも1つのisolate、main isolateを使用している。Dart 2からは、Dartウェブプラットフォームはisolateをサポートしなくなり、開発者は代わりにWeb Workerを使用することが推奨されている[20]

スナップショット

スナップショットはDart VMのコアパーツである。スナップショットには、オブジェクトとその他のランタイムデータがファイルとして保存される[21]

スクリプトスナップショット
Dartプログラムはスナップショットファイルにコンパイルできる。これらのファイルには、あらかじめ解析されて実行準備がされているプログラムのコードと依存関係のすべてが含まれている。
フルスナップショット
Dartのコアライブラリはスナップショットにコンパイルできるため、ライブラリを高速に読み込める。メインのDart VMのほとんどの標準ディストリビューションにはコアライブラリのプリビルドされたスナップショットがあり、ランタイム時に読み込まれる。
オブジェクトスナップショット
Dartは非同期性の高い言語であり、並行性のためにisolateを利用している。これらのワーカーはメッセージを受け渡しするため、メッセージをシリアライズする方法が必要である。これは与えられたオブジェクトから生成されたスナップショットを使用して実現されており、その後、他のデシリアライズのために他のisolateに転送される。

ネイティブモバイルアプリ

GoogleはAndroidとiOSのネイティブモバイルアプリ開発のためにFlutterを発表した[22]。Flutterはモバイルアプリのフレームワーク、ウィジェット、ツールをすべて含んだSDKであり、開発者はDartで書かれたモバイルアプリのビルドとデプロイができる[23]。FlutterはFirebase[24]や、他のモバイルアプリSDKと連携でき、オープンソースである。

JavaScriptへのコンパイル

Dart SDKにはDartからJavaScriptへ変換するコンパイラが含まれる。開発中には、dartdevcが高速なリフレッシュサイクルをサポートする。最終バージョンのアプリでは、dart2jsがデプロイ可能なJavaScriptを生成する[25]

最初のコンパイラはDartコードからJavaScriptを生成するdartcだったが、廃止された。2番目のDartからJavaScriptへのコンパイラはFrogだった。FrogはDartで書かれていたが、言語の完全なセマンティクスは実装されなかった。3番目のDartからJavaScriptへのコンパイラはdart2jsだった。以前のコンパイラの進化形であるdart2jsはDartで記述されており、完全なDart言語仕様とセマンティクスを実装することを目的としている。

2013年3月28日、Dartチームは、dart2jsコンパイラを使用してJavaScriptにコンパイルされたDartコードに対応する更新をブログに投稿した[26]。DeltaBlueベンチマーク用のChromeのV8 JavaScriptエンジンで、手書きのJavaScriptよりも高速に実行されるようになったと述べている[27]

Hello worldプログラム[28]

main() {
  print('Hello World!');
}

フィボナッチ数を計算する関数の例

int fib(int n) {
  if (n <= 1) return n;
  return fib(n - 1) + fib(n - 2);
}
main() {
  print('fib(20) = ${fib(20)}');
}

単純なクラスの例

// sqrt関数を呼び出すためにmathライブラリをインポート
import 'dart:math' as math;

// Pointクラスを定義
class Point {

   // 2つのインスタンス変数を定義
  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);
  }

  // 演算子のオーバーローディングの例
  Point operator +(Point other) => Point(x + other.x, y + other.y);
}

// すべてのDart言語のプログラムは main()関数から始まる
void main() {
  // point オブジェクトの生成.
  var p1 = Point(10, 10);
  var p2 = Point.origin();
  var distance = p1.distanceTo(p2);
  print(distance);
}

関連項目

脚注

  1. ^ 出典URL: https://github.com/dart-lang/sdk/releases/tag/3.6.0, 題名: Release 3.6.0
  2. ^ Dart overview”. dart.dev. 2021年4月6日閲覧。
  3. ^ Dart programming language”. dart.dev. 2021年4月6日閲覧。 “A programming language optimized for building user interfaces with features such as the spread operator for expanding collections, and collection if for customizing UI for each platform”
  4. ^ A Tour of the Dart Language”. dart.dev. 2018年8月9日閲覧。
  5. ^ The Dart type system”. dart.dev. 2021年8月29日閲覧。
  6. ^ http://gotocon.com/aarhus-2011/
  7. ^ Presentation: "Opening Keynote: Dart, a new programming language for structured web programming" - GOTOカンファレンス オーフス 2011。10月10日に行われた、Dart言語の公式の公演。
  8. ^ "Future of Javascript" doc from our internal "JavaScript Summit" last week - グーグル社内に流れた電子メール
  9. ^ a b Google Operating System: Dash, Google's Alternative to JavaScript
  10. ^ Google Dart to “ultimately ... replace JavaScript”
  11. ^ TypeScriptが標準言語になっても、Dartのことは忘れてませんよとGoogle担当者がフォロー”. Publickey (2017年4月12日). 2017年4月15日閲覧。
  12. ^ Googleが「Dart 2」発表、Dartを再起動。iOS/Android用ライブラリ「Flutter」と共にWebとモバイルのクライアント開発にフォーカス”. Publickey (2018年3月5日). 2018年5月5日閲覧。
  13. ^ "Null"完全制御のプログラミング言語「Dart 3」がリリース”. マイナビ (2023年5月12日). 2024年5月11日閲覧。
  14. ^ “Why?”, Dart lang (FAQ), http://www.dartlang.org/support/faq.html#why-dart, "We designed Dart to be easy to write development tools for, well-suited to modern app development, and capable of high-performance implementations." 
  15. ^ JavaScript as a compilation target: Making it fast”. Dartlang.org. 2016年7月2日時点のオリジナルよりアーカイブ。2013年8月18日閲覧。
  16. ^ An Introduction to the dart:io Library”. Dartlang.org. 2013年7月21日閲覧。
  17. ^ Flutter FAQ”. flutter.io. 2016年10月2日閲覧。
  18. ^ Announcing Dart 2.6 with dart2native: Compile Dart to self-contained, native executables”. 2019年12月6日閲覧。
  19. ^ The Essence of Google Dart: Building Applications, Snapshots, Isolates” (英語). InfoQ. 2021年8月29日閲覧。
  20. ^ Moore, Kevin (February 23, 2018). “Dart2 Breaking Change: Removing web support for dart:mirrors and dart:isolate”. Google Groups. 2021年9月16日閲覧。
  21. ^ The Essence of Google Dart: Building Applications, Snapshots, Isolates” (英語). InfoQ. 2021年8月29日閲覧。
  22. ^ Flutter - Beautiful native apps in record time”. flutter.dev. 2021年9月19日閲覧。
  23. ^ FAQ” (英語). flutter.dev. 2021年8月29日閲覧。
  24. ^ Firebase” (英語). flutter.dev. 2021年8月29日閲覧。
  25. ^ Deployment”. angulardart.dev. 2021年9月19日閲覧。
  26. ^ Ladd, Seth (2013年3月28日). “Dart News & Updates: Why dart2js produces faster JavaScript code from Dart”. News.dartlang.org.. 2013年7月21日閲覧。
  27. ^ Dart Performance”. Dartlang.org.. 2017年1月3日時点のオリジナルよりアーカイブ。2013年7月21日閲覧。
  28. ^ Another Hello World example hosted in Github

外部リンク

ウィキメディア・コモンズには、Dartに関するメディアがあります。

Read other articles:

Austrian-born British nuclear physicist Otto Robert FrischOBE FRSOtto Robert Frisch's wartime Los Alamos ID badge photo.Born(1904-10-01)1 October 1904Vienna, Austria-HungaryDied22 September 1979(1979-09-22) (aged 74)Cambridge, United KingdomNationalityAustrianCitizenshipAustriaUnited KingdomKnown forAtomic bombAwardsFellow of the Royal Society[1]Scientific careerFieldsPhysics Signature Otto Robert Frisch OBE FRS[1] (1 October 1904 – 22 September 1979) was a...

 

Widya PurnamaLahirWidya Purnama(1954-07-26)26 Juli 1954 Parepare, Sulawesi Selatan, IndonesiaMeninggal18 Agustus 2015(2015-08-18) (umur 61) SingapuraKebangsaan IndonesiaAlmamaterInstitut Teknologi Sepuluh NopemberInstitut Teknologi BandungPekerjaanPengusahaTahun aktif1995—2015Dikenal atasDirektur Utama PT Pertamina (Persero)Direktur Utama PT Indosat Tbk.Suami/istriSri Hetty Indiyah Widya Purnama (26 Juli 1954 – 18 Agustus 2015) adalah tokoh BUMN di Indonesia. Widya...

 

ستيفن براند   معلومات شخصية الميلاد 26 يونيو 1969 (54 سنة)  دندي  مواطنة المملكة المتحدة  الحياة العملية المهنة ممثل،  وممثل أفلام،  وممثل تلفزيوني،  وممثل مسرحي،  ومخرج أفلام  اللغات الإنجليزية  مجال العمل دبلجة،  وكتاب سمعي،  وإخراج الأفلام  ا...

Солодиця Багатоніжка звичайна (Polypodium vulgare) Біологічна класифікація Царство: Рослини (Plantae) Клада: Судинні рослини (Tracheophyta) Відділ: Папоротеподібні (Polypodiophyta) Клас: Папоротевидні (Polypodiopsida) Порядок: Багатоніжкові (Polypodiales) Підпорядок: Polypodiineae Родина: Солодицеві (Polypodiaceae) Підродин

 

هذه مقالة غير مراجعة. ينبغي أن يزال هذا القالب بعد أن يراجعها محرر مغاير للذي أنشأها؛ إذا لزم الأمر فيجب أن توسم المقالة بقوالب الصيانة المناسبة. يمكن أيضاً تقديم طلب لمراجعة المقالة في الصفحة المخصصة لذلك. (يناير 2022) هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فض...

 

Хрвоє Веїч Особисті дані Народження 9 червня 1977(1977-06-09) (46 років)   Меткович,  Югославія Зріст 191 см Вага 82 кг Громадянство  Хорватія Позиція захисник Професіональні клуби* Роки Клуб І (г) 1997–2001 «Загреб» 126 (0) 2001–2005 «Хайдук» (Спліт) 115 (0) 2005–2009 «Том» 81 (6) 2009–2012 «Х...

2002 studio album by TribalistasTribalistasStudio album by TribalistasReleasedOctober 28, 2002RecordedApril 2002GenreAlternative rock, avant-garde, experimental rock, pop rock, Música popular brasileiraLength38:08LabelEMI (Brazil)Metro Blue/Capitol (US)ProducerMarisa Monte, Arnaldo Antunes (co-prod.), Carlinhos Brown (co-prod.), Alê Siqueira (co-prod.)Tribalistas chronology Tribalistas(2002) Tribalistas(2017) Professional ratingsReview scoresSourceRatingAllmusic[1] Tribalist...

 

Honor presented to recording artists for quality alternative music albums Grammy Award for Best Alternative Music AlbumAwarded forQuality albums in the alternative genreCountryUnited StatesPresented byNational Academy of Recording Arts and SciencesFirst awarded1991Currently held byWet Leg — Wet Leg (2023)Websitegrammy.com The Grammy Award for Best Alternative Music Album is an award presented to recording artists for quality albums in the alternative genre at the Grammy Awards, a ceremony t...

 

US dark comedy TV series The ConsultantGenre Thriller Created byTony BasgallopBased onThe Consultantby Bentley LittleDirected by Matt Shakman Dan Attias Charlotte Brändström Alexis Ostrander Karyn Kusama Starring Christoph Waltz Nat Wolff Brittany O'Grady Aimee Carrero ComposerJeff RussoCountry of originUnited StatesOriginal languageEnglishNo. of seasons1No. of episodes8ProductionExecutive producers Tony Basgallop Matt Shakman Christoph Waltz Steve Stark Andrew Mittman ProducerKai Dolbashia...

vteC&GWU Line and stations, 1840 to today Legend mile-chain GWR to Birmingham MR to Birmingham 7-03 Cheltenham St James 6-40 Cheltenham Malvern Road Cheltenham Lansdown to Banbury 3-04 Churchdown 0-00116-09 Gloucester (excludes ex-MR lines) Standish Junction MR to Bristol 104-75 Stonehouse 103-52 Ebley Crossing Halt 103-23 Cashes Green Halt 102-69 Downfield Crossing Halt 102-13 Stroud 101-37 Bowbridge Crossing Halt 100-60 Ham Mill Halt 99-74 Brimscombe Bridge Halt 99-24 Brimscom...

 

American journalist Larry BenskyBensky in 2005Born (1937-05-01) May 1, 1937 (age 86)OccupationJournalist Larry Bensky (born May 1, 1937) is a literary and political journalist with experience in both print and broadcast media, as well as a teacher and political activist. He is known for his work with Pacifica Radio station KPFA-FM in Berkeley, California, and for the nationally-broadcast hearings he anchored for the Pacifica network. A native of New York City, Bensky graduated from Stuyv...

 

26°20′55″N 43°46′01″E / 26.348727°N 43.766921°E / 26.348727; 43.766921 جامعة القصيم شعار جامعة القصيم معلومات التأسيس 2004 (منذ 19 سنة) الانتماءات اتحاد الجامعات العربية النوع جامعة حكومية الكليات 38 الموقع الجغرافي إحداثيات 26°20′55″N 43°46′01″E / 26.348727°N 43.766921°E / 26.348727; 43.766921  ا...

Meeting of St Nilus and Otto III (fresco by Domenichino), between 1608 and 1610. Nilus interceded with Otto to save John XVI, who had been mutilated, defrocked and led through Rome sitting backwards on a donkey.[1] Otto III, Holy Roman Emperor, also called miribilia mundi, despite his short life (he died in 1002, at age 22), is a historical figure who attracts considerable scholarly attention as well as inspires numerous artistic and popular depictions.[2] An intellectual empe...

 

Water kobold that assists fishermen and sailors 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: Klabautermann – news · newspapers · books · scholar · JSTOR (October 2016) A Klabautermann on a ship, from Buch Zur See, 1885. A Klabautermann is a water kobold that assists sailors and fishermen on the ...

 

1933 film by Marion Gering Pick-UpSylvia Sidney and George RaftDirected byMarion GeringWritten byViña DelmarBased onmagazine serial by Vina DelmarProduced byB. P. SchulbergStarringSylvia SidneyGeorge RaftCinematographyDavid AbelMusic byW. Franke HarlingDistributed byParamount PicturesRelease date March 24, 1933 (1933-03-24) Running time76 minutesCountryUnited StatesLanguageEnglish Pick-Up is a 1933 American pre-Code crime film directed by Marion Gering and starring Sylvia Sidn...

  هذه المقالة عن جهود الحوار اليمني (2007-2011). لمعانٍ أخرى، طالع الحوار اليمني (توضيح). شعار مؤتمر الحوار الوطني الشامل (2013) جهود الحوار اليمني (2007-2011) هي عدة لقاءات واجتماعات واتفاقيات خاضتها أحزاب اللقاء المشترك مع الرئيس علي عبد الله صالح و حزبه المؤتمر في الفترة (2007 - 2011) ...

 

В Википедии есть статьи о других людях с такой фамилией, см. Разумовский; Разумовский, Лев. Лев Кириллович Разумовский Дата рождения 8 января 1757(1757-01-08) Место рождения Петербург Дата смерти 21 ноября 1818(1818-11-21) (61 год) Место смерти Москва, Российская империя Страна  Рос...

 

American country singer (born 1962) This article is about the performer. For his eponymous album, see Garth Brooks (album). Garth BrooksBrooks at the Kennedy Center Honors in December 2022BornTroyal Garth Brooks (1962-02-07) February 7, 1962 (age 61)Tulsa, Oklahoma, U.S.[1]Alma materOklahoma State UniversityOccupations Singer songwriter Spouses Sandy Mahl ​ ​(m. 1986; div. 2001)​ Trisha Yearwood ​(m. 2005)...

41.2% of California's population White CaliforniansTotal population22.05 million (41.2%) white alone (2020 census[1])LanguagesCalifornia English, European languages, Arabic, Persian, Armenian, othersReligionChristianity, Judaism, Irreligion, Islam[2] White Californians are White Americans living in California who currently comprise 41.2% of the state's population according to the official 2020 census.[3] As of 2015, California has the third-largest minority population ...

 

Líbano en los Juegos Olímpicos Bandera de LíbanoCódigo COI LBNCON Comité Olímpico Libanés(pág. web)Juegos Olímpicos de Pekín 2022Deportistas 3 en 2 deportesAbanderado Cesar ArnukManon UaisMedallas 0 0 0 0 Historia olímpicaJuegos de verano 1948 • 1952 • 1956 • 1960 • 1964 • 1968 • 1972 • 1976 • 1980 • 1984 • 1988 • 1992 • 1996 • 2000...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!