Menu
Coddy logo textTech

Yorumlayıcı nedir?

Yorumlayıcı, programın tamamını önce ayrı bir makine kodu dosyasına çevirmek yerine kaynak kodu doğrudan çalıştıran, talimatlarını ilerledikçe uygulayan programdır. Standart Python ve Ruby uygulamaları birer yorumlayıcıdır.

Yazan Kevin Spektor, Kurucu ortak ve CTO

Güncellendi: 24 Eylül 2026

Kaynak kod
  1. 1print("Hello")
  2. 2total = 2 + 3
  3. 3print(total)
  4. 4print("Done")
Çıktı
Çevrilen satır0
Çalıştırma0

Her çalıştırma satırları yeniden çevirir. Yazım hatasını aç: yorumlayıcı yine de 3. satıra ulaşıp durmadan önce "Hello" yazdırır.

python3 hello.py yaz, çıktı ekrana gelir; ama sonra klasöre bak: yeni bir program dosyası oluşmamıştır. Gerçekte çalışan program python3'ün kendisiydi, yani Python yorumlayıcısı. hello.py dosyasını okudu, her ifadenin ne anlama geldiğini çözdü ve onu yaptı. Betiği yarın yeniden çalıştırırsan yorumlayıcı kaynağı yine baştan okur.

Yorumlayıcı nasıl çalışır

Yorumlayıcı, program bitene kadar tek bir döngüyü tekrarlar: sıradaki talimatı al, ne anlama geldiğini çöz, uygula, devam et. Çalışırken programın değişkenlerini kendi belleğinde tutar; total = price * 3 satırının birkaç satır önce atanmış bir price değerini kullanabilmesinin nedeni budur.

Bunu görmenin en net yolu, REPL (read, evaluate, print, loop: oku, değerlendir, yazdır, tekrarla) denen etkileşimli moddur. Dosya adı vermeden python3 yaz; her satır Enter'a bastığın anda çalışır:

>>> price = 4
>>> price * 3
12

Gerçek yorumlayıcılar bir hazırlık adımı ekler. Standart Python yorumlayıcısı CPython, önce dosyanın tamamını basit talimatlardan oluşan kompakt bir liste olan bytecode'a derler, sonra bu bytecode'u talimat talimat yürüten bir döngü çalıştırır. Tek bir satırın bytecode'unu yazdırabilirsin:

Python 3.12 şunu yazdırır (diğer sürümlerde ayrıntılar farklıdır):

  0           0 RESUME                   0

  1           2 LOAD_NAME                0 (price)
              4 LOAD_CONST               0 (3)
              6 BINARY_OP                5 (*)
             10 STORE_NAME               1 (total)
             12 RETURN_CONST             1 (None)

Bu satırların her biri yorumlayıcı döngüsünün bir adımıdır: price değerini getir, 3 sabitini getir, ikisini çarp, sonucu total içine kaydet. Hiçbiri makine kodu değildir; her adımı, kendisi derlenmiş bir C programı olan yorumlayıcı uygular.

Hatalar satır çalıştığında ortaya çıkar

Yorumlayıcı ilerledikçe yürüttüğü için bir program, bir hataya çarpmadan önce gerçek iş yapabilir. Bunu çalıştır; çökmeden önce ilk iki satır yazdırılır:

Step 1: starting
Step 2: still fine
Traceback (most recent call last):
  ...
ZeroDivisionError: division by zero

Sözdizimi hatası farklı davranır, çünkü CPython dosyanın tamamını, herhangi bir kısmını çalıştırmadan önce bytecode'a derler. 3. satırı print("Step 3:" 10) olarak değiştir (virgül eksik), hiçbir şey yazdırılmaz, Step 1 bile:

SyntaxError: invalid syntax. Perhaps you forgot a comma?

Yani "yorumlayıcı kodu satır satır çalıştırır" sözü yalnızca yarı yarıya doğrudur. Dilbilgisi önce dosyanın tamamı için kontrol edilir; sıfıra bölmek ya da var olmayan bir adı kullanmak gibi diğer her şey ancak o satır çalıştığında bulunur. İlk tür için sözdizimi hatası sayfasına bak.

Derleyici ve yorumlayıcı farkı

Bir derleyici, programın tamamını çalışmadan önce ayrı bir dosyaya çevirir. Yorumlayıcı ise programı her seferinde kendisi çalıştırır. Pratikteki farklar bundan doğar:

DerleyiciYorumlayıcı
İş ne zaman yapılırBir kez, program çalışmadan önceProgram her çalıştığında
ÇıktıAyrı bir dosya (çalıştırılabilir dosya veya bytecode)Ayrı bir program dosyası yok
Kullanıcılara ne verirsinDerlenmiş programıKaynak kodu ve kullanıcının bilgisayarında kurulu yorumlayıcıyı
Hata kontrolüProgram çalışmadan önce tüm program için sözdizimi hataları ve, tipli dillerde, tip hatalarıSözdizimi genellikle önce kontrol edilir; diğer hatalar hatalı satır çalıştığında görünür
Düzenle ve çalıştırHer değişiklikten sonra yeniden derleKaydet ve yeniden çalıştır
HızDaha hızlı, işlemci makine kodunu doğrudan çalıştırırDaha yavaş, her talimat program çalışırken çözülür
TaşınabilirlikHer işlemci ve işletim sistemi için yeniden derleAynı kaynak, yorumlayıcının bulunduğu her yerde çalışır
Tipik dillerC, C++, Rust, GoPython, Ruby, PHP, Bash

Hız farkı, sıkı aritmetik döngülerde gerçektir: aynı döngü derlenmiş C olarak CPython'dakinden kat kat hızlı çalışabilir. Çoğunlukla ağı, diski ya da kullanıcıyı bekleyen programlarda fark genellikle fark edilemeyecek kadar küçüktür.

Derlenen ya da yorumlanan olmak dilin bir özelliği değildir

Dil bir kurallar bütünüdür; derleyici ya da yorumlayıcı bu kuralları uygulayan bir programdır. Aynı dil iki şekilde de çalıştırılabilir ve popüler dillerin çoğu ikisini karıştırır:

  • Python. CPython bytecode'a derler ve onu yorumlar. Başka bir uygulama olan PyPy, sık çalışan kodu program çalışırken makine koduna çeviren bir just-in-time (JIT) derleyici ekler.
  • Java. javac kaynağı önceden bytecode'a derler. Java Sanal Makinesi sonra bu bytecode'u yorumlar ve en yoğun çalışan metotları JIT ile makine koduna derler. Java 11'den beri java Main.java, tek bir kaynak dosyayı önce bellekte derleyerek doğrudan çalıştırır.
  • JavaScript. Tarayıcılar ve Node.js, V8 gibi motorlar kullanır; bu motorlar kodu yorumlayarak başlar ve program çalıştıkça sık çalışan kısımları makine koduna derler.
  • C ve C++. Neredeyse her zaman GCC, Clang ya da MSVC ile önceden derlenir.
python3 app.py            # Python: interpreter, bytecode behind the scenes
node app.js               # JavaScript: V8 interprets, then JIT-compiles
javac Main.java           # Java step 1: compile to Main.class
java Main                 # Java step 2: the JVM runs the bytecode

Hangisi olursa olsun, yorumlayıcı ya da sanal makine programın çalışma zamanı ortamının bir parçasıdır: program nerede çalışacaksa orada kurulu olmalıdır.

Yaygın yanlış inanışlar

  • "Yorumlayıcı her satırı makine koduna çevirir." Klasik bir yorumlayıcı programın için hiçbir zaman makine kodu üretmez. Bir talimatı okur ve yorumlayıcının içine zaten derlenmiş olan kodla onu yerine getirir. Çalışma zamanında makine kodu üretmek bir JIT derleyicinin işidir.
  • "Yorumlanan dillerde derleme adımı yoktur." CPython, Ruby'nin YARV'si ve PHP önce bytecode'a derler. Bu adım otomatik ve görünmez olduğu için gözden kaçması kolaydır.
  • "Yorumlanan, yavaş demektir." JIT derleme farkın büyük kısmını kapattı. V8, JavaScript'i Electron üzerine kurulu VS Code gibi büyük uygulamalar için yeterince hızlı çalıştırır.
  • "Python yorumlayıcının adıdır." Python dilin adıdır. CPython, PyPy ve MicroPython onun için yazılmış farklı yorumlayıcılardır; hızları ve destekledikleri kütüphaneler farklı olabilir.

Sırada ne var

Karşılaştırmanın diğer yarısı için derleyicinin ne olduğunu ve kaynak kodu nasıl makine koduna çevirdiğini oku. Çalışma zamanı ortamı sayfası, yorumlayıcının yanında başka neler getirdiğini anlatır. Bir yorumlayıcıyı kendin denemek için bir Python betiği çalıştır ya da Python playground sayfasını aç.

Sıkça Sorulan Sorular

Python derleyici mi yorumlayıcı mı kullanır?
Python bir dildir; onu çalıştıran program genellikle bir yorumlayıcı olan CPython'dur. CPython kodunu önce otomatik olarak bytecode'a derler, sonra bu bytecode'u yorumlar. PyPy gibi, bir JIT derleyici ekleyen başka uygulamalar da vardır.
C++ yorumlayıcıyla mı derleyiciyle mi çalışır?
C++ bir dildir ve neredeyse her zaman GCC, Clang ya da MSVC gibi bir derleyiciyle önceden derlenir. Sonuç, tek bir işlemci ve işletim sistemi için yerel bir çalıştırılabilir dosyadır. C++ için etkileşimli araçlar da vardır, ama her kod parçasını arka planda derlerler.
Hangisi daha hızlı, yorumlayıcı mı derleyici mi?
Derlenmiş bir program genellikle daha hızlı çalışır, çünkü işlemci her adımı bir yorumlayıcının çözmesini beklemeden makine kodunu doğrudan yürütür. Yorumlayıcı ise daha hızlı başlar, çünkü ayrı bir derleme adımı yoktur. JVM ve V8'in kullandığı JIT derleyiciler, en yoğun çalışan kodu program çalışırken derleyerek bu farkı daraltır.
REPL nedir?
REPL (read, evaluate, print, loop: oku, değerlendir, yazdır, tekrarla), bir yorumlayıcının yazdığın her satırı hemen çalıştırıp sonucu gösterdiği etkileşimli bir komut istemidir. Dosya adı vermeden python3 ya da node yazmak bir REPL açar. Dosya oluşturmadan küçük bir fikri denemek için kullanışlıdır.
Bir dil hem derlenen hem yorumlanan olabilir mi?
Evet. Derlenen ya da yorumlanan olmak dilin değil, uygulamanın özelliğidir. Java, javac ile bytecode'a derlenir, sonra JVM tarafından yorumlanır ve JIT ile derlenir; Python ve JavaScript gibi diller için de hem yorumlayıcılar hem derleyiciler vardır.
Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA