CodeBlanks Logo Icon CodeBlanks

Code generation

Code generation ve backend öğrenirsin.

Code generation

Code generation, Kernel'ı hedef platformun koduna dönüştürme aşamasıdır. Her backend kendi stratejisini kullanır: dart2js JavaScript üretir, dart2wasm WebAssembly, dart native ise makine kodu.

Code generation sırasında optimizasyonlar uygulanır: dead code elimination, inlining, constant folding. Backend, hedefin özelliklerine göre kodu optimize eder. Bu aşamanın çıktısı, çalıştırılabilir bir dosya (native) veya tarayıcıda yüklenebilir koddur.

Optimizasyonlar

Code generation sırasında çeşitli optimizasyonlar uygulanır. Dead code elimination, hiç kullanılmayan kodu kaldırır. Inlining, küçük fonksiyonları çağrı yerinde açar. Constant folding, derleme anında bilinen sabit ifadeleri önceden hesaplar.

Bu optimizasyonlar çıktıyı küçültür ve hızlandırır. Backend, hedefin özelliklerine göre optimizasyon yapar: web için boyut, native için hız. İyi optimizasyon, kullanıcı deneyimini doğrudan etkiler.

Uygulama Backend sınıfı

Bir Backend sınıfı tanımla: final String name; final String target; Backend(this.name, this.target); alan ve kurucu. String emit() => '$name → $target'; metodu. main içinde final b = Backend('dart2js', 'JavaScript'); yarat; print(b.emit()); ile yazdır.

Başlangıç kodu

main.dart
void main() {
  // Backend sınıfını tanımla (name, target; emit metodu)
  // bir Backend yarat; emit() yazdır
}

Örnek çözüm

main.dart
class Backend {
  final String name;
  final String target;
  Backend(this.name, this.target);
  String emit() => '$name → $target';
}

void main() {
  final b = Backend('dart2js', 'JavaScript');
  print(b.emit());
}

Beklenen çıktı

dart2js → JavaScript

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 dart2js backend'i ne üretir?

  • Makine kodu
  • WebAssembly
  • JavaScript Doğru cevap
  • Çöp toplayıcı

Açıklama: dart2js JavaScript kodu üretir.

2 Backend'leri eşleştir

Kavram Anlamı
dart2js JavaScript
dart2wasm WebAssembly
dart native Makine kodu
VM (JIT) Çalışma anı derleme

3 Optimizasyon adı

Soru
final opt = '____';
print(opt);
Cevap
final opt = 'inlining';
print(opt);

Açıklama: inlining küçük fonksiyonları çağrı yerinde açar.

Uzman bölümündeki tüm dersler