Evaluación perezosa

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 2 de febrero de 2019; las comprobaciones requieren 3 ediciones .

La evaluación perezosa ( eng.  evaluación perezosa , también evaluación diferida ) es una estrategia de cálculo utilizada en algunos lenguajes de programación , según la cual los cálculos deben posponerse hasta que se necesite su resultado. La evaluación perezosa se refiere a la evaluación no estricta . Un modelo mejorado de evaluación perezosa, la evaluación optimista  , se está moviendo hacia la categoría de estrategias de evaluación no deterministas .

Los cálculos perezosos le permiten reducir la cantidad total de cálculos debido a esos cálculos, cuyos resultados no se utilizarán. El programador puede simplemente describir las dependencias de las funciones entre sí y no asegurarse de que no se realicen "cálculos excesivos".

La evaluación perezosa cayó naturalmente en el paradigma de la programación funcional , ya que los lenguajes de programación funcional que implementan la evaluación perezosa se han establecido como herramientas convenientes para la creación de prototipos y el desarrollo rápido de software, así como para el diseño de dispositivos informáticos electrónicos .

Algunos lenguajes de programación que implementan evaluación perezosa:

Para usar la evaluación diferida, no se requiere soporte incorporado en el lado del lenguaje de programación; en muchos casos, la evaluación diferida se puede implementar por cualquier medio disponible. Por ejemplo, en la práctica de muchos lenguajes, se usa ampliamente el patrón de diseño de " inicialización perezosa " , que prescribe transferir la ejecución de operaciones intensivas en recursos para crear objetos u obtener un valor inmediatamente antes de su uso. Se han creado bibliotecas para varios lenguajes que proporcionan una evaluación diferida, por ejemplo, para JavaScript , estas son Streams.js , linq.js , Immutable.js y node-lazy .

Enlaces