Code generation
- Dart kursu
- Uzman
- Ders 10/47
- 5 dk
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
void main() {
// Backend sınıfını tanımla (name, target; emit metodu)
// bir Backend yarat; emit() yazdır
}Örnek çözüm
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ı
final opt = '____';
print(opt);
final opt = 'inlining';
print(opt);
Açıklama: inlining küçük fonksiyonları çağrı yerinde açar.