Dart (ohjelmointikieli)

Dart
Kehittäjä Google
Käyttöjärjestelmä alustariippumaton
Verkkosivu dart.dev
Infobox OK

Dart on Googlen kehittämä ohjelmointikieli, joka on suunniteltu web-sovellusten tekemiseen.[1] Se julkistettiin 10. lokakuuta 2011 käydyssä GOTO-konferenssissa Aarhusissa.[2]

Dart on vaihtoehto JavaScriptille.[3] Dartin suunnittelutavoitteina olivat:[4]

  • rakenteellinen mutta joustava kieli web-kehitykseen
  • tuttu ja luonnollinen opeteltava ohjelmoijille
  • korkea suorituskyky

Kieli suunniteltiin valinnaiselle tyyppijärjestelmälle, jolloin pienissä projekteissa ei tarvitse käyttää tyypitystä, mutta tyypitys on saatavilla suurien projektien tarpeisiin.[5][4] Kieli suunniteltiin suoritettavaksi joko suoraan virtuaalikoneessa tai käännettynä JavaScriptiksi, jolloin sitä voidaan suorittaa verkkoselaimissa.[4]

Dart-kielestä on julkaistu standardi ECMA-408.[6]

Esimerkki

main() {
  print('Hello, Dart!');
}

Muuttujat voidaan määritellä kertomatta tyyppiä, jolloin sen tyyppi päätellään sille annetusta arvosta:[7]

void printInteger(int aNumber) {
  print('The number is $aNumber.'); // tulosta arvo
}

// ohjelman suoritus alkaa main()-funktiosta
void main() {
  var number = 42; // määrittele ja alusta muuttuja
  printInteger(number); // kutsu funktiota
}

Ominaisuudet

Dart tukee olio-ohjelmointia ja tukee luokkia sekä yksinkertaista perintää. Dart on valinnaisesti tyypitetty ja tukee geneeristä ohjelmointia.[8]

Dart tukee staattista tyypitystä (tyyppimerkinnät muuttujien määrittelyissä ja funktioiden paluutyypeissä) ja rajoissa.[9] Staattiset tyypit tarkistetaan kun ohjelmaa suoritetaan "tarkistetussa" moodissa eikä niillä ole vaikutusta "tuotantomoodissa": staattiset tyypit ovat käytössä vain ja ainoastaan (jos ja vain jos) suoritetaan tarkistetussa moodissa.[9] Dart voi päätellä tyypin ja voi käyttää dynaamista tyypitystä ajonaikaiseen tarkistukseen.[10]

Dart tukee poikkeuksien heittämistä ja käsittelyä.[7]

Alustusarvot

Muuttujat, joiden arvo voi olla null (nullable) ovat oletuksena null. Muun tyyppiset muuttujat (non-nullable) on asettava nollaksi.[7][11] Muuttujille, joiden arvo voi olla null tyypin yhteydessä käytetään kysymysmerkkiä:[11]

int? aNullableInt = null;

late-määrityksellä alustamattoman muuttujan käyttö antaa virheen kun sitä käytetään ensimmäisen kerran.[7] late käytetään "laiskaan alustukseen" ja kertomaan ei-null tyyppiselle muuttujalle että sen arvo alustetaan esittelyn jälkeen.[7]

late String description;

void main() {
  description = 'Feijoada!';
  print(description);
}

Dartissa on null arvojen kanssa käyttöön erityiset sijoitus- ja vertailuoperaattorit ?? ja ??=.[12]

Kysymysmerkkiä (?) ja huutomerkkiä (!) käytetään nullable-tyyppien käsittelyyn erityistarkoituksella.[13]

Vakiot

Muuttujat, joiden arvo ei muutu alustamisen jälkeen (arvo pysyy vakiona) voidaan määrittää final ja const -määrityksillä: const on käännöaikainen vakio ja final voidaan asettaa vain kerran (const on implisiittisesti myös final).[7]

const bar = 1000000; // tyyppi päätelty automaattisesti
const double atm = 1.01325 * bar; // vakio ja määritelty tyyppi

Funktiot

Funktioille on käytettävissä "oikotie" kun sen sisältö on vain yksi lauseke:[7]

