0% encontró este documento útil (0 votos)
98 vistas21 páginas

Programación Funcional

La programación funcional es un paradigma de programación declarativo basado en funciones matemáticas. Se centra en definir problemas mediante expresiones sin efectos secundarios, en lugar de cómo resolverlos imperativamente. Lenguajes funcionales populares incluyen Lisp, Haskell, ML y funciones de orden superior permiten pasar funciones como argumentos o devolverlas.

Cargado por

Sandraw
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
98 vistas21 páginas

Programación Funcional

La programación funcional es un paradigma de programación declarativo basado en funciones matemáticas. Se centra en definir problemas mediante expresiones sin efectos secundarios, en lugar de cómo resolverlos imperativamente. Lenguajes funcionales populares incluyen Lisp, Haskell, ML y funciones de orden superior permiten pasar funciones como argumentos o devolverlas.

Cargado por

Sandraw
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 21

1

Introducción

Un paradigma de programación consiste en un método para llevar a


cabo cómputos y la forma en la que deben estructurarse y organizarse
las tareas que debe realizar un programa.
Se trata de una propuesta tecnológica adoptada por una comunidad
de programadores, y desarrolladores cuyo núcleo central es
incuestionable en cuanto que únicamente trata de resolver uno o
varios problemas. 2
Un paradigma de programación está delimitado en el tiempo en
cuanto a aceptación y uso, porque nuevos paradigmas aportan
nuevas o mejores soluciones que lo sustituyen parcial o totalmente.

Los paradigmas tienen varias clasificaciones y distintos enfoques los


cuales determinan para que se usan y en qué.
Se dividen en:
• Paradigma Imperativo.
• Paradigma Declarativo.
• Programación Funcional.
• Programación Lógica.
• Programación Reactiva (Dataflow)
3
Programación Funcional

• Esta basado en los modelos de cómputo cálculo lambda el cual es


un sistema formal diseñado para investigar la definición de función.

• La noción de aplicación de funciones y la recursión y en la lógica


combinatoria es la lógica, puede ser un modelo simplificado del
cómputo, la teoría el estudio de qué se puede probar
matemáticamente y sólo considera funciones lógicas en las que el
resultado depende de las entradas.

• Las funciones son elementos de primer orden.


4
Evaluación por reducción funcional:

• Técnicas
• Recursividad
• Parámetros acumuladores
• CPS
• Mónadas

5
Familia LISP:

• Basados en s-expresiones
• Tipado débil
• Meta-programación

Familia ML:

• Sistema estricto de tipos


• Concordancia de patrones
• Transparencia referencial
• Evaluación perezosa
6
El paradigma de programación funcional pura comparte, junto
con el de programación lógica, características de programación
declarativa
La característica fundamental del paradigma declarativo es que
no existe la asignación ni el cambio de estado en un programa.
Las variables son identificadoras de valores que no cambian en
toda la evaluación (como constantes definidas con un DEFINE
de C).

7
Sólo existen valores y expresiones matemáticas que devuelven
nuevos valores a partir de los declarados.
En los lenguajes imperativos, sin embargo, se realizan
asignaciones que cambian el valor de una variable ya existente.

Los lenguajes declarativos tienen una interesante propiedad de


optimización:

• Si una expresión e aparece en varios lugares dentro de un


mismo ámbito, sólo es necesario evaluarla una vez.

8
• En la programación declarativa no definimos cómo queremos
resolver un problema, sino que definimos cuál es el problema.
• En los casos en los que tengamos que crear nuestros propios
métodos podemos usar la programación funcional, que es
declarativa y por tanto nos puede ayudar a hacer nuestro
código más limpio.

9
Programación Funcional.
Definición:
“Functional programing”, ya lo sugiere, se centra en funciones.
La programación funcional es más relevante hoy
Está basado en modelos de cómputo cálculo lambda y lógica
combinatoria
Funciones Lambda:
• No necesita ser declarada más que donde va a ser llamada
• No tiene nombre
Facilita la programación funcional 10
• Tiene amplias opciones de transformación algebraica de
programas
• Sencillas opciones de análisis semántico al renunciar a los
efectos secundarios
• Desaparición de estados internos, a diferencia de la
programación imperativa
• Función de Orden superior, ya que toma argumentos de otras
funciones y las puede retornar como el resultado de su 11

