jueves, 1 de mayo de 2014

R.A.2.1

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)


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 estrictaasignació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