Derleyici
Yürütmeden önce tüm programı makine koduna çevirir.
Derleyici, C++, Java veya Python gibi üst düzey bir programlama dilinde yazılmış kaynak kodunu, bir bilgisayarın işlemcisinin anlayabileceği ve yürütebileceği daha düşük seviyeli bir dile, tipik olarak makine koduna veya ara bir temsile (bytecode gibi) çeviren özel bir bilgisayar programı türüdür. Derleme olarak bilinen bu çeviri süreci birkaç aşamayı içerir. İlk olarak, kaynak kod taranır ve jetonlara (leksik analiz) ayrılır. Ardından, bu jetonlar dilin dilbilgisine göre hiyerarşik bir yapıda düzenlenir (sözdizimsel analiz veya ayrıştırma), genellikle soyut sözdizimi ağacı (AST) oluşturulur. Bunun ardından, anlamsal analiz anlam ve tür tutarlılığı açısından kontrol eder. Ara kod üretimi, makineden bağımsız bir temsil oluşturur. Son olarak, kodun verimliliğini artırmak için optimizasyon teknikleri uygulanır ve hedef mimariye özgü makine kodu üretilir (kod üretimi). Derleyiciler, geliştiricilerin insan tarafından okunabilir dillerde kod yazmalarını sağlarken, donanım tarafından verimli bir şekilde yürütülebilmesini sağlayarak yazılım geliştirme için esastır. Karşılığında, ayrı bir derleme öncesi adıma sahip olmayan yorumlanan dillerle karşılaştırıldığında, derleme sürecinin kendisi için gereken zaman ve kaynaklar vardır.
graph LR
Center["Derleyici"]:::main
Rel_interpreter["interpreter"]:::related -.-> Center
click Rel_interpreter "/terms/interpreter"
Rel_function["function"]:::related -.-> Center
click Rel_function "/terms/function"
Rel_functional_programming["functional-programming"]:::related -.-> Center
click Rel_functional_programming "/terms/functional-programming"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧠 Bilgi testi
🧒 5 yaşındaki gibi açıkla
Derleyici, Fransızca bir kitabı okuyup sen okumadan önce tamamen Türkçe olarak yeniden yazan bir çevirmen gibidir. Bu sayede kitabı sonradan çok hızlı okuyabilirsin.
🤓 Expert Deep Dive
Derleme süreci, bir programın üst düzey, soyut bir temsilini hedef makinenin somut, düşük seviyeli talimatlarına eşlemek için tasarlanmış karmaşık bir dönüşüm dizisidir. Modern derleyiciler, yürütme süresini ve bellek ayak izini en aza indirmeyi amaçlayan statik tek atama (SSA) formu, döngü açma, komut zamanlama ve ölü kod eleme gibi gelişmiş optimizasyon teknikleri kullanır. LLVM IR veya Java Bytecode gibi ara temsiller (IR'ler), yeniden hedeflemeyi ve modüler optimizasyon geçişlerini kolaylaştırır. Tam Zamanında (JIT) derleme, çalışma zamanında kod derleyerek performans artışı sağlayan, zaman öncesi (AOT) derleme ve yorumlama arasındaki boşluğu kapatır. Derleyici tasarımı, derleme hızı, optimizasyonun eksiksizliği ve üretilen kodun performansı arasındaki karmaşık ödünleşimleri içerir. Optimizasyon veya kod üretiminden kaynaklanabilecek ince hataları en aza indirmek için çevirinin doğruluğunu sağlamak üzere biçimsel yöntemler ve derleyici doğrulama teknikleri kullanılır.