ejecución.
Por último, podemos decir de la programación funcional se
ve enriquecida por estos dos grandes puntos, que al parecer
sencillos son los cimientos de este paradigma.
Al contar con un alto grado de abstracción ya que está
basado en el principio matemático y el de función
Al aplicarse de manera correcta nos brinda un código más preciso.

12
Lisp

Es una familia de lenguajes de programación de computadora


de tipo multiparadigma con larga historia y una inconfundible y
útil sintaxis basada en la notación polaca. Desarrollado
originalmente en 1958 por John McCarthy y sus colaboradores en
el Instituto Tecnológico de Massachusetts, Lisp es el segundo
lenguaje de programación de alto nivel de mayor antigüedad

(format t "¡Hola, mundo!" 13


Fue desarrollado inicialmente por Robert Gentleman y Ross Ihaka
del Departamento de Estadística de la Universidad de Auckland
en 1993, nació como una re implementación de software libre
del lenguaje S
> x <- 1 # Esto es un comentario
> print(x)
[1] 1
> x # Evaluar la expresión
[1] 1
> texto <- "hola mundo"
> texto 14

[1] "hola mundo"


Es un lenguaje de programación multiparadigma de código
abierto para la plataforma .NET, que conjunta la programación
funcional con las disciplinas imperativa y orientada a objetos. fue
inicialmente desarrollado por Don Syme de Microsoft Research
// Esto es un comentario para el programa de ejemplo Hello
World.
printfn "Hello World!"

15
La programación funcional es un paradigma declarativo, es decir nos enfocaremos en
que estamos haciendo y no en como se esta haciendo, también es enfoque
imperativo esto quiere decir que nosotros estaremos utilizando nuestra lógica, sin
escribir controles de flujo, no se puede usar ciclos o condiciones, veamos un ejemplo
utilizando la programación funcional.
//imperativo
Inicio
Entero contador=0
Para numero=1 hasta numero=8
Contador = contador + numero
Fin para
Imprimir contador

16
//con función
Entero función suma()
Inicio
Volver (8*(8+1))/2
Fin

Como podemos darnos cuenta es mas fácil y legible programar con funciones estos
códigos, primero se filtra y posteriormente se suma.
La programación funcional no es nada mas que un paradigma de programación, es
decir, es una forma por la cual podemos resolver diferentes problemáticas.:
Imperativo
Int contador = 0;
For(int numero : numeros)
{
If(numero > 10) {
Contador ++;
}
}
System.out.println(contador);
17
//Declarativo
Long resultado = números.stream().filter(n -> n > 10).count();
System.out.println(resultado);

boolean hasRed = false;


for (String color : colors) {
if (color.equals("red")) {
hasRed = true;
break;
}
}
System.out.println("Has color red? " + hasRed);

18
boolean hasRed = false;
for (String color : colors) {
if (color.equals("red")) {
hasRed = true;
break;
}
}
System.out.println("Has color red? " + hasRed);

Utilizando el estilo declarativo:


Sytem.out.println("Found chicago?:" + cities.contains("Chicago");

19
Actualmente contamos con una gran cantidad de lenguajes en donde podemos
hacer uso de la programación funcional, por ejemplo :

Java
PHP
Ruby
Python
Elixir
Kotling
Haskell 20
Erlang
Muchos de estos lenguajes no están cien por ciento enfocados
en la programación funcional, lo cual no es malo, de hecho,
estos nos permite hacer una transición de un paradigma a otro,
comúnmente de la programación orientada a objetos ha
programación funcional.

CONCLUSIÓN
La programación funcional nos permitirá desarrollar software
mucho más legible y fácil de testear, nos concentramos en qué
estamos haciendo y no en cómo se esta haciendo

21

También podría gustarte