Introducción a la programación Funcional

1

Programación Funcional en Java: Conceptos y Aplicaciones Prácticas

Entendiendo las partes de la programación funcional

2

Funciones en Programación Funcional: Conceptos Básicos

3

Funciones como Ciudadanos de Primera Clase en Programación

4

Funciones Puras: Concepto y Ejemplos Prácticos

5

Efectos Secundarios en Programación y su Impacto en el Código

6

Funciones de Orden Superior en Programación

7

Funciones Lambda en Programación Funcional Java

8

Inmutabilidad de Datos en Programación Funcional con Java

Functional Programming en Java

9

Programación Funcional en Java SE: Conceptos y Prácticas

10

Programación Funcional en Java: Práctica y Ejemplos en IntelliJ

11

Programación Funcional en Java: Creación y Uso de Funciones

12

Programación Funcional con Predicados en Java

13

Interfaz Consumer y Supplier en Java: Uso y Ejemplos Prácticos

14

Funciones Java para Transformación de Datos y Operaciones Binarias

15

Creación y Uso de Interfaces Funcionales Personalizadas en Java

16

Métodos de Referencia en Programación Funcional Java

17

Inferencia de tipos en Java: funciones y métodos

18

Uso de Expresiones Lambda en Java: Sintaxis y Aplicaciones

19

Interfaz Funcional en Java: Creación y Uso de Métodos Default

20

Encadenamiento de Llamadas en Programación Orientada a Objetos

21

Composición de Funciones en Programación Funcional

Optional y Streams: Datos mas interesantes

22

Uso de la Clase Optional en Java para Manejo de Valores Nulos

23

Manipulación de Streams en Java: Operaciones y Limitaciones

24

Programación Funcional en Java: Uso de Streams y Operaciones Terminales

25

Operaciones de Stream en Java: Intermedias y Finales

26

Operaciones y Concurrente con Stream en Java

27

Operaciones Terminales en Java Streams

28

Operaciones Intermedias en Streams de Java

29

Conversión de Strings a Listas de Enteros en Java

Todo junto: Proyecto Job-search

30

Construcción de Proyecto para Buscar Empleo Usando APIs

31

Configuración y Uso de Gradle en Proyectos Java con IntelliJ

32

Creación de una Herramienta de Búsqueda de Trabajo en Terminal

33

Creación de Puntos de Entrada y Dependencias en Proyectos Java

34

Creación de APIs RESTful con Feign y Spring Boot

35

Creación de una Interfaz de Línea de Comandos con JCommander

36

Validación de Argumentos en Terminal con Clases en Ciel

37

Procesamiento de Argumentos y Solicitudes API en Java

38

Creación de API para búsqueda de empleos con Java y CLI

Conclusiones

39

Programación Funcional en Java: Conceptos y Aplicaciones

Programación Funcional en Java: Conceptos y Aplicaciones Prácticas

1/39
Recursos
Transcripción

¿Qué es la programación funcional?

La programación funcional ha ganado popularidad en los últimos años, pero sigue rodeada de ciertos mitos sobre su dificultad. En esencia, es un paradigma de programación, es decir, un estilo de programar que se centra en la resolución de problemas de una manera específica. Aunque muchos piensan en ella como un campo reservado para expertos en cálculos complejos, lo cierto es que es accesible, incluso en lenguajes orientados a objetos como Java.

¿Cómo influye la programación funcional en Java?

Java, tradicionalmente un lenguaje orientado a objetos, ha incorporado características de programación funcional desde su versión 8. Esto ofrece a los desarrolladores la posibilidad de aplicar este paradigma sin cambiar de lenguaje.

  • Funciones: Son bloques de código que no necesitan pertenecer a una clase.
  • Inmutabilidad: Se trabaja con datos que no cambian su estado, lo cual facilita la concurrencia.

¿Cuáles son los beneficios de la programación funcional?

Este enfoque tiene varios beneficios:

  • Legibilidad: Las funciones se centran en qué resolver, no en cómo hacerlo, facilitando la comprensión del código.
  • Pruebas: Es más sencillo testear funciones individuales que sistemas completos.
  • Concurrencia: Permite liberar múltiples procesos simultáneamente de manera más sencilla.
  • Comportamientos claros: Con funciones simples, el comportamiento del sistema se vuelve más definido.
  • Gestión de estados: Minimiza el manejo de estados al enfocarse más en las funciones y los datos.

¿Cómo comenzar con programación funcional en Java?

Java ya incluye las herramientas necesarias para adoptar la programación funcional. No necesitas integrar librerías de terceros ni aprender un nuevo lenguaje. Puedes:

  1. Explorar funciones lambda: Representan funciones anónimas y son esenciales en este paradigma.

    // Ejemplo de función lambda en Java
    List<String> nombres = Arrays.asList("Ana", "Pedro", "Juan");
    nombres.forEach(nombre -> System.out.println(nombre));
    
  2. Utilizar Streams: Facilitan operaciones sobre colecciones de datos, desde filtrados hasta mapeos.

  3. Implementar inmutabilidad: Usa estructuras de datos inmutables para mejorar rendimiento y seguridad.

La programación funcional en Java es más que una moda; es una herramienta poderosa que simplifica el código y potencia las aplicaciones. Si eres desarrollador, considera incorporarla en tu día a día para aprovechar sus múltiples ventajas.

Aportes 50

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Lo estaba esperando desde que anahí dijo que lo harian xD

Ese carnal fue mi profe en la uni , ❤️ Sier

Beneficios de la programación funcional:

  • Testing: al tener el código más granular, se facilita la ejecución de pruebas.

  • Legibilidad: funciones más explicitas en cuanto a lo que hacen y no en como lo hacen.

  • Comportamientos más definidos: los comportamientos son definidos a traves de funciones simples (siendo estas faciles de entender).

  • Concurrencia: es posible liberar muchos procesos simultaneos a partir de una sola función.

  • Menos manejo de estados: no nos preocupamos por la complejidad que puede agregar otros paradigmas de programación como POO.

  • No hay que instalar nada adicional: es natural en Java.

Necesitaba mucho este curso. En mi empresa no aceptan un pull request si no sigue este paradigma.

Nice T-shirt 😃

Otras características de la Programación funcional:

  • En el paradigma de la programación funcional, un programa se considera una función matemática, la cual describe una relación entre una entrada y una salida y donde el concepto de estado o variable se elimina completamente.
  • Fácil de combinar con la programación orientada a objetos
  • Uso de listas como estructuras de datos fundamentales. No hay bucles, solo vas a iterar arrays o listas.
  • En la programación funcional no existen los bucles “for” y “while”. En su lugar, para la iteración se depende de la recursividad.
  • Funciones como tipos de datos primitivos: expresiones lambda y funciones de orden superior.

¿Qué es la programación funcional?
La programación funcional es una forma de programar, un estilo de programación. Es un estilo más enfocado a tener casos específicos en el cual nos preocupamos en qué resolver.
En Java veremos dos cosas:
Funciones
Datos

Básicamente la programación funcional se enfoca en qué resolver, no en cómo resolverlo.
Lo importante es tener una función que pueda resolver el problema, no importa su procedencia.
En la parte de los datos vamos a aprender que son los datos mutables e inmutables. Esto es muy importante porque nos va a diferentes tipos de funciones según los datos que tengamos.

Beneficios de la programación funcional

  • Legibilidad: Vamos a estar enfocados en qué resolver es decir, nuestras funciones van a ser más explícitas en cuanto a qué es lo que hacen, no en cómo lo hacen.
    Testing: Va a ser más fácil hacer pruebas porque, al tener nuestras funciones separadas resolviendo pequeños problemas, es más fácil hacer una prueba de una sola función que tener que resolver todo el sistema.
    Concurrencia: Más fácil y didáctica porque podemos liberar muchos procesos simultaneos a partir de la misma función. No necesitamos tener control de los objetos que existen en memoria porque tenemos funciones únicas.
    Comportamientos más definidos: Estos comportamientos van a estar dados por funciones simples y vamos a poder leerlas rápidamente y entender qué es lo que hacen.
    Manejos de estados: Vamos a tener un menor manejo de estados. No vamos a preocuparnos por qué objeto tiene el dato en el momento que estamos funcionando sino que, nos vamos a enfocar más en simplemente si “tenemos el dato o no tenemos el dato”.

Llevo años trabajando con Java y programación funcional, pero siempre es bueno reforzar conocimientos.

Me agrada como explica este profe. Se ve bien el curso!

Este Carnal parte de la comunidad j4guanatos y es un Master en Kotlin

Ya era hora de que sacaran este curso, hay muchas ofertas de trabajo donde piden saber este paradigma y justo acabo de terminar la carrera de Java 😄

Este curso no aparece en la ruta de Java 😦

Estaba esperando este curso ! excelente!

me mato la camiseta y que ya entiendo esos chistes

Programming Functional is cool

¿Este cosquilleo de emocion en el estomago sera normal? 😬

Dato curioso, Haskell es usado para programar la criptomoneda cardano

Quien ya repetio otra vez el curso, para entenderle mejor?

o pensaba que era hal - life 3

… Vemos! necesito este curso 😃

Que buena camisa tiene el instructor.

¿Qué es la programación funcional?
La programación funcional es un estilo de programación como al que le gusta programar con objetos, es un estilo en el que nos preocupamos por qué resolver
Java 8 en adelante tiene la posibilidad de hacer programación funcional y para ello necesitaremos saber que son Funciones y Datos
Funciones
Tener una función que pueda resolver el problema no importa la procedencia
Datos
Datos mutables e inmutables, muy importante para poder dar diferentes tipos de funciones según el tipo de datos que tengamos

Beneficios programación funcional

  1. Legibilidad
    Nuestras funciones serán más explicitas en cuanto lo que hacen enfocados en resolver problema
  2. Testing
    Será más fácil tener pruebas porque al tener el código separado en funciones resolviendo pequeños problemas, es más fácil hacer una prueba de una sola función que tener que resolver todo el sistema
  3. Concurrencia
    Es posible liberar muchos procesos simultáneos a partir de una sola función
  4. Comportamientos más definidos
    Vamos a tener comportamientos más definidos dados por funciones simples, funciones que vamos a poder leer rápidamente qué es lo que hace
  5. Manejo de datos
    No nos preocupamos por la complejidad que puede agregar otro
  6. No requiere instalación adicional
    No nos tenemos que preocupar por agregar nada como algún tipo de librería de terceros

Vamos a Darle

Beneficios:

Nos enfocaremos en que resolver, explicitas en cuanto que es lo que hacen y no como lo hacen.

Resolver un problema.

Testing resolviendo pequeños problemas, pruebas de una funcion en vez de hacer pruebas en todo el sistema.

La concurrencia se hace mas facil, mas dinamica, ya que se pueden liberar muchos procesos simultaneos, apartir de la misma funcion.

No tenemos que tener control sobre los objetos que existen en memoria, por que tenemos funciones y son unicas.

Comportamientos definidos ya que tendremos funciones mas simples, estas podemos leerla rapidamente y ver que es lo que hacen.

Menor manejo de estados es decir ya no tenemos que preoparnos que objeto tiene el dato en el momento.

No hay que instalar nada ya viene incluido en el lenguaje, no tenemos que preocuparnos por librerias de terceros.

Les invito a mi charla sobre cómo manejar efectos secundarios en programación funcional con efectos algebraicos =)
https://www.meetup.com/es/Quito-Lambda-Meetup/events/mscxlpybchbkc/?fbclid=IwAR3bDlxMG-_9vIFtMwdOTnNVmFC7AgGarNEOKj73-E6galZ0D5cavXWj8WU

Wow! Vamos (^o^)

Me alegro que incluyan este curso en la carrera.
¡¡¡ Me parece brutal la remera del profesor !!!

Pongan este curso en la carrera !

Se ve bien el curso… veamos que tal 😃

Excelente introducción instructor Sinuhé, es un gusto ser parte de este curso y estoy emocionado de poder aprender este estilo de programación.

desde hace mess vengo viendo hago de lambda pero el profe recalca que hay mucho mas de lo que vemos pero que es la programación funcional otro paradigma? si lo es pero de tal forma que se centra em resolver problema de formas especificas es decir que java siendo el rey de POO pasamos a la funcional esta se centra en solucionar el problemas no importa la procedencia esto lo vemos desde java 8 en adelante y aquello va de la mano de flexibilidad , explicitidad y nos centraremos en este wow
Es un paradigma, una **forma/estilo de programar**, enfocado a tener casos específicos en el cual nos enfocamos en que resolver. Pensamos en **lambdas** cuando hablamos de programación funcional, pero no es solo eso. Desde **Java 8** en adelante, tiene la posibilidad de hacer programación funcional, entendiendo que es una función y que tipos de datos hay, podremos generar muchas partes de la programación funcional. ![Screenshot 2024-07-21 at 09.14.30.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/acc2ba89-3e1d-4074-b453-a8d7ec3f9eb9/66ac9450-a617-4e35-a5bd-56476f0602ad/Screenshot_2024-07-21_at_09.14.30.png) La programación funcional **se enfoca en que resolver y no en como resolverlo**, enfocado en resolver el problema, no en que elementos están involucrados, es tener una función que pueda resolver el problema. En la parte de datos, entenderemos los datos mutables e inmutables. **Beneficios de la programación funcional:** Legibilidad: enfocado en que resolver. Testing: Mucho más fácil, al tener el código separado en funciones resolviendo pequeños problemas. Concurrencia: Se podrán liberar muchos threads a partir de la misma función. Comportamientos mas definidos: Teniendo funciones más simples y fáciles de leer para entender lo que hacen. Menor manejo de estados: No nos preocupamos por que objeto tiene el dato, sino enfocado en si tenemos o no el dato. No hay que instalar nada adicional: El lenguaje ya contiene todo lo necesario. ![Screenshot 2024-07-21 at 09.19.45.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/acc2ba89-3e1d-4074-b453-a8d7ec3f9eb9/8a68810d-970b-4210-802d-47f1f365b673/Screenshot_2024-07-21_at_09.19.45.png)
Empiezo hoy este curso, espero terminarlo con muchas más ganas de aprender!
Vengo de usar programación funcional en Rust, Clojure ahora estoy trabajando en java y necesito aplicar este concepto genial, la explicación del profe se ve que es muy académico. Honestamente cada vez me gusta menos la Programación orientada a objetos.

Mi definición de programación funcional:

Es un paradigma de programación que utiliza funciones para resolver casos específicos, creando una solución a partir de los datos disponibles.

Apenas empieza el curso y ya me cae bien el profe jajaja

Me encanta como explica este profe! Estoy en el curso de Java Spring y me toco venirme a repasar Lambda. Pero a profundizar. ❤️

¿QUE ES LA PROGRAMACIÓN FUNCIONAL?
Es un estilo de programación enfocado a casos donde nos preguntamos que resolver

¿CUALES SON LOS BENEFICIOS?

  • Legibilidad:
  • Testing: Esta mas modularizado.
  • Concurrencia: podemos liberar muchos hilos a partir de una funcion.
  • Comportamientos definidos: por funciones.
  • Menos manejo de estados: tenemos o no tenemos el dato.
  • No hay que instalar nada adicional: Es una parte de java.

Va muy lentoooo

Llevo tan sólo dos minutos del primer video de este curso y veo que es muuuy prometedor, el profe se ve que explica bien (Y)

Alli vamo!!

Me gusto la introduccion y suena genial todo.

¿Programación funcional es lo mismo que programación estructurada? ¿Es lo mismo JAVA que JAVA SE? Gracias por las respuestas.

Creo que este curso era super necesario!! Como me alegro de que se le esté dando amor a un lenguaje tan complejo y potente como Java!

La programación funcional es un paradigma de programación declarativa. En este estilo de programación las funciones son ciudadanas de primera clase, porque sus expresiones pueden ser asignadas a variables como se haría con cualquier otro valor; además de que pueden crearse funciones de orden superior.

https://es.wikipedia.org/wiki/Programación_funcional

Excelente a aprender este nuevo paradigma que lo e escuchado pero nunca lo he usado.

Oh yeah este curso promete!

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.

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.

El concepto de programación funcional hace referencia a la programación declarativa, que se enfoca en el que necesitamos que haga… similar a como lo maneja una consulta SQL select * from clientes where nombre like ‘A%’;, en este caso no nos estamos preocupando en el cómo lo hizo. A simple vista podemos identificar que estamos obteniendo un listado de clientes que su nombre ininca por la letra A.

Bueno empezamos!!!, esto lo estaba esperando.

Estoy super emocionado, hace tiempo quería ver un curso como este !!