Dart er et generelt programmeringssprog udviklet af Google, designet til at bygge web-, server-, desktop- og mobilapplikationer. Dart lægger vægt på en struktureret programmeringsmetode og tilbyder funktioner, der understøtter både just-in-time (JIT) og ahead-of-time (AOT) kompilering, hvilket gør det effektivt til både udviklings- og produktionsmiljøer. Dets moderne syntaks og samtidighedsfunktioner, såsom asynkron programmering med Futures og Streams, har gjort det særligt populært til udvikling af brugergrænseflader med Flutter-rammen, som gør det muligt for udviklere at bygge natively compiled applikationer.
Dart blev oprindeligt præsenteret i 2011 som et sprog, der havde til formål at forbedre JavaScript, især til webapplikationer. Sproget blev designet til at tackle problemer, der er almindelige i JavaScript, såsom dets dynamiske typning og dets ydeevne i store applikationer. Darts syntaks ligner den, der findes i sprog som Java og C#, hvilket gør det relativt nemt for udviklere, der er fortrolige med disse sprog, at tage det i brug.
Darts design blev påvirket af forskellige programmeringssprog, herunder Java, JavaScript, C# og Swift. Det har stærke bånd til Flutter-rammen, som er en af de mest betydningsfulde udviklinger i Darts økosystem. Introduktionen af Flutter i 2017 som et tværplatforms mobil UI-værktøj øgede Darts popularitet, hvilket førte til en stigning i dets anvendelse til udvikling af mobilapplikationer.
I 2023 fortsætter Dart med at udvikle sig med regelmæssige opdateringer. Det har fået fodfæste ikke kun til mobilapplikationer gennem Flutter, men også til webudvikling med rammer som AngularDart. Fællesskabet omkring Dart er også vokset, støttet af Google og forskellige tredjepartsressourcer, tutorials og biblioteker.
Dart understøtter stærk typning, hvilket betyder, at variabeltyper kontrolleres ved kompileringstidspunktet, men det tilbyder også type inference, der gør det muligt for compileren at udlede typer.
var name = "Dart"; // type udledt som String
String greeting = "Hej, $name";
Dart har indbygget støtte til asynkron programmering gennem async
og await
, hvilket gør det nemt for udviklere at skrive ikke-blokerende kode.
Future<String> fetchData() async {
return await Future.delayed(Duration(seconds: 2), () => 'Data hentet');
}
Dart introducerede solid null sikkerhed, som hjælper med at forhindre null reference-fejl ved at skelne mellem nullable og non-nullable typer.
String? nullableName; // kan være null
String nonNullableName = "Non-Nullable"; // kan ikke være null
Dart tillader brug af mixins, som gør det muligt for klasser at arve implementering fra flere kilder.
mixin CanRun {
void run() {
print('Løber');
}
}
class Animal with CanRun {}
Extension metoder gør det muligt for udviklere at tilføje ny funktionalitet til eksisterende biblioteker eller klasser uden at ændre dem.
extension StringExtensions on String {
bool get isEmptyOrNull => this == null || this.isEmpty;
}
Dart tillader fabriks konstruktører, der kan returnere en instans af en klasse eller en subtype, hvilket giver fleksibilitet i objektoprettelsesprocessen.
class Point {
final num x, y;
Point(this.x, this.y);
factory Point.origin() {
return Point(0, 0);
}
}
Dart understøtter enumerationer, hvilket gør det muligt for udviklere at definere et begrænset sæt af konstante værdier.
enum Color { red, green, blue }
Dart tillader definition af statiske metoder og egenskaber i klasser, som kan tilgås uden at oprette en instans af klassen.
class MathUtils {
static int add(int a, int b) => a + b;
}
Generics muliggør oprettelse af klasser, metoder og interfaces, der arbejder med enhver datatype.
class Box<T> {
T value;
Box(this.value);
}
Dart understøtter både positions- og navngivne valgfri parametre, hvilket gør funktionssignaturer mere fleksible.
void greet(String name, [String title = 'Mr.']) {
print('Hej, $title $name');
}
Dart bruger primært Dart SDK og kan udvikles ved hjælp af forskellige IDE'er. Populære IDE'er til Dart inkluderer:
Dart SDK inkluderer et kommandolinjeværktøj, dart
, som kan bruges til at oprette, køre og bygge Dart-applikationer. Et typisk projekt kan initialiseres ved hjælp af:
dart create my_project
For at køre Dart-applikationer kan følgende kommando bruges:
dart run
Dart bruges almindeligvis til:
Dart er statisk typet og har en mere struktureret syntaks sammenlignet med den dynamiske og prototype-baserede natur af JavaScript. Darts typesikkerhed kan hjælpe i store applikationer, mens JavaScripts fleksibilitet tilbyder hurtig prototyping.
Dart og C# deler lignende syntaktiske elementer, men Darts økosystem er hovedsageligt fokuseret på front-end udvikling med Flutter, mens C# er bredt anvendt i enterprise-applikationer og backend-tjenester med rammer som ASP.NET.
Begge sprog har lignende syntaks og objektorienterede principper. Dog giver Darts fokus på moderne udviklingsparadigmer, især asynkron programmering og UI-centrerede rammer som Flutter, det en fordel i mobil- og webapplikationer sammenlignet med Java.
Mens Python er meget populært til datavidenskab og generel programmering, har Dart et nichefokus på mobil- og webudvikling. Darts ydeevnefordele, på grund af AOT-kompilering, kan føre til hurtigere udførelse sammenlignet med Pythons fortolkede natur.
Både Dart og Go er designet til fleksibel og effektiv programmering. Dog skiller Dart sig ud i UI-udvikling med Flutter, mens Go foretrækkes til backend-systemer og mikroservices på grund af sin samtidighedsmodel og enkelhed.
For at oversætte Dart-kode til andre sprog, overvej eksisterende værktøjer som dart2js til at konvertere Dart til JavaScript eller Dart's Fiddle til at teste snippets, der også kan foreslå oversættelser. For at oversætte til sprog som Java eller C#, se efter sprogkonstruktioner, der matcher Darts funktioner tæt, især i objektorienterede strukturer, asynkrone operationer og samlinger.
Værktøjer som DartPad letter også testning og forståelse af stykker af Dart-kode, som derefter kan sammenlignes og kortlægges til funktionaliteter i andre programmeringssprog. Selvom der ikke findes en universel kilde-til-kilde oversætter for Dart, kan specifikke biblioteker og rammer hjælpe med at tilpasse Dart-kode til at køre i forskellige miljøer eller platforme, såsom at konvertere det til Node.js eller integrere med eksisterende C#-systemer.