ELABORAR RUTINAS EN PSEUDOCODIGO MEDIANTE RECURSIVIDAD PARA SU
APLICACIÓN EL LENGUAJES DE PROGRAMACIÓN FUNCIONAL.
A)Programa funcional
- Concepto
- Características
- Lenguajes funcional
B)Programación funcional con
recursividad
- Sistema de tipos
- Técnicas de programación
recursividad
- Modelos de evaluación
- Clases de tipos
- Aplicaciones de rutina en
pseudocodigo
A)PROGRAMA FUNCIONAL
Es un paradigma de programación declarativa basado
en la utilización de funciones aritméticas que no maneja datos
mutables o de estado. Enfatiza la aplicación de funciones, en contraste con el
estilo de programación imperativa, que enfatiza los cambios de estado. La
programación funcional tiene sus raíces en el cálculo lambda, un sistema
formal desarrollado en los años 1930 para investigar la definición de función,
la aplicación de las funciones y la recursión. Muchos lenguajes de programación
funcionales pueden ser vistos como elaboraciones del cálculo lambda.
LENGUAJES FUNCIONALES
Los lenguajes funcionales se basan en la declaración de
funciones aritméticas, trata de ser un lenguaje expresivo y matemáticamente
elegante.
Los programas escritos en lenguajes funcionales están
compuestos únicamente por la definición de funciones, pero no se trata de
subrutinas de un programa iterativo, sino más bien como funciones puramente
matemáticas.
Los lenguajes funcionales son: Haskell, Miranda, R,
Lisp, Scala, Scheme, ML, Erlang entre otros.
TIPOS
Haskell
Es un lenguaje de programación estandarizado
multi-propósito puramente funcional con semánticas no estrictas
y fuerte tipificación estática. Su nombre se
debe al lógico estadounidenseHaskell Curry.
En Haskell, "una función es un ciudadano de primera clase" del
lenguaje de programación. Como lenguaje de programación funcional, el
constructor de controles primario es la función. El lenguaje tiene sus orígenes
en las observaciones de Haskell Curry y sus descendientes intelectuales.
--Función recursiva para calcular el
factorial de un número
factorial :: (Integral a) => a -> a
factorial 0 = 1
factorial
n = n * factorial (n - 1)
Miranda
La solución a muchos ejemplos de programas resulta más simple
en Miranda que en la mayoría de los lenguajes de programación excepto
quizás APL,
y como otros lenguajes funcionales, sus usuarios comentan que este les permite
producir programas fiables en un menor período en comparación con el otros
lenguajes de programación usados anteriormente
Por ejemplo:
add a
b = a + b
increment
= add 1
Lenguaje
R
Es un lenguaje para análisis estadístico y gráfico creado
por Ross Ihaka y Robert Gentleaman.
Los análisis gráficos pueden ser visualizados en su propia
ventana, permitiendo ser guardada en varios formatos(pdf, png, etc), mientras
que los resultados de análisis estadísticos los podemos ver en la misma
pantalla.
Lo que yo hice en R es una gráfica con valores al azar:
> x <- rnorm(10)
> y <- rnorm(10)
> plot(x, y)
> y <- rnorm(10)
> plot(x, y)
Lisp
Lisp es un
lenguaje tipo funcional, es el segundo lenguaje de alto nivel más viejo, los
dialectos de Lisp más ampliamente conocidos son el Scheme y Common Lisp.
El nombre Lisp viene de "LISt Processing" (Proceso
de LIStas). Una de las estructuras de datos importante de Lisp son las listas
encadenadas, el código fuente de lisp esta compuesto de listas.
Es un lenguaje útil para desarrollar la inteligencia
artificial.
Para empezar a programar en Lisp lo primero que hice fué
instalar clisp:
Scala
Es un lenguaje de programación multi-paradigma
diseñado para expresar patrones comunes de programación en forma concisa,
elegante y con tipos seguros. Integra sutilmente características de lenguajes funcionales y orientados a objetos. La
implementación actual corre en la máquina virtual de Java y es
compatible con las aplicaciones Java existentes.
object HolaMundo {
def main(args: Array[String]) =
println("Hola mundo")
}
Scheme
Es un lenguaje funcional (si bienimpuro pues
sus estructuras de datos no son inmutables) y un dialecto de Lisp. Fue desarrollado por Guy L. Steele y Gerald Jay Sussman en
la década de los
setenta e introducido en el mundo académico a través de una
serie de artículos conocidos como losLambda Papers de
Sussman y Steele.
La expresión let con nombre y la sentencia do son azúcar sintáctica que simplifica las
definiciones con recursión final.
(define (factorial n)
(let loop ((fact 1)
(n n))
(cond ((= n 0) fact)
(else (loop (* n fact) (- n 1))))))
(factorial 5)
;; => 120
(define (map f lst)
(do ((lst lst (cdr lst))
(res '() (cons (f (car lst)) res)))
((null? lst) (reverse res))))
(map (lambda (x) (* x x)) '(1 2 3 4))
;; => (1 4 9 16)
ML
Es un lenguaje de programación de propósito general de la
familia de loslenguajes de programación funcionaldesarrollado
por Robin Milner y otros a finales de los años 1970 en
la Universidad de Edimburgo. ML es un
acrónimo de Meta Lenguaje dado que fue concebido como el lenguaje
para desarrollar tácticas de demostración en el sistema LCF (El lenguaje para
el cual ML era meta lenguaje espplambda, una combinación del cálculo de
predicados de primer orden y el lambda-cálculo polimórfico sencillamente
tipificado).
Erlang
Es un lenguaje de programación concurrente y un sistema
de ejecución que incluye una máquina virtual y biblioteca.2
El subconjunto de programación secuencial de Erlang es un lenguaje funcional, conevaluación estricta, asignación única, y tipado
dinámico. Fue diseñado en la compañía Ericsson para
realizar aplicaciones distribuidas, tolerantes a fallos, soft-real-timey de
funcionamiento ininterrumpido.
Ejemplos:
Pid = spawn(Mod, Func, Args) % ejecutar la función Func como un nuevo proceso
Pid = spawn(Node, Mod, Func, Args) % ejecutar la función Func en un nodo remoto
Pid ! a_message % enviar un mensaje al proceso (asíncronamente)
receive % recibir el mensaje enviado a este proceso
a_message -> do_something
end.
ACTICIDAD
1.
En base ala investigación
Realice un cuadro sinóptico sobre programación funcional y sus generales, un mapa
conceptual sobre los tipos de lenguaje de programación funcional considerando
las características, mencione la decencias que cree usted que tiene a programación
funcional con el tipo de programación que se a iniciado.
CUADRO SINÓPTICO:
MAPA CONCEPTUAL:
No hay comentarios:
Publicar un comentario