bool isNoble(int atomicNumber) {
  return _nobleGases[atomicNumber] != null;
}

// voidaan kirjoittaa muodossa:
bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;

Parametrit

Parametrit voivat olla sijainninmukaisia tai nimettyjä.[7] Parametrit voivat olla valinnaisia jos niitä ei ole määritelty vaadituiksi.[7]

void enableFlags({bool? bold, bool? hidden}) {...}

Funktiokutsussa argumentit asetetaan nimen avulla:[7]

enableFlags(bold: true, hidden: false);

Parametrit voidaan asettaa vaadituiksi required avainsanalla, jolloin puuttuva parametri aiheuttaa virheen.[7] Parametreille voi määritellä oletusarvoja.[7]

Käyttökohteet

Muun muassa Googlen Flutter käyttöliittymäkirjasto käyttää Dartia.[14][15] Dartista tulevat sekä kieli että ajonaikainen ympäristö Flutterille.[10] Dart tukee ajonaikaista kääntämistä (JIT) ja etukäteen kääntämistä (engl. ahead of time, AOT).[10]

Lähteet

  1. Nettiin esiteltiin uusi ohjelmointikieli: Google Dart tietokone.fi. Arkistoitu 14.11.2011. Viitattu 22.11.2011.
  2. Google Confirms Hints Dropped About Dart 'Structured' VM readwriteweb.com. Arkistoitu 12.11.2011. Viitattu 22.11.2011. (englanniksi)
  3. Google Introduces JavaScript Alternative Called DART tomshardware.com. Viitattu 22.11.2011. (englanniksi)
  4. a b c Lars Bak: Dart: a language for structured web programming googlecode.blogspot.com. 10.10.2011. Viitattu 11.7.2022. (englanniksi)
  5. Shawn Knight: Google releases Dart programming language, takes aim at JavaScript techspot.com. 10.10.2011. Viitattu 11.7.2022. (englanniksi)
  6. ECMA-408 ecma-international.org. Viitattu 12.7.2022. (englanniksi)
  7. a b c d e f g h i j k l A tour of the Dart language dart.dev. Viitattu 18.7.2022. (englanniksi)
  8. Dart Programming Language Specification (PDF) (sivu 8) ecma-international.org. joulukuu 2015. Viitattu 12.7.2022. (englanniksi)
  9. a b Dart Programming Language Specification (PDF) (sivu 136-138) ecma-international.org. joulukuu 2015. Viitattu 12.7.2022. (englanniksi)
  10. a b c Dart overview dart.dev. Viitattu 12.7.2022. (englanniksi)
  11. a b Sound null safety dart.dev. Viitattu 18.7.2022. (englanniksi)
  12. Dart cheatsheet codelab dart.dev. Viitattu 10.8.2022. (englanniksi)
  13. Bob Nystrom: Understanding null safety dart.dev. heinäkuu 2020. Viitattu 12.8.2022. (englanniksi)
  14. https://flutter.dev
  15. Flutter architectural overview docs.flutter.dev. Viitattu 18.7.2022. (englanniksi)

Aiheesta muualla

  • Virallinen sivusto
  • n
  • k
  • m
Yleisimmät ohjelmointikielet
Tuotantokäytössä
Akateemiset
Historialliset
  • n
  • k
  • m
Tuotteet
Laitteisto
Kehitys
Ohjelmointikielet
  • Carbon
  • Dart
  • Go
Viihde
Viestintä
Hakukone
Navigointi
Liiketoiminta
ja rahoitus
Organisointi
ja tuottavuus
Koulutus
Muut
Yritys
Osastot
Tapahtumat
  • Android
    • Developer Challenge
    • Developer Day
    • Developer Lab
  • Code-in
  • Code Jam
  • Developer Live
  • Doodle4Google
  • I/O
  • Jigsaw
  • Lunar X Prize
  • Science Fair
  • Summer of Code
  • Talks at Google
  • YouTube
    • Awards
    • Comedy Week
    • Live
    • Music Awards
    • Space Lab
    • Symphony Orchestra
Henkilöstö
  • Luokka
Tämä tietotekniikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.