AFAIK

Compiler (Derleyici) ve Yorumlayıcı (Interpreter)

Yayın:
Farklı ihtiyaçlar doğrultusunda oraya çıkan, iş yapış süreçleri, yazım kuralları gibi farklılıklar taşıyan bu diller aynı işlevleri de farklı şekillerde ele alabilirler. Bu tür durumlarda, ...
GÖRSEL
Farklı ihtiyaçlar doğrultusunda oraya çıkan, iş yapış süreçleri, yazım kuralları gibi farklılıklar taşıyan bu diller aynı işlevleri de farklı şekillerde ele alabilirler. Bu tür durumlarda, geliştiriciler amaçlarına en uygun programlama dillerini bir arada kullanabilmektedirler. Ancak, kullanılan dillerin birbirlerinin anlayacağı ve/ya makine diline (machine code) yani 0 ve 1’lere (binary code) dönüştürebilmesi gerekmektedir. Bu yazıda, diller arasındaki iletişimi / dönüştürme işlemini gerçekleştiren araçlara; derleyici ve yorumlayıcılara bir bakalım.

Compiler (Derleyici) Nedir?

Bir dilde yazılmış olan kodu (kaynak kodu / source code) başka bir dilde yazılmış koda, örneğin yüksek seviye bir dilden (high-level programming language) alt seviye bir dile (low-level programming language), dönüştüren araçlardır. Genellikle bu kodlar çalıştırılabilir (executable) şekilde üretilirler. Bunun nedeni, çoğunlukla diller arasındaki bu işlemin pratik bir şekilde işletim sistemi ve donanım bağımlı kodlara dönüştürülebilmesidir. Örneğin, C dilinde yazılmış bir kodun PASCAL koduna dönüştürmesi gibi. List of compilers, @Wikiopedia [2] başlığı altında, dillere göre hazırlanmış pek çok compiler görülebilir.

Derleyiciler, kodun derlenmesi sürecinde kodun iyileştirilmesi (optimization), hataların yönetimi (error handling) ve en etkin şekilde kodların yorumlanması gibi katkılar sunabilmektedirler. Scanning, Lexical Analysis, Syntactic Analysis ve Semantic Analysis adımlarını zlerler.

Derleyiciler tek geçişli (one pass) ve çok geçişli (multi pass) olarak nitelendirilebilirler. Tek geçişli (one pass) bir derleyici kaynak kodu baştan sona bir defa okur. Çok geçişli (multi pass) derleyiciler ise bu işlemi birkaç defa gerçekleştirirler. Tek geçişli derleyiciler kodun incelenme sürecini daha hızlı ele alırlarken bazı durumlarda, dilin tasarımı sebebiyle işlevsiz kalabilmektedirler. Diğer yandan, çok geçişli derleyiciler sondaki bir tanımı takip edebilmek, işlemleri bütün kod bağlamında değerlendirebilmek gibi özellikleri sebebiyle daha iyi yorumlama yapabilmektedirler. Derleyicileri ayrıca odaklandıkları süreçlere göre değerlendirebiliriz:

  • Source to source compiler (kaynaktan kaynağa derleyici), bir dilde yazılı kodu bir başka dile çevirirler. C++ dilindeki bir kodun Java diline çevirilmesi örnek olarak gösterilebilir.
  • Cross compiler (çapraz derleyici), farklı ortamlar (işletim sistemleri gibi) arasında geçiş sağlanmasını sağlayan derleyicilerdir. Örneğin, Linux temelli bir işletim sistemi üzerinde Windows işletim sisteminde çalışacak şekilde kod yazılması gibi.
  • Just in time compiler (tam zamanında derleyici), genellikle ortamdan bağımsız, kodun yazılması sürecinde iyileştirme amacıyla kullanılan derleyicilerdir.

Derleyiciler kodu bir bütün olarak ele alırlar. Ancak, kodun satır-blok olarak da değerlendirilmesi mümkündür. Bu tür durumlarda yorumlayıcılar (interpreter) öne çıkmaktadır.

Yorumlayıcı (Interpreter) Nedir?

Yorumlayıcılar (Interpreter), kodu satır ve/ya bloklar halinde çalıştırırlar ve bir sonraki satır/blokları sırası gelmeden değerlendirmezler. Bu nedenle, sonraki satırdaki hatalar ve kodun bütününü etkileyen iyileştirmeler yorumlayıcılar tarafından yakalanamazlar. Kodu parçalar halinde değerlendirmek amacıyla kullanılırlar.

Bazı programlama dilleri derleyici ve yorumlayıcılara sahip olabilir. Ancak, daha kapsamlı çözümler sunabilen harici derleyici ve yorumlayıcılar da çalıştırılabilmektedir.

Son Olarak

Yayınlayacağım sonraki yazılarda derleyici ve yorumlayıcılarla ilgili kullanılabilecek uygulamalar çerçevesinde katkı sağlamaya çalışacağım. Ancak, konuyu daha detaylı bir şekilde değerlendirmek isterseniz aşağıdaki bağlantılara göz atabilirsiniz. Bu arada, Babel.js çerçevesinde yapılan compiler / transpiler tartışmasına da bir göz atmanızı öneririm.

HABERDAR OL

Yeni eklenen projeler, eğitimler, içerikler ve yayınlanan videolar e-posta adresine gelsin.