Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Responder Los Siguientes Ítems
Responder Los Siguientes Ítems
2017
Responder los siguientes tems:
1
incluir caractersticas propias de los lenguajes imperativos como la asignacin destructiva y los
efectos laterales que lo alejaron del paradigma funcional. A principios de la dcada de los setenta
aparecieron los primeros sntomas de lo que se ha denominado crisis del software (los productos
no son fiables, alta tasa de errores o bugs, dificultad de demostrar que el sistema cumple los
requisitos especificados). Una posible solucin fue proponer un modelo de computacin diferente
al modelo imperativo tradicional que se basa en la idea de que los problemas detectados son
inherentes al modelo computacional utilizado y su solucin no se encontrar a menos que se
utilice un modelo diferente. As nace la programacin funcional o aplicativa, cuyo objetivo es
describir los problemas mediante funciones matemticas puras sin efectos laterales. En 1978 J.
Backus trabaj mostrando las ventajas del modelo funcional por encima de las bases de la
programacin imperativa tradicional y dise el lenguaje funcional FP (Functional Programming)
con la filosofa de definir nuevas funciones combinando otras funciones.
A mediados de los 70, Gordon trabajaba en un sistema generador de demostraciones
denominado LCF que inclua el lenguaje de programacin ML (Metalenguaje). Aunque el sistema
LCF era interesante, se observ que el lenguaje ML poda utilizarse como un lenguaje de propsito
general eficiente. ML optaba por una solucin de compromiso entre el modelo funcional y el
imperativo ya que, aunque contiene asignaciones destructivas y Entrada/Salida con efectos
laterales, fomenta un estilo de programacin claramente funcional. Esa solucin permite que los
sistemas ML compitan en eficiencia con los lenguajes imperativos. A mediados de los ochenta se
realiz un esfuerzo de estandarizacin que culmin con la definicin de SML (Stndar ML). Este
lenguaje es fuertemente tipado con resolucin esttica de tipos, definicin de funciones
polimrficas y tipos abstractos. Al mismo tiempo que se desarrollaban FP y ML, David Turner
(primero en la Universidad de St. Andrews y posteriormente en la Universidad de Kent) trabajaba
en un nuevo estilo de lenguajes funcionales con evaluacin perezosa y definicin de funciones
mediante encaje de patrones. El desarrollo de los lenguajes SASL (St. Andrews Static Language),
KRC (Kent Recursive Calculator) y Miranda tena como objetivo facilitar la tarea del programador
incorporando facilidades sintcticas como las guardas, el encaje de patrones, las listas por
comprensin y las secciones. A comienzos de los ochenta surgi una gran cantidad de lenguajes
funcionales debido a los avances en las tcnicas de implementacin. Esta gran cantidad de
lenguajes perjudicaba el desarrollo del paradigma funcional. En 1987, se decidi formar un comit
internacional que disease un nuevo lenguaje puramente funcional de propsito general
denominado Haskell. Sin embargo, se observa que a pesar de los aos transcurridos, los lenguajes
de programacin funcional han tenido xito a la hora de reemplazar a los lenguajes
convencionales en ciertas reas de aplicacin, pero no han logrado ubicarse masivamente en
aplicaciones de uso general.
2
Reglas para evaluar una expresin e de Scheme:
1. Si e es un valor primitivo, devolver ese mismo valor.
2. Si e es una variable, devolver su valor asociado.
3. Si e es una expresin del tipo (f arg1 argn), donde f el nombre de un procedimiento
primitivo (+, -, ), evaluar arg1 argn y aplicar el procedimiento al resultado.
4. Si e es una expresin del tipo (f arg1 argn), donde f es el nombre de un procedimiento
compuesto (definido con un define), sustituir f por su cuerpo, reemplazando cada
parmetro formal del procedimiento por el correspondiente argumento evaluado.
Evaluar la expresin resultante.