Yan yana
DerleyicivsYorumlayıcı
Derleyici ile yorumlayıcı arasındaki fark nedir?
Güncellendi 2 dk okuma7 fark
Kısaca
Derleyici programın tamamını çalışmadan önce çevirir; yorumlayıcı ise kaynak kodu çalışma anında adım adım yürütür ve ham hız yerine hızlı geri bildirim sunar.
Derleyici
Derleyici, bir programlama dilinde yazılmış kaynak kodu, bilgisayarın çalıştırabileceği makine kodu gibi daha alt seviyeli bir biçime çeviren programdır.
Derleyici sayfasını okuYorumlayıcı
Yorumlayıcı, tüm programı önce ayrı bir çalıştırılabilir dosyaya çevirmek yerine kaynak kodu doğrudan, adım adım çalıştıran bir programdır.
Yorumlayıcı sayfasını okuDerleyici ve Yorumlayıcı karşılaştırması
| Özellik | Derleyici | Yorumlayıcı |
|---|---|---|
| Çevirinin yapıldığı an | Program çalışmadan önce, ayrı bir derleme adımında | Program çalışırken, ifade ifade |
| Çıktı | Çalıştırılabilir bir dosya ya da bayt kod | Ayrı bir dosya yok; program doğrudan çalışır |
| Çalışma hızı | Genellikle daha hızlı; kod önceden optimize edilir | Genellikle daha yavaş; bir JIT derleyici yardımcı olmadıkça |
| Hata bildirimi | Birçok hata program çalışmadan önce bildirilir | Hatalar, hatalı satıra gelindiğinde ortaya çıkar |
| Geri bildirim döngüsü | Düzenle, derle, sonra çalıştır | Düzenle ve hemen çalıştır; çoğu zaman etkileşimli bir REPL'de |
| Taşınabilirlik | İkili dosyalar belirli bir işlemciyi ve işletim sistemini hedefler | Kaynak, yorumlayıcının kurulu olduğu her yerde çalışır |
| Örnekler | C, C++, Rust ve Go derleyicileri | CPython, Ruby yorumlayıcısı ve Bash gibi kabuklar |
Fark, açıklamalı
Derleyici, kaynak kodu önceden başka bir biçime, genellikle makine koduna ya da bayt koda çeviren ve daha sonra çalıştıracağınız bir çıktı üreten programdır. Yorumlayıcı ise kaynak kodu doğrudan yürütür; program çalışırken her ifadeyi okur, ne anlama geldiğini çözer ve uygular.
Ödünleşim, çeviri işinin ne zaman yapıldığındadır. Önceden derlemek, derleyicinin programın tamamını analiz edip optimize etmesini ve birçok hatayı hiçbir şey çalışmadan bildirmesini sağlar; bu yüzden derlenmiş programlar genellikle daha hızlıdır. Yorumlama ise derleme adımını atlar; değişiklikler hemen çalışır ve aynı kaynak, yorumlayıcının kurulu olduğu her yerde çalışır.
Modern dil gerçeklemelerinin çoğu ikisini karıştırır. Java ve C#, bir sanal makinenin çalıştırdığı bayt koda derlenir; Python kaynağı yorumlamadan önce bayt koda derler; JavaScript motorları ise kodu önce yorumlayarak başlar, sonra sık çalışan kodu makine koduna çevirmek için tam zamanında (JIT) derleyici kullanır.
Sık yapılan bir yanlış, bir dilin kendisinin derlenmiş ya da yorumlanmış olduğu düşüncesidir. Bu, gerçeklemenin bir özelliğidir: C genellikle derlenir ama C yorumlayıcıları da vardır; Python ise standart yorumlayıcısıyla ya da derleme araçlarıyla çalıştırılabilir.
Hangisini kullanmalısınız?
Derleyici şu durumlarda doğru seçim:
- Çalışma zamanı performansı en önemli öncelik.
- Tek başına çalışan bir çalıştırılabilir dosya dağıtmak istiyorsunuz.
- Hataların program hiç çalışmadan yakalanmasını istiyorsunuz.
Yorumlayıcı şu durumlarda doğru seçim:
- Kodu derleme adımı olmadan anında denemek istiyorsunuz.
- Aynı betiğin birçok platformda değişmeden çalışması gerekiyor.
- Otomasyon, yapıştırıcı kod ya da hızlı denemeler yazıyorsunuz.
Bir programı iki yolla çalıştırmak
# Compile first, producing a binary
gcc hello.c -o hello
# Then run the binary (no compiler needed now)
./hello# The interpreter reads and runs the source directly
python3 hello.py
# Or type code interactively in a REPL
python3Sık sorulan sorular
Python derlenen bir dil mi, yorumlanan bir dil mi?
Bir bakıma ikisi de. Standart gerçekleme olan CPython kaynak kodu bayt koda derler ve sonra bu bayt kodu yorumlar; yeni sürümler ayrıca deneysel bir JIT derleyici de ekler.
JavaScript derlenen bir dil mi, yorumlanan bir dil mi?
Modern JavaScript motorları ikisini de yapar. Hızlı başlangıç için kodu yorumlayarak başlar, sık çalışan kodu optimize edilmiş makine koduna çevirmek için tam zamanında bir derleyici kullanır.
JIT derleyici nedir?
Tam zamanında (JIT) derleyici, kodu program çalışırken makine koduna çevirir ve en sık çalışan kısımlara odaklanır; böylece hızlı başlangıcı iyi uzun vadeli hızla birleştirir.