Introducción a la programación Funcional

1

¿Qué es la Programación Funcional?

Entendiendo las partes de la programación funcional

2

¿Qué es una función en Java?

3

Funciones como ciudadanos de primera clase

4

Funciones puras

5

Entendiendo los efectos secundarios

6

Funciones de orden mayor

7

Funciones lambda

8

Inmutabilidad

Functional Programming en Java

9

Repositorio del curso

10

Configuración del entorno de trabajo

11

Revisando el paquete java.util.function: Function

12

Revisando el paquete java.util.function: Predicate

13

Revisando el paquete java.util.function: Consumer y Supplier

14

Revisando el paquete java.util.function: Operators y BiFunction

15

Entendiendo dos jugadores clave: SAM y FunctionalInterface

16

Operador de Referencia

17

Analizando la inferencia de tipos

18

Comprendiendo la sintaxis de las funciones lambda

19

Usando metodos default en nuestras interfaces

20

Dándole nombre a un viejo amigo: Chaining

21

Entendiendo la composición de funciones

Optional y Streams: Datos mas interesantes

22

La clase Optional

23

Entendiendo los Streams

24

¿Qué son los Stream listeners?

25

Operaciones y Collectors

26

Streams de tipo específico y Paralelismo

27

Operaciones Terminales

28

Operaciones Intermedias

29

Collectors

Todo junto: Proyecto Job-search

30

job-search: Un proyecto para encontrar trabajo

31

Vista rápida a un proyecto de Gradle

32

Revisando las opciones para nuestro CLI

33

Librerías adicionales para nuestro proyecto

34

Entendiendo la API de jobs

35

Diseñando las Funciones Constructoras de nuestro Proyecto

36

Agregando validaciones de datos

37

Diseñando las funciones de transformacion de datos

38

Creando flujos extras de transformación de Datos

Conclusiones

39

Un repaso a lo aprendido

¿Qué es la Programación Funcional?

1/39
Recursos
Transcripción

Aportes 49

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.

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 !!