Ana içeriğe geç

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ı oku

Yorumlayı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ı oku

Derleyici ve Yorumlayıcı karşılaştırması

ÖzellikDerleyiciYorumlayıcı
Çevirinin yapıldığı anProgram çalışmadan önce, ayrı bir derleme adımındaProgram çalışırken, ifade ifade
ÇıktıÇalıştırılabilir bir dosya ya da bayt kodAyrı bir dosya yok; program doğrudan çalışır
Çalışma hızıGenellikle daha hızlı; kod önceden optimize edilirGenellikle daha yavaş; bir JIT derleyici yardımcı olmadıkça
Hata bildirimiBirçok hata program çalışmadan önce bildirilirHatalar, hatalı satıra gelindiğinde ortaya çıkar
Geri bildirim döngüsüDüzenle, derle, sonra çalıştırDü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 hedeflerKaynak, yorumlayıcının kurulu olduğu her yerde çalışır
ÖrneklerC, C++, Rust ve Go derleyicileriCPython, 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

Derleyicibash
# Compile first, producing a binary
gcc hello.c -o hello

# Then run the binary (no compiler needed now)
./hello
Yorumlayıcıbash
# The interpreter reads and runs the source directly
python3 hello.py

# Or type code interactively in a REPL
python3

Sı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.

Daha fazla

Ayarlar