Dart er eit generelt programmeringsspråk utvikla av Google, designa for å byggje web-, server-, skrivebords- og mobilapplikasjonar. Dart legg vekt på ein strukturert programmeringsmetode, og tilbyr funksjonar som støttar både just-in-time (JIT) og ahead-of-time (AOT) kompilering, noko som gjer det effektivt for både utviklings- og produksjonsmiljø. Den moderne syntaksen og samtidigheitsfunksjonane, som asynkron programmering med Futures og Streams, har gjort det spesielt populært for å utvikle brukargrensesnitt med Flutter-rammeverket, som gjer det mogleg for utviklarar å byggje nativt kompilert applikasjonar.
Dart blei opprinneleg avduka i 2011 som eit språk som hadde som mål å forbetre JavaScript, spesielt for webapplikasjonar. Språket blei designa for å ta tak i problem som var vanlege i JavaScript, som dynamisk typing og ytelsen i storskala applikasjonar. Dart sin syntaks liknar på språk som Java og C#, noko som gjer det relativt enkelt for utviklarar som er kjent med desse språka å ta det i bruk.
Dart sin design blei påverka av ulike programmeringsspråk, inkludert Java, JavaScript, C# og Swift. Det har sterke band til Flutter-rammeverket, som er ein av dei mest betydningsfulle utviklingane i Dart sitt økosystem. Innføringa av Flutter i 2017 som eit tverrplattform mobil UI-verktøy auka populariteten til Dart, noko som førte til ein auke i bruken av det for utvikling av mobilapplikasjonar.
Frå og med 2023 fortset Dart å utvikle seg med regelmessige oppdateringar. Det har fått fotfeste ikkje berre for mobilapplikasjonar gjennom Flutter, men også for webutvikling med rammeverk som AngularDart. Fellesskapet rundt Dart har også vokse, støtta av Google og ulike tredjepartsressursar, opplæringsprogram og bibliotek.
Dart støttar sterk typing, som betyr at variabeltypar blir sjekka ved kompilering, men det tilbyr også typeinferens, som gjer at kompilatoren kan utlede typar.
var name = "Dart"; // type utleidd som String
String greeting = "Hello, $name";
Dart har innebygd støtte for asynkron programmering gjennom async
og await
, som gjer det enkelt for utviklarar å skrive ikkje-blokkerande kode.
Future<String> fetchData() async {
return await Future.delayed(Duration(seconds: 2), () => 'Data fetched');
}
Dart introduserte solid null sikkerheit, som hjelper til med å forhindre null referansefeil ved å skilje mellom nullable og non-nullable typar.
String? nullableName; // kan vere null
String nonNullableName = "Non-Nullable"; // kan ikkje vere null
Dart tillèt bruk av mixins, som gjer at klassar kan arve implementering frå fleire kjelder.
mixin CanRun {
void run() {
print('Running');
}
}
class Animal with CanRun {}
Utvidingsmetodar gjer det mogleg for utviklarar å legge til ny funksjonalitet til eksisterande bibliotek eller klassar utan å endre dei.
extension StringExtensions on String {
bool get isEmptyOrNull => this == null || this.isEmpty;
}
Dart tillèt fabrikkkonstruktørar som kan returnere ein instans av ein klasse eller ein subtype, noko som gir fleksibilitet i objektopprettingsprosessen.
class Point {
final num x, y;
Point(this.x, this.y);
factory Point.origin() {
return Point(0, 0);
}
}
Dart støttar enumeraasjonar, som gjer det mogleg for utviklarar å definere eit avgrensa sett av konstante verdiar.
enum Color { red, green, blue }
Dart tillèt definisjon av statiske metodar og eigenskapar i klassar, som kan bli tilgjengelege utan å opprette ein instans av klassen.
class MathUtils {
static int add(int a, int b) => a + b;
}
Generiske typar gjer det mogleg å opprette klassar, metodar og grensesnitt som fungerer med kva som helst datatype.
class Box<T> {
T value;
Box(this.value);
}
Dart støttar både posisjonelle og namngitte valfrie parameter, noko som gjer funksjonssignaturar meir fleksible.
void greet(String name, [String title = 'Mr.']) {
print('Hello, $title $name');
}
Dart nyttar hovudsakleg Dart SDK og kan utviklast ved hjelp av ulike IDEar. Populære IDEar for Dart inkluderer:
Dart SDK inkluderer eit kommandolinjeverktøy, dart
, som kan brukast til å opprette, køyre og bygge Dart-applikasjonar. Eit typisk prosjekt kan bli initialisert ved å bruke:
dart create my_project
For å køyre Dart-applikasjonar kan følgjande kommando brukast:
dart run
Dart blir vanlegvis brukt til:
Dart er statisk typa og har ein meir strukturert syntaks samanlikna med den dynamiske og prototype-baserte naturen til JavaScript. Dart sin typesikkerheit kan hjelpe i storskala applikasjonar, medan JavaScript sin fleksibilitet tilbyr rask prototyping.
Dart og C# deler liknande syntaktiske element, men Dart sitt økosystem er hovudsakleg fokusert på front-end utvikling med Flutter, medan C# er mykje brukt i enterprise-applikasjonar og backend-tjenester med rammeverk som ASP.NET.
Begge språka har liknande syntaks og objektorienterte prinsipp. Men Dart sitt fokus på moderne utviklingsparadigmer, spesielt asynkron programmering og UI-sentrerte rammeverk som Flutter, gir det ein fordel i mobil- og webapplikasjonar samanlikna med Java.
Sjølv om Python er svært populært for datavitenskap og generelt programmering, har Dart eit nisjefokus på mobil- og webutvikling. Dart sine ytelsesfordelar, på grunn av AOT-kompilering, kan føre til raskare utføring samanlikna med Python sin tolka natur.
Både Dart og Go er designa for fleksibel og effektiv programmering. Men Dart skil seg ut i UI-utvikling med Flutter, medan Go er føretrekt for backend-system og mikrotenester på grunn av sitt samtidigheitsmodell og enkelheit.
For å oversetje Dart-kode til andre språk, vurder eksisterande verktøy som dart2js for å konvertere Dart til JavaScript eller Dart's Fiddle for å teste kodebitar som også kan foreslå oversettingar. For å oversetje til språk som Java eller C#, sjå etter språkstrukturar som samsvarar nært med Dart sine funksjonar, spesielt i objektorienterte strukturar, asynkrone operasjonar og samlingar.
Verktøy som DartPad gjer det også enklare å teste og forstå delar av Dart-kode, som deretter kan bli samanlikna og kartlagt til funksjonaliteten i andre programmeringsspråk. Sjølv om det ikkje finst ein universell kilde-til-kilde oversetjar for Dart, kan spesifikke bibliotek og rammeverk hjelpe til med å tilpasse Dart-kode for å køyre i ulike miljø eller plattformer, som å konvertere det til Node.js eller integrere med eksisterande C#-system.