ScholarGate
Asistan

Derleyiciler ve Uygulama

Derleyici yapımı ve dil uygulaması, üst düzey programları yürütülebilir koda dönüştürmekte olup, analiz, çeviri, optimizasyon ve çalışma zamanı desteği gibi geniş bir alanı kapsamaktadır.

PaperMind ile konu bulYakındaMakale ve konu bul
Tools & resources
Slaytları indir
Learn & explore
VideoYakında

Tanım

Derleyici yapımı ve dil uygulaması, kaynak dilde yazılmış programları verimli bir şekilde yürütülebilecek bir forma çevirme tekniklerini ve bu yürütmeyi desteklemek için gerekli çalışma zamanı altyapısını içermektedir.

Kapsam

Bu alan, programlama dillerinin uygulanmasının mühendisliğini ve kuramını kapsamaktadır: sözcüksel ve sözdizimsel analiz, anlamsal analiz, ara temsiller, kod üretimi ve optimizasyonu ile yürütmeyi destekleyen çalışma zamanı sistemleri, sanal makineler ve bellek yöneticileri. Hem önceden derleme (ahead-of-time) hem de anında derleme (just-in-time) yaklaşımlarını ve dil tasarımı ile verimli uygulama arasındaki etkileşimi ele almaktadır.

Alt konular

Temel sorular

  • Kaynak metin verimli yürütülebilir koda nasıl dönüştürülmektedir?
  • Hangi ara temsiller analiz ve optimizasyonu en iyi şekilde desteklemektedir?
  • Optimizasyonlar performansı artırırken programın anlamını nasıl korumaktadır?
  • Bir dil hangi çalışma zamanı ve bellek yönetimi desteğine ihtiyaç duymaktadır?

Temel kuramlar

Klasik derleyici işlem hattı
Dragon Book, derlemeyi aşamalara (sözcüksel analiz, ayrıştırma, anlamsal analiz, ara kod, optimizasyon, kod üretimi) ayırarak modern derleyicilerin standart mimarisini oluşturmaktadır.
Yeniden kullanılabilir derleyici altyapısı (LLVM)
Lattner ve Adve, derleme zamanı, bağlama zamanı ve çalışma zamanı boyunca analiz ve dönüşümü destekleyen, tipli bir ara temsil etrafında inşa edilmiş bir derleyici çerçevesi sunmuştur.
Modern derleyici tasarım metodolojisi
Appel ve Muchnick, optimize edici derleyiciler oluşturmak için yapılandırılmış, veri akışı ve SSA tabanlı yaklaşımlar sunarak üretim araç zincirlerinde kullanılan algoritmaları kodifiye etmektedir.

Klinik önem

Derleyiciler temel bir altyapıdır: doğrulukları ve optimizasyonlarının kalitesi, esasen tüm yazılımların güvenilirliğini ve performansını doğrudan etkilemektedir. LLVM gibi yeniden kullanılabilir çerçeveler, yeni diller oluşturma ve yeni donanımları hedefleme maliyetini düşürmüştür.

Tarihçe

Derleyici teknolojisi, 1950'lerde Fortran'ın optimize edici derleyicisiyle başlamıştır. Biçimsel ayrıştırma kuramı (LL, LR) ve veri akışı analizi 1960'lar ve 1970'lerde olgunlaşmış, 1986 tarihli Dragon Book'ta kodifiye edilmiştir. Statik tek atama formu ve agresif optimizasyon 1990'larda ilerlemiş, 2000'lerde ise LLVM gibi yeniden kullanılabilir altyapılar ve yaygın anında derleme (just-in-time compilation) görülmüştür.

Tartışmalar

Önceden derleme (ahead-of-time) ile anında derleme (just-in-time compilation)
Uygulayıcılar, optimizasyonu öne çeken ve öngörülebilir başlangıç sağlayan önceden derlemeyi (ahead-of-time compilation) ile çalışma zamanı profillerinden yararlanabilen ancak ısınma ve çalışma zamanı ek yükü getiren anında derlemeyi (just-in-time compilation) karşılaştırmaktadır.

Öne çıkan isimler

  • Alfred Aho
  • Jeffrey Ullman
  • Andrew Appel
  • Chris Lattner
  • Frances Allen

İlgili konular

Temel eserler

  • aho2006
  • appel1998
  • muchnick1997
  • lattner2004

Sıkça sorulan sorular

Bir derleyicinin ana aşamaları nelerdir?
Tipik bir derleyici, genellikle ön uç, orta uç ve arka uç olarak tanımlanan sözcüksel analiz, ayrıştırma, anlamsal analiz, ara kod üretimi, optimizasyon ve hedef kod üretimi işlemlerini gerçekleştirmektedir.
Bir derleyici ile bir yorumlayıcı arasındaki fark nedir?
Bir derleyici, bir programı yürütmeden önce başka bir forma (makine kodu gibi) çevirirken, bir yorumlayıcı programı doğrudan yürütmektedir; birçok modern sistem, örneğin anında derleme (just-in-time compilation) yoluyla her ikisini birleştirmektedir.

Bu kavram için yöntemler

İlgili kavramlar