Abstract:
“Ya se objetos, ¿para que usar programación funcional?” Si lees el título y pasa esta frase por tu cabeza… ¡necesitas urgentemente ver esta charla! Aprovecharé la plasticidad de Python para dar una breve explicación de que es la programación funcional, además de listar sus diferencias respecto al paradigma orientado a objetos, enseñar sus superpoderes, algunos ejemplos reales y ver otros lenguajes que pueden ayudarte a mejorar como desarrollador.
Bio:
Fullstack, docente durante ya casi una década, Project Manager en su propio estudio de APPs, colaborador en el Podcast “República Web”, bloguero incansable y locamente enamorado del software libre en todos los estratos del alma humana manteniendo varios proyectos.
Respecto a map y filter, entiendo que se pueden obtener lo mismos resultados utilizando list comprehensions. De hecho creo haber leído que usar list comprehensions es más rápido. ¿No viola el hecho de tener varias formas de conseguir lo mismo el principio de Python de “hay una única manera obvia de hacer las cosas”? ¿Es por eso que se eliminaron por un tiempo?
Muy interesante esta charla, aunque tengo que reconocer que me cuesta bastante imaginar un software muy complejo desarrollado con programación funcional y que sea relativamente fácil de mantener. Imagino que es por eso por lo que existen conceptos como serverless, ¿no? Dudo que vaya a aprender algún lenguaje funcional pronto, pero por lo menos puedo intentar usar algunas de las prácticas de este paradigma.
Si, por supuesto. La impresión que tengo que es tanto map, como filter, como reduce están un poco con calzador. Otras herramientas pueden lograr objetivos similares sin ensuciar tanto la sintaxis (lo comento por esa sensación que pueden tener aquellos que no tienen el ojo entrenado). Y en varias pruebas de rendimiento he notado resultados similares.
map, filter y reduce aparecieron en Python no recuerdo en que versión y no han desaparecido. Lo que sí sucedió fue que reduce lo reubicaron: lo movieron de los builtins a functools.
Sí hubo la intención de no incluirlos en Python3. Guido mismo es quien quería retirarlos, y su argumento era precisamente lo que mencionas: lo que puedes hacer con map y filter lo puedes hacer con expresiones por comprensión.
Las razones por las cuales cambió de opinión no las recuerdo.
Gracias a ti por lanzarte a dejarme el comentario
Es duro porque te obliga a volver a andar, sobretodo si has sido educado con la programación orientada a objetos. Los problemas debes resolverlos desde un punto diferente. Sabes que estás ahí cuando te preguntas: “¿Donde ha estado esto toda mi vida?” Pero bueno, no es incompatible con trabajar con Python; ni mucho menos.
Antes de la programación orientada a objetos se hacía software, e incluso complejo como sistemas operativos No esta tanto en el paradigma sino en el patrón de diseño. Te recomiendo dar un vistazo a los libros de Clean Code.
No verás su potencial hasta que te metas de lleno, sino lo verás con recelo, con desprecio (como el alien de las diapositivas). Pero puedes empezar sustituyendo ciertos bucles con las funciones de primer grado.
Suerte!