Siirry sisältöön

Dart (ohjelmointikieli)

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

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]

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
}

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]

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]

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

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 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

[muokkaa | muokkaa wikitekstiä]

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]

  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. 1 2 3 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. 1 2 3 4 5 6 7 8 9 10 11 12 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. 1 2 Dart Programming Language Specification (PDF) (sivu 136-138) ecma-international.org. joulukuu 2015. Viitattu 12.7.2022. (englanniksi)
  10. 1 2 3 Dart overview dart.dev. Viitattu 12.7.2022. (englanniksi)
  11. 1 2 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

[muokkaa | muokkaa wikitekstiä]