Lazy Evaluation

Lazy Evaluation, bir programlama terimi olarak, kesin (strict) değerlendirme teriminin karşıtı olarak kullanılır. Tembel değerlendirmeli dillerde değerler, ihtiyaç duyulduğu anda üretilir, daha önce değil. Bu işlemin, son ana kadar ertelenmesinden dolayı tembel terimi kullanılmıştır.

 Geçmişi 
Lazy Evaluation, lambda calculus için Christopher Wadsworth tarafından tanıtılmış ve Plessey System 250 tarafından bir Lambda-Calculus Meta-Machine'in kritik bir parçası olarak kullanılmış, yetenekle sınırlı bir adres alanındaki nesnelere erişim için çözümleme ek yükünü azaltmıştır. Programlama dilleri için, bağımsız olarak Peter Henderson ve James H. Morris ve Daniel P. Friedman ve David S. Wise tarafından tanıtılmıştır.

 Uygulama 
Kesin değerlendirmeli dillerde, bunun tersine değerler, ihtiyaç duyulacak olsun ya da olmasın hemen üretilir ve saklanır.

Tembel değerlendirmeye verilen bir diğer ad da 'isimle çağrılan'dır (call by name). Bunun karşıtı ve dolayısıyla kesin değerlendirmenin eş anlamlısı olan terim ise değer ile çağrılan'dır (call by value).

Bir eşitlikte, bir değer/değişken kullanıldığında, kesin değerlendirmeli yani değer ile çağrılan dillerde, daha önceden üretilmiş ve saklanmakta olan değer konulur. Tembel değerlendirmeli yani isim ile çağrılan dillerde ise değerin elde edilmesi için gereken bilgi konulur ve ihtiyaç duyulacağı ana kadar değerin hesaplanması ertelenir.

Bu özellik, tembel değerlendirmeli dillerde farklı bir yaklaşımı kullanabilmeye imkân şağlar. Kesin değerlendirmeli dillerde, ihtiyaç duyulsun ya da duyulmasın sonucun hemen elde edilmeye çalışılacak olması, kendi kendini sonsuza kadar çağıracak bir işlevin (function) yazılmasına, hafıza taşmasına yol açacağından dolayı, imkân tanımazken böyle bir işlev, tembel değerlendirmeli dillerde yazılabilir.

Tembel dillere örnek olarak Haskell verilebilir.

 Kaynakça 

Kategori:Derleyici optimizasyonu
Kategori:Programlama
Kategori:Yazılım optimizasyonu