D Programlama Dili – Programlama dersleri ve D referansı
Ali Çehreli

değer: [value], ay adedi 12 gibi isimsiz bir büyüklük
fonksiyonel programlama: [functional programming], yan etki üretmeme ilkesine dayalı programlama yöntemi
işlev: [function], programdaki bir kaç adımı bir araya getiren program parçası
parametre: [parameter], işleve işini yapması için verilen bilgi
tembel değerlendirme: [lazy evaluation], işlemlerin gerçekten gerekene kadar geciktirilmesi
... bütün sözlük



İngilizce Kaynaklar


Diğer




Tembel İşleçler

Tembel değerlendirmeler işlemlerin gerçekten gerekli oldukları zamana kadar geciktirilmeleri anlamına gelir. İngilizcesi "lazy evaluation" olan tembel değerlendirmeler Haskell gibi bazı programlama dillerinin de temel olanakları arasındadır.

İşlemlerin gerekene kadar geciktirilmeleri doğal olarak hız kazancı sağlayabilir çünkü belki de gerekmeyecek olan bir işlem için baştan zaman harcanmamış olur. Öte yandan, bir önceki bölümde de gördüğümüz gibi, lazy parametrelerin her erişildiklerinde tekrar hesaplanıyor olmaları zaman kaybına da neden olabilir. Bu olanak, dikkatli kullanıldığında ilginç programlama yöntemlerine olanak verir.

Tembel değerlendirmelere yakın olan bir kavram, işleçlere verilen ifadelerin duruma göre hiç işletilmiyor olmalarıdır. Bu kavramı daha önce gördüğümüz aşağıdaki işleçlerden tanıyorsunuz:

Bu işleçlerdeki tembellik yalnızca hız kazancıyla ilgili değildir. İfadelerden birisinin işletilmesi duruma göre hatalı olabilir.

Örneğin, aşağıdaki baş harfi A ise koşulu dizginin boş olma olasılığı varsa hatalıdır:

    dstring s;
    // ...
    if (s[0] == 'A') {
        // ...
    }

s'nin sıfır indeksli elemanına erişmeden önce öyle bir elemanın varlığından emin olmak gerekir. Bu yüzden aşağıdaki koşul yukarıdaki denetimi && işlecinin sağ tarafına almakta ve böylece o denetimi ancak dizgi dolu olduğunda işletmektedir:

    if ((s.length >= 1) && (s[0] == 'A')) {
        // ...
    }

Tembel değerlendirmeler ilerideki bölümlerde göreceğimiz işlev göstergeleri, temsilciler, ve aralıklarla da sağlanabilir.