İstekli değerlendirme olarak da bilinen katı değerlendirme, çoğu işlevsel programlama dili tarafından kullanılan ve bir ifadenin bir değişkene bağlanır bağlanmaz değerlendirildiği değerlendirme stratejisidir. Katı değerlendirme, bir ifadenin değerlendirilmesinin, değerine ihtiyaç duyulana kadar ertelendiği tembel değerlendirmeye doğrudan zıttır. Haskell, tembel değerlendirme kullanan en popüler programlama dilidir. Çoğu programlama dili, Java, Scheme (Lisp dili) ve JavaScript gibi işlev bağımsız değişkenleri (bazen parametreler olarak adlandırılır) için katı değerlendirme kullanır.
Sıkı değerlendirme sonuçlarının kullanılması, yürütme sırası açısından kolayca anlaşılabilir bir kod, diğer değerlendirme stratejilerine kıyasla daha kolay bir hata ayıklama süreci ve kod performansının sorumluluğu programcıya kaydırılır, yani dikkatli bir kod optimizasyonu süreci gerekir.
Programlamada değerlendirme stratejileri
Değerlendirme stratejileri, bir fonksiyon çağrısının argümanlarının ne zaman değerlendirileceğini ve fonksiyona ne tür bir değer aktarılacağını belirlemek için programlama dillerinde kullanılır. Pek çok değerlendirme stratejisi vardır, ancak çoğu iki şemsiye kategoriden birine girer: Katı ve tembel değerlendirme.
Sıkı değerlendirme stratejileri
- Çağrı-değeriyle: Gerçek parametrelerin içeriğinin biçimsel parametrelere kopyalanmasından oluşan en yaygın değerlendirme stratejisi. İşlev, parametrelerine değerler atayabiliyorsa, yalnızca yerel değişkeni atanır, yani işlev çağrısına iletilen hiçbir şey değişmez. Değere göre çağrı, tek bir değerlendirme stratejisi değil, bir işlevin argümanlarının işleve aktarılmadan önce değerlendirildiği bir ailedir. C, Eiffel ve Common Lisp gibi programlama dilleri, değer bazında arama stratejisi kullanır.
- Referansla arama: Başka bir yaygın strateji. Değere göre çağrı stratejisi, gerçek parametrenin içeriğini resmi parametreye kopyalarken, referansa göre çağrı stratejisi, gerçek parametrenin adresini resmi olana kopyalar. Bir işlev, değerinin bir kopyası yerine bağımsız değişken olarak kullanılan bir değişkene örtük bir başvuru alır. C ++ başvuruya göre çağrı stratejisini kullanır.
Tembel değerlendirme stratejileri
- Normal sipariş: Bir ifade, önce en soldaki, en dıştaki indirgenebilir ifade tekrar tekrar değerlendirilerek değerlendirilir.
- Çağrı-adıyla: Gerçek parametre yalnızca işlevin içinde kullanılırsa değerlendirilir. İşlev gövdesinde bir parametre kullanılmazsa, asla değerlendirilmez. Birkaç kez kullanılırsa, her göründüğünde yeniden değerlendirilir.
- Makro genişleme yoluyla çağrı: İsimle aramaya benzer, ancak değiştirmeyi önler. Geliştiricilere, makrolar olarak bilinen çekirdek dil gramerine yeni sözdizimi eklemek için bir mekanizma sağlar. Makrolar, bir makro ön işlemcisi tarafından koda genişletilir.
- İhtiyaca göre arama: Bir parametre yalnızca kullanılırsa değerlendirilir. İlk değerlendirme gerçekleştiğinde, sonuç önbelleğe alınır, bu nedenle parametrenin daha fazla kullanımı yeniden değerlendirmeyi gerektirmez.