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.[1] Programlama dilleri için, bağımsız olarak Peter Henderson ve James H. Morris[2] ve Daniel P. Friedman ve David S. Wise tarafından tanıtılmıştır.[3]
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
- ^ Civilizing Cyberspace: The Fight For Digital Democracy. Kenneth Hamer-Hodges (İngilizce). Book Writing Inc. 31 Aralık 2019. s. 410. Erişim tarihi: 30 Ağustos 2023.
- ^ Henderson, Peter; Morris, James H. (1976). "A lazy evaluator" (İngilizce). ACM Press: 95-103. doi:10.1145/800168.811543.
- ^ "CONS should not evaluate its arguments" (PDF). Daniel P. Friedman ile David S. Wise. Edinburg University Press. 20 Temmuz 1976. 30 Ağustos 2023 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 30 Ağustos 2023.
![]() | Programlama dili ile ilgili bu madde taslak seviyesindedir. Madde içeriğini genişleterek Vikipedi'ye katkı sağlayabilirsiniz. |