programacion funcional

 ¿que es programacion funcional?




La programación funcional nos es más que un paradigma de programación, es decir, es una forma en la cual podemos resolver diferentes problemáticas.

Functional Programming (Programación Funcional), comúnmente abreviado FP.

Cuando nos encontramos desarrollamos software utilizando este paradigma, estaremos trabajando principalmente con funciones, evitaremos los datos mutables, así como el hecho de compartir estados entre funciones.

Con este paradigma las funciones serán tratadas como ciudadanos de primera clase. Las funciones podrán ser asignadas a variables además podrán ser utilizadas como entrada y salida de otras funciones.

A las funciones que puedan tomar funciones como parámetros y devolver funciones como resultado serán conocidas como función de orden superior.

La programación funcional es un paradigma declarativo. Nos enfocaremos en "qué" estamos haciendo y no en "cómo" se está haciendo que sería el enfoque imperativo. Esto quiere decir que nosotros expresaremos nuestra lógica sin describir controles de flujo; no usaremos ciclos o condicionales.

Veamos un ejemplo utilizando Java.

Java, cómo sabemos es un lenguaje orientado a objetos, sin embargo, en versiones recientes nosotros podemos hacer uso de la programación funcional.

En este ejemplo, la problemática es conocer la cantidad de elementos en la lista mayores a 10.

List<Integer> numeros = List.of(18, 6, 4, 15, 55, 78, 12, 9, 8);

Nosotros podemos resolver la problema utilizando ciclos y condicionales. Este sería el enfoque imperativo.

//Declarativo.
List<Integer> numeros = List.of(18, 6, 4, 15, 55, 78, 12, 9, 8);

int contador = 0;
for(int numero : numeros) {
    if(numero > 10) {
        contador ++;
    }
}
System.out.println(contador);

El enfoque imperativo sería el siguiente.

//Imperativo
Long result = numeros.stream().filter(num -> num > 10).count();
System.out.println(result);

Cómo observamos, con el enfoque imperativo las líneas de código se reducen y nuestro código se torna más legible.

Personas que no tengan conocimientos de programación podrían comprender el funcionamiento del programa. Primero se filtra y posteriormente se suma.

En esta última implementación podemos concluir que es funcional, ya que delega el control de flujos y condiciones a funciones (filter y sum).

Al trabajar con programación funcional, nos toparemos con conceptos tales cómo:

  • Funciones puras.
  • Composición de funciones.
  • Estados compartidos.
  • Mutabilidad.
  • Efecto secundario.

Comentarios