Sei sulla pagina 1di 9

INGENIERIA EN SISTEMAS

COMPUTACIONALES

PROGRAMACION LOGICA Y
FUNCIONAL
PROYECTO INTEGRADOR:
EVALUACION PEREZOSA.
Docente: LIC. ANTONIO CAB BALAM
8 SEMESTRE
GRUPO B
FECHA: 11/05/2015

Conceptos bsicos de la evaluacin perezosa.


Evaluacin perezosa
El mtodo de evaluacin (la forma en que se calculan las expresiones) se llama
evaluacin perezosa (lazyevaluation). Con la evaluacin perezosa se calcula una
expresin (parcial) solamente si realmente se necesita el valor para calcular el
resultado. El opuesto es la evaluacin voraz (eagerevaluation). Con la evaluacin
voraz se calcula directamente el resultadode la funcin, si se conoce el parmetro
actual.
Dada la evaluacin perezosa del lenguaje es posible tener listas infinitas. En
lenguajes que usan evaluacin voraz (como los lenguajes imperativos), esto no es
posible.

Los beneficios de la evaluacin perezosa son:

El incremento en el rendimiento al evitar clculos innecesarios, y en tratar

condiciones de error al evaluar expresiones compuestas.


La capacidad de construir estructuras de datos potencialmente infinitas.
La capacidad de definir estructuras de control como abstracciones, en lugar
de operaciones primitivas.

La evaluacin perezosa puede tambin reducir el consumo de memoria de una


aplicacin, ya que los valores se crean solo cuando se necesitan. Sin embargo, es
difcil de combinar con las operaciones tpicas de programacin imperativa, como
el manejo de excepciones o las operaciones de entrada/salida, porque el orden de
las operaciones puede quedar indeterminado.

Estrategia de la evaluacin perezosa


Una estrategia de evaluacin es un conjunto de reglas para evaluar expresiones
en un lenguaje de programacin. Una estrategia de evaluacin define cuando y en
qu orden los argumentos a una funcin son evaluados, cuando se sustituyen en
la funcin, y lo que la sustitucin se forman. Las estrategias de evaluacin se
dividen en dos grupos bsicos, estrictos y no estrictos, basados en cmo se
manejan los argumentos de una funcin.
Estrategias bsicas
Una expresin que consta de una funcin aplicada a uno o ms parmetros y que
puede ser reducida, aplicando dicha funcin se le denomina redex o expresin
reducible. Existen de tres tipos:

De adentro hacia afuera o call-by-value


De afuera hacia dentro o call-by-name.
Evaluaciones que no terminan

De adentro hacia afuera


Estrategia que elige el redex que est ms adentro, entendiendo por esto al redex
que no contiene otro redex. Si existe ms de un redex que cumple dicha
condicin, se elige el que est ms a la izquierda.

De afuera hacia adentro


Este elige el redex que est ms afuera, entendiendo por esto al redex que no
est contenido en otro redex. Si existe ms de un redex que cumple dicha
condicin, se elige el que est ms a la izquierda.
Evaluaciones que no terminan.
Tenga en cuenta que la exprecin:
inf= 1+ inf
Intenta reducir la exprecininf nos va dar como resultado una exprecin ms y
ms grande (independientemente de la estrategia que usemos) inf.
Tcnicas de programacin funcional perezosa
La semntica adoptada para el no determinismo es la de eleccin en la
invocacin, por resultar ms natural para la programacin y ms eficaz en la
ejecucin alcorresponderse con el mecanismo de comparticin.
En el no determinismo existen varias tcnicas como:

Tcnica de BACKTRAKING: si una alternativa falla, el flujo retorna hasta la

ltima decisin e intenta otra.


Tcnica de GUARDS: si ms de una es cierta, se escoge cualquiera de

ellas.
Tcnica de aprendizaje reforzado: recordar decisiones exitosas y aumentar
su prioridad as como considerar las decisiones en el contexto del estado
mutable.

Investigar y demostrar, al menos, una tcnica de


programacin funcional perezosa.

En esta se genera una lista con todas las posibles respuestas,

generamos una lista vaca, en el cual cuando se encuentre vaca entonces


se toma la cabeza para obtener una respuesta. Este caso la evaluacin
perezosa se en caga de optimizar el procedimiento.

Mapa conceptual:

Conclusiones:
Jos Donaciano Martin Pool:En conclusin como ya hemos visto existendiferentes
paradigmas de programacin, mismas que son de gran utilidad endiversas reas,
en donde se pueden aplicar. En cuestin al paradigma funcionales,como ya hemos
analizado existen diversos lenguajes de programacin funcional,como los son
Lisp, Haskell, ml, entre otras. Entre algunas caractersticas estn las una llamada
la evaluacin perezosa misma, que consiste en una estrategia de evaluacinque
retrasa el clculo de una expresin hasta que su valor sea necesario, y
quetambin evita repetir la evaluacin en caso de ser necesaria en

posterioresocasiones. Esta comparticin del clculo puede reducir el tiempo de


ejecucinde ciertas funciones de forma exponencial, comparado con otros tipos
deevaluacin, es decir, la optimizacin de cdigo. En este trabajo hemos analizado
cada concepto importante sobre la evaluacin perezosa, mismo que nos han
ayudado a poder entender mejor esta tcnica. Adems de analizar ciertos
beneficios que nos ofrece esta tcnica, tales como: la optimizacin de cdigo,
construir estructuras de datos potencialmente infinitas y la capacidad de definir
estructuras de control como abstracciones. Por ultimo analizamos algunas de las
tcnicas que utiliza la evaluacin perezosa, entre esta podemos identificar las
siguientes: de adentro hacia afuera o call-by-value, de afuera hacia dentro o callby-name, evaluaciones que no terminan, todos estos muy importantes para poder
comprender mejor la manera de cmo trabaja la evaluacin perezosa.

Lorenzo Eduardo May Mex:La evaluacin perezosa ha incremento en el


rendimiento al evitar clculos innecesarios, y en tratar condiciones de error al
evaluar expresiones compuestas. La capacidad de construir estructuras de datos
potencialmente infinitas. La capacidad de definir estructuras de control como
abstracciones, en lugar de operaciones primitivas. La evaluacin perezosa puede
tambin reducir el consumo de memoria de una aplicacin, ya que los valores se
crean solo cuando se necesitan. Sin embargo, es difcil de combinar con las
operaciones tpicas de programacin imperativa, como el manejo de excepciones
o las operaciones de entrada/salida, porque el orden de las operaciones puede
quedar indeterminado. Adems, la evaluacin perezosa puede conducir a

fragmentar la memoria, lo contrario de la evaluacin perezosa sera la evaluacin


acaparadora, o evaluacin estricta, que es el modo de evaluacin por defecto en
la mayora de los lenguajes de programacin. Los lenguajes funcionales son una
familia de lenguajes que la mayora de los programadores conoce de odas, pero
desgraciadamente no muchos conocen suficientemente bien ya que no es un
lenguaje para aplicaciones de escritorio. Aprender un lenguaje funcional lo
suficiente como para tener unas nociones e inspirarse, no tiene por qu llevar
mucho tiempo. Adems, no slo disponemos de Internet, sino tambin de
excelentes libros que estn pensados precisamente para programadores que
vienen de otros lenguajes. El resto de este artculo explora algunas tcnicas,
buenas costumbres e ideas comunes en lenguajes funcionales, que podemos
aplicar fcilmente en otros lenguajes. Por supuesto, algunas de estas lecciones se
pueden aprender simplemente por experiencia, y no son necesariamente
exclusivas de los lenguajes funcionales.

Referencias:

Bibliografa
Introduccin a la Programacin Funcional. (s.f.). Obtenido de
http://www.uhu.es/nieves.pavon/pprogramacion/funcional/tema1f.html
Juan Carlos Guzman. (s.f.). Evaluacion perezosa. Obtenido de
http://ldc.usb.ve/~suarez/papers/lazyOpt.pdf
Udpar. (7 de Mayo de 2015). Estrategias de evaluacion perezosa. Obtenido de
http://uqbar-wiki.org/index.php?title=Estrategias_de_Evaluaci%C3%B3n

Potrebbero piacerti anche