Dart, Google tarafından geliştirilen genel amaçlı bir programlama dilidir ve web, sunucu, masaüstü ve mobil uygulamalar oluşturmak için tasarlanmıştır. Dart, yapılandırılmış bir programlama yaklaşımını vurgular ve hem anlık (JIT) hem de önceden derleme (AOT) derlemesini destekleyen özellikler sunarak, hem geliştirme hem de üretim ortamları için verimli hale getirir. Modern sözdizimi ve Futures ve Streams ile asenkron programlama gibi eşzamanlılık özellikleri, geliştiricilerin yerel olarak derlenmiş uygulamalar oluşturmasına olanak tanıyan Flutter çerçevesi ile kullanıcı arayüzleri geliştirmede özellikle popüler hale gelmiştir.
Dart, 2011 yılında JavaScript'i özellikle web uygulamaları için geliştirmeyi amaçlayan bir dil olarak tanıtıldı. Dil, JavaScript'te yaygın olan dinamik tipleme ve büyük ölçekli uygulamalardaki performans gibi sorunları ele almak için tasarlandı. Dart'ın sözdizimi, Java ve C# gibi dillere benzemekte olup, bu dillere aşina olan geliştiricilerin benimsemesini görecek kadar kolaydır.
Dart'ın tasarımı, Java, JavaScript, C# ve Swift gibi çeşitli programlama dillerinden etkilenmiştir. Dart ekosistemindeki en önemli gelişmelerden biri olan Flutter çerçevesi ile güçlü bağları vardır. 2017 yılında çapraz platform mobil UI araç takımı olarak Flutter'ın tanıtılması, Dart'ın popülaritesini artırmış ve mobil uygulama geliştirme için benimsenmesinde bir artışa yol açmıştır.
2023 itibarıyla Dart, düzenli güncellemelerle evrimini sürdürmektedir. Sadece Flutter aracılığıyla mobil uygulamalar için değil, AngularDart gibi çerçevelerle web geliştirme için de ilgi görmüştür. Dart etrafındaki topluluk da büyümüş, Google ve çeşitli üçüncü taraf kaynaklar, eğitimler ve kütüphanelerle desteklenmiştir.
Dart, değişken türlerinin derleme zamanında kontrol edildiği güçlü tiplemeyi destekler, ancak aynı zamanda tip çıkarımını da sunar, bu da derleyicinin türleri çıkarmasına olanak tanır.
var name = "Dart"; // tip String olarak çıkarıldı
String greeting = "Merhaba, $name";
Dart, geliştiricilerin engelleyici olmayan kod yazmasını kolaylaştıran async
ve await
ile asenkron programlama için yerleşik destek sunar.
Future<String> fetchData() async {
return await Future.delayed(Duration(seconds: 2), () => 'Veri alındı');
}
Dart, nullable ve non-nullable türler arasında ayrım yaparak null referans hatalarını önlemeye yardımcı olan sağlam bir null güvenliği tanıttı.
String? nullableName; // null olabilir
String nonNullableName = "Null Olmayan"; // null olamaz
Dart, sınıfların birden fazla kaynaktan uygulama miras almasına olanak tanıyan mixin'lerin kullanılmasına izin verir.
mixin CanRun {
void run() {
print('Koşuyor');
}
}
class Animal with CanRun {}
Extension metotları, geliştiricilerin mevcut kütüphanelere veya sınıflara yeni işlevsellik eklemesine olanak tanır.
extension StringExtensions on String {
bool get isEmptyOrNull => this == null || this.isEmpty;
}
Dart, bir sınıfın veya bir alt türün örneğini döndürebilen fabrika yapıcılarına izin verir, bu da nesne oluşturma sürecinde esneklik sağlar.
class Point {
final num x, y;
Point(this.x, this.y);
factory Point.origin() {
return Point(0, 0);
}
}
Dart, geliştiricilerin sonlu bir sabit değer kümesi tanımlamasına olanak tanıyan enumerasyonları destekler.
enum Color { kırmızı, yeşil, mavi }
Dart, sınıflarda statik metotlar ve özellikler tanımlamaya izin verir; bunlar, sınıfın bir örneğini oluşturmadan erişilebilir.
class MathUtils {
static int add(int a, int b) => a + b;
}
Generics, her türlü veri tipiyle çalışan sınıflar, metotlar ve arayüzler oluşturulmasına olanak tanır.
class Box<T> {
T value;
Box(this.value);
}
Dart, fonksiyon imzalarını daha esnek hale getiren hem konumsal hem de adlandırılmış opsiyonel parametreleri destekler.
void greet(String name, [String title = 'Bay.']) {
print('Merhaba, $title $name');
}
Dart, esasen Dart SDK'sını kullanır ve çeşitli IDE'lerde geliştirilebilir. Dart için popüler IDE'ler şunlardır:
Dart SDK, Dart uygulamalarını oluşturmak, çalıştırmak ve derlemek için kullanılabilecek bir komut satırı aracı olan dart
'ı içerir. Tipik bir proje şu şekilde başlatılabilir:
dart create my_project
Dart uygulamalarını çalıştırmak için şu komut kullanılabilir:
dart run
Dart, genellikle aşağıdaki alanlarda kullanılır:
Dart, statik olarak tiplenmiş bir dildir ve JavaScript'in dinamik ve prototip tabanlı doğasına kıyasla daha yapılandırılmış bir sözdizimine sahiptir. Dart'ın tip güvenliği, büyük ölçekli uygulamalarda yardımcı olabilirken, JavaScript'in esnekliği hızlı prototipleme sunar.
Dart ve C# benzer sözdizimsel unsurlara sahiptir, ancak Dart'ın ekosistemi esasen Flutter ile ön uç geliştirmeye odaklanırken, C# kurumsal uygulamalar ve ASP.NET gibi çerçevelerle arka uç hizmetlerinde yaygın olarak kullanılmaktadır.
Her iki dil de benzer sözdizimi ve nesne yönelimli prensiplere sahiptir. Ancak, Dart'ın modern geliştirme paradigmalarına, özellikle asenkron programlama ve Flutter gibi UI merkezli çerçevelere odaklanması, onu Java'ya kıyasla mobil ve web uygulamalarında bir avantaj sağlar.
Python, veri bilimi ve genel amaçlı programlama için oldukça popülerken, Dart mobil ve web geliştirmeye niş bir odaklanma sunar. AOT derlemesi nedeniyle Dart'ın performans avantajları, Python'un yorumlanan doğasına kıyasla daha hızlı yürütme sağlayabilir.
Dart ve Go, esnek ve verimli programlama için tasarlanmıştır. Ancak, Dart, Flutter ile UI geliştirmede öne çıkarken, Go, eşzamanlılık modeli ve sadeliği nedeniyle arka uç sistemleri ve mikro hizmetler için tercih edilmektedir.
Dart kodunu diğer dillere çevirmek için, Dart'ı JavaScript'e dönüştürmek için dart2js gibi mevcut araçları veya Dart'ın Fiddle'ını kullanarak test edilebilecek parçaları öneren araçları göz önünde bulundurun. Java veya C# gibi dillere çevirmek için, Dart'ın özellikleriyle yakından örtüşen dil yapıları arayın, özellikle nesne yönelimli yapılar, asenkron işlemler ve koleksiyonlar üzerinde durun.
DartPad gibi araçlar, Dart kodunun parçalarını test etmeyi ve anlamayı kolaylaştırır; bu parçalar daha sonra diğer programlama dillerinin işlevselliği ile karşılaştırılabilir ve eşleştirilebilir. Dart için evrensel bir kaynak-kaynağa çevirici olmasa da, belirli kütüphaneler ve çerçeveler, Dart kodunu farklı ortamlar veya platformlarda çalışacak şekilde uyarlamaya yardımcı olabilir; örneğin, Node.js'e dönüştürmek veya mevcut C# sistemleriyle entegre etmek gibi.