La programación funcional puede ayudarnos a crear software más robusto, mantenible y fácil de testear. Quizás hayas empezado a oír hablar de lenguajes de programación funcional como Scala, Haskell o Lisp, pero quizá no sepas todavía que Java en su versión 8 permite usar la potencia de la programación funcional sin abandonar su orientación a objetos.

Pero, ¿qué hace que lenguajes como C, C++ o Java adopten la programación funcional? ¿Porqué es buena idea aprenderla?

Desde que empiezas a programar con Java te enseñan qué es un lenguaje de programación orientado a objetos y que Java es uno de ellos. Te enseñan a programar de manera imperativa y es como has programado desde entonces. Con estas herramientas tienes que crear la mejor solución posible y hasta hoy no ha ido mal. Pero, ¿y si te digo que hay una forma mejor de llegar a esas soluciones?

En la programación declarativa no definimos cómo queremos resolver un problema, sino que definimos cuál es el problema. Un ejemplo sencillo para comparar estas dos formas de programar es encontrar en una lista de colores si tenemos el color “red”:

boolean hasRed = false;
for(String color: colors){
    if(color.equals("red")) {
        hasRed = true;
        break;
    }
}

System.out.println("Existe el color rojo? " + hasRed);

En este código hemos definido cómo encontrar el color red dentro de nuestra lista. Esta forma de hacerlo es muy verbosa y nos hace tener que definir una variable hasRed para marcar si se ha encontrado o no, lo que hace que este código sea propenso a errores (si bien, el ejemplo es demasiado sencillo como para cometerlos pero ¿Se entiende la idea no?).

En la programación declarativa simplemente decimos “Quiero hacer esto” y el “cómo” queda oculto y es mejor que quede oculto pues el código se clarifica.

Por ejemplo:

personas.select{|persona| persona.edad > 25}

Esta solución es más concisa, más clara y más fácil de entender por cualquier persona. Podríamos no saber que es exactamente lo que hace el método contains pero realmente no importa, lo más importante es que sabemos que el método contains nos dirá si el color “red” existe o no en la lista de colores. Por suerte, para este ejemplo el API de Java nos provee del método contains, que nos ayuda a hacer nuestro código más legible, pero no siempre tendremos esa suerte.

Si quieres tener código más legible y además, más rápido de realizar, es altamente conveniente que aprendas programación funcional. Ruby y Python son lenguajes orientados a objetos que han implementaron desde hace tiempo este paradigma. Por ejemplo, dada una lista de personas, seleccionar las que tengan más de 25 años. Ruby resuelve este problema de manera en verdad bella.

personas.select{|persona| persona.edad > 25}

Pero si eres un programador en Java, puede que te convenga más el aprender programación funcional en Java que aprender un lenguaje nuevo desde cero y, a decir verdad, Java lo hace maravillosamente también.

En kodikas hemos preparado el curso “Aprende programación funcional con Java 8” en el cual, por medio de muchísimos ejemplos prácticos podrás aprender este paradigma de programación en Java.

Te invitamos a inscribirte en este curso dando clic en el enlace de abajo:

imagen_del_curso

https://www.udemy.com/aprende-programacion-funcional-con-java-8/?couponCode=CUPWEBSITE999

Si quieres conocer más sobre la programación funcional en Java o tienes dudas o sugerencias, déjanos tus comentarios y dinos también qué te pareció este artículo.