Dychtivé hodnocení - Eager evaluation

V počítačovém programování je dychtivé hodnocení , známé také jako přísné hodnocení nebo chamtivé hodnocení , strategií hodnocení používanou většinou tradičních programovacích jazyků . V dychtivém vyhodnocení je výraz vyhodnocen, jakmile je vázán na proměnnou . Opačnou alternativou k dychtivému vyhodnocení je líné vyhodnocení , kdy se výrazy vyhodnocují pouze tehdy, když se hodnotí závislý výraz v závislosti na definované strategii hodnocení .

Mezi účinky dychtivého hodnocení patří:

  • Kód, který je snadno srozumitelný, pokud jde o pořadí provádění, který potenciálně nemění své chování na základě změny kontextu provádění.
  • Jednodušší postup ladění ve srovnání s jinými strategiemi hodnocení díky výše uvedenému.
  • Odpovědnost za výkon kódu je však posunuta směrem k programátorovi, což vyžaduje pečlivý proces optimalizace kódu .

Imperativní programovací jazyky, kde je pořadí provádění implicitně definováno strukturou zdrojového kódu, téměř vždy používají dychtivé vyhodnocení, aby se zabránilo neočekávanému chování, které může nastat v určitých kontextech při provádění mimo pořadí (např. Při použití vícevláknového softwaru , souběžné spuštění kódu atd.). Toto neočekávané chování může vést k datovým rasám , porušení atomicity a dalším potenciálně nežádoucím a těžko kontrolovatelným chybám a efektům.

Mnoho moderních překladačů dokáže přeuspořádat provádění, aby lépe optimalizovalo prostředky procesoru, a často může zcela vyloučit zbytečné výrazy, pokud lze určit, že výsledky výrazů nejsou viditelné pro zbytek programu . To by však nemělo odklonit tok kompilovaného programu od strategie hodnocení definované programovacím jazykem, do kterého je kompilovaný kód zapsán, s výraznou výjimkou potenciálních chyb zavedených kompilátorem. Aby se tomuto problému zabránilo, většina (ne-li všechny) moderní jazyky na vysoké úrovni poskytují konstrukce, které umožňují programátorovi směrovat kompilátor s ohledem na jeho vlastní optimalizaci. Jako příklad použití zámku konstrukce na úrovni bloku v C # umožňuje programátorovi definovat blok kódu, který má být proveden ve stejném pořadí, v jakém byl definován ve zdrojovém kódu, což účinně zakazuje kompilátoru provádět jakékoli operace opětovného řazení na tomto bloku kódu.

Kódování kostela

Ve skupinovém rámečku kódování Church , touží vyhodnocení operátorů mapuje přísného hodnocení funkcí; z tohoto důvodu se přísné hodnocení někdy nazývá „dychtivé“.

Viz také

Reference