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

Entendiendo los efectos secundarios

5/39
Recursos
Transcripción

Aportes 20

Preguntas 2

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Un efecto secundario es todo cambio observable desde fuera del sistema es un efecto secundario. Los efectos secundarios son inevitables (porque terminan siendo necesarios), algunos ejemplos son:

  • CRUD sobre archivos
  • CRUD sobre una base de datos
  • Enviar/Recibir una llamada de red
  • Alterar un objeto/variable usada por otras funciones.

Sin embargo, se deben reducir los efectos secundarios, porque ayuda a tener una mejor estructura del código (favoreciendo la generación de funciones puras, la modularidad y la testeabilidad).

entre mas funciones puras menos errores y mas control en nuestro sistema

tuve que ver estos videos dos veces ahora comprendo de que se trata es una nueva forma de estructurar el codigo que a la larga nos va a permitir tener menos cantidad de bugs entre otras cosas

Entonces conviene más tener funciones de las que se el resultado que las que no, debido a que afectan la funcionalidad del programa

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

los efecto secundarios son inevitables

Ejemplos de efectos secundarios:

  • Actualización de bases de datos

  • Escritura, creación o eliminación de archivos

  • Cambio de estado de otros objetos que no forman necesariamente parte del mismo flujo de datos de la función.

Es importantísimo tener en consideración el concepto de separación de responsabilidades. Sin embargo, es importante también evitar obsesionarse con granular absolutamente todo en pro de purificar las funciones o métodos de nuestros flujos de datos cuándo esto puede atentar contra le buena legibilidad del código, eficiencia o lo que es peor la mera naturaleza del algoritmo buscado.

  • En otras palabras, hay que evitar tener procesos monstruosos que hacen todo pero comprender cómo existen procedimientos que implican una larga línea de sub procesos que perfectamente son totalmente necesarios.

Hay dos conceptos muy importantes a tener en cuanta cuando menciona el código bien estructurado: DDD y los principios SOLID

Entonces nuestro objetivo va ser controlar la mayor cantidad estos efectos secundarios dependiendo de la meta de la aplicación, y esto se va a lograr creando una estructura organizada enfocada para hacer pruebas

Efecto secundario es que todo cambio observable desde fuera del sistema

reducir los efecto secundarios nos ayuda a tener separa efectos hacia nuestro codigo

Muchas gracias profe, increible material.

Mayor cantidad de funciones puras en nuestro sistema 😃

Un ejemplo sencillo, si le pones blanqueador a la camiseta del profe (que es negra) y se lava, el color cambia!, si en lugar de eso la doblas no hay efecto secundario, misma forma, color, etc…

Entendí en mensaje…más funciones puras, menos errores!

Con la programación funcional se busca orientar o estructurar el código para evitar en la medida de lo posible los efectos secundarios, ya que nos permitirá realizar mejores test para nuestro código y evitar problemas a futuro. Los efectos secundarios siempre serán inevitables es imposible tener el control de todo mas cuando trabajamos con instancias ajenas a nuestro proyecto llámese internet, una api publica, etc, o cualquier cambio que sea observable desde fuera del sistema por ejemplo cambios de estado o cambios en la base de datos o archivos externos.

Los efectos secundarios son inevitables pero podemos reducirlos para tener código bien estructurado donde las responsabilidades están aisladas, en el cual todas nuestras funciones impuras sean sólo puntos de entrada de la información, pero una vez que la información está dentro del sistema, mantener toda esa información entre funciones puras.

Un efecto secundario es todo cambio sobre un sistema.

Si una función al ser llamada cambia el estado de un sistema, entonces la función tiene un efecto secundario.

La función abrir archivo, causa un cambio porque abre un archivo, la función ‘new’ abre un espacio de memoria.

En una charla de ‘Uncle bob’ sobre ‘Clean code’ habla sobre que no debería haber efectos secundarios; las funciones de efecto secundario vienen en pares. Open, close; new, delete. Sí abres una conexión con un servidor, luego debes cerrar esa conexión.

Uncle bob habla sobre que el garbage collector es una manera muy útil de escribir código seguro; aunque nos acostumbramos a no liberar memoria que usamos porque ‘El sistema se hará cargo por nosotros’

Hay ocasiones en las que se puede debuggear un sistema, pasar horas y horas y encontrar que el error se va al cambiar de orden dos líneas de código que llamaban funciones sin saber el porque.