Evaluare strictă

În informatică, evaluarea strictă este o strategie pentru evaluarea expresiilor în cadrul unui program. Acesta este modul de evaluare în care expresia este evaluată imediat ce poate fi legată de o variabilă . În mod tradițional, se numește apel prin valoare .

Un exemplu

Luați în considerare funcția recursivă ( funcția Fibonacci ):

f (x) = dacă x = 0 atunci 0 altfel dacă x = 1 atunci 1 altfel f (x-1) + f (x-2)

Să calculăm f (6). Vedem că expresia

dacă 6 = 0 atunci 0 altfel dacă 6 = 1 atunci 1 altfel f (5) + f (4)

evaluează la f (5) + f (4) care în sine evaluează la

f (x) = ( dacă 5 = 0 atunci 0 altfel dacă 5 = 1 atunci 1 altfel f (4) + f (3)) + ( dacă 4 = 0 atunci 0 altfel dacă 4 = 1 atunci 1 altfel f (3) + f (2)) etc.

Vedem că acest mecanism care constă în evaluarea f (5), f (4), f (3) de îndată ce știm că trebuie să o facem este foarte simplu și destul de natural. Nu este nevoie să păstrați expresii intermediare sau să anticipați calculele viitoare. Dar conduce la evaluarea f (4) de două ori și f (3) de trei ori (prin numărarea evaluării rămase a lui f (4) care va duce la a treia evaluare a lui f (3)).

Comentarii

Un dezavantaj al evaluării stricte este că forțează evaluarea expresiilor care nu sunt necesare pentru evaluarea finală sau că poate întârzia evaluarea expresiilor care sunt imediat necesare . De asemenea, lasă dezvoltatorului sau programatorului sarcina de a organiza ordinea de execuție, în timp ce majoritatea compilatoarelor moderne sunt capabile să optimizeze ordinea de execuție a expresiilor pentru a maximiza utilizarea resurselor procesorului și a elimina expresiile inutile.

Vezi și tu

Surse și legături externe

Note și referințe

  1. Această metodă de evaluare a unei funcții recursive prin înlocuirea unui apel cu definiția sa se numește reducere Gross- Knuth (vezi de exemplu Zena Ariola și Matthias Felleisen, "  The Call-By-Need lambda Calculus  ", Journal of Functional Programming , vol.  7 , n o  3,1997, p.  265-301 ( citiți online )).