Çevirici (Translator), Derleyici (Compiler) ve Yorumlayıcı (Interpreter) Nedir?

Serpil AKİ
2 min readMay 2, 2021

--

Çevirici, derleyici ve yorumlayıcı nedir? Bu kavramlar birbirine sık sık karıştırılmaktadır. Bu sebeple bu kavramlara bir göz atalım;

Çevirici Program

Çevirici Program (Translators) nedir?

Bir programlama dilinde yazılmış olan kaynak kodun eş değer olarak başka bir dile dönüştüren programlara çevirici programlar (translators) denilmektedir.

Örneğin:

Çevirici Program

Derleyici (Compiler) nedir?

Herhangi bir programlama dili ile yazılmış olan kaynak kodun daha alçak seviyeli bir dile çeviren programlara derleyici (compiler) denir. Her derleyici bir çevirici programdır ama her çevirici program bir derleyici değildir. Yani bir çeviri programına derleyici diyebilmek için hedef dile bakmak gerekir.

Derleyiciler tüm kodu tek seferde çevirir. Bu işlem yapılırken kaynak kodda yer alan mantıksal veya yazınsal hatalar varsa tespit eder ve hata bilgisini yazılımın geliştiricisine bildirerek hatanın giderilmesine yardım eder. Yani kaynak kodun sorunsuz şekilde daha alçak seviyeli bir dile dönüştürülmesi aşamasındaki tüm rolleri üstlenir. Kaynak kodu tamamını tek seferde derlediği için hata tespiti zordur.

Not: Derleyicinin yaptığı işlemin tam tersini yapan yani alçak seviyeli bir dilden yüksek seviyeli bir dile dönüştürme işlemini yapan yazılımlara decompiler denir. Makine dilini (1, 0) decompiler etmek neredeyse imkânsızdır. Fakat ara kodları (.Net ara kodu CIL, Java’nın ara kodu Java Byte Code) kolaylıkla decompiler edebiliriz.

Yorumlayıcı (Interpreter) nedir?

Kaynak kodu satır satır veya bloklar halinde okuyup, çalıştıran programa yorumlayıcı denir. Yani kaynak kodu alarak hedef kod üretmeden o anda çalıştırılması işlemidir. Yorumlayıcılar çevirici programlar değildir.

Sırası gelmeyen satırları çalıştırmadığı için var olan hataları tespit edemez. İlk karşılaşılan hatada programın çalışması kesilir. Bu sebeple kaynak kodun bütününe ait iyileştirmeleri(optimizasyon) yapamaz. Ayrıca standart çalıştırılabilir bir kod üretmezler. Yorumlayıcı yazmak derleyici yazmaktan daha kolaydır. Fakat kaynak koddan, makine diline anlık olarak dönüşüm yaptıkları için derleyicilere göre daha yavaş çalışırlar. Ayrıca yorumlayıcılar da kaynak kodun çalıştırılması için kodun başka kişilere verilmesi gerekir ve bu sebeple güvenirliği de daha düşüktür.

Sonuç olarak programlama dillerine göre sadece derleyici, yorumlayıcı kullanabilir ya da hem derleyici hem de yorumlayıcı kullanabilir. Genel olarak genel amaçlı olarak tasarlanan diller daha çok derleyciler ile çalıştırılır. Örneğin C, C++, C#, Java vb. sadece derleyici kullanırken PHP, Perl, Ruby vb. sadece yorumlayıcı kullanır. Python, Swift vb. ise hem derleyici hemde yorumlayıcı kullanır.

--

--