¿Puedo usar la programación funcional en mi lenguaje?

Aquí hay una traducción amateur de un ensayo de Eric Normand, consultor y orador que promueve la programación funcional.

Era bastante libre con los términos, no dudé en usar el inglés como una "característica". Estoy confundido por la traducción literal de los términos del programador. Disfruta leyendo

Resumen: respondemos la pregunta directamente, pero luego analizamos los prejuicios ocultos detrás de ella.


Muy a menudo, los desarrolladores experimentados me preguntan: "¿Qué me puede dar la programación funcional que no tengo? ¿Puedo comenzar a usar FP en mi propio idioma? Esta es una gran pregunta, espero poder darle una respuesta decente.


Entiendo completamente la apariencia de este problema. JavaScript tiene map , filter y reduce . Java 8 tiene flujos ( decidí usar el inglés en lugar de la palabra "flujo" - traductor aprox. ). Parece que cada idioma recibe más y más funciones funcionales, que incluyen estructuras de datos inmutables , funciones de primer orden, composición de funciones, desestructuración y buena tipificación.


Y estoy de acuerdo: puedes usar FP en cualquier idioma .


La programación funcional es solo un paradigma. Del mismo modo que puede escribir en un estilo de procedimiento, orientado a objetos o lógico en cualquier idioma, puede escribir en un estilo funcional en cualquier idioma.


Espera un minuto Esta es la respuesta a la pregunta. ¿Pero es así de simple?


Pregúntese: ¿puedo usar OOP en C? Según lo que dije anteriormente, la respuesta es sí. Además, ya hice pequeños sistemas de objetos en C anteriormente. Pero, ¿por qué entonces necesito un lenguaje orientado a objetos si puedo usar objetos en C? Sentí que mi sistema de objetos me proporcionó todas las características necesarias para OOP. Pero aquí hay otra pregunta: ¿podría usar OOP en C sin conocer OOP? Lo dudo


Estos paradigmas se llaman paradigmas porque Estos son enfoques holísticos sobre cómo resolver problemas. OOP divide la tarea en objetos que interactúan entre sí a través de mensajes. FP representa una tarea como datos que muestran el estado de un proceso simulado. El enfoque procesal describe la solución como un conjunto de pasos claros. Cada paradigma ofrece una forma diferente de resolver el problema. Si cree que puede usar FP en Java sin ser un especialista en FP, entonces dice que la programación funcional no es un paradigma, sino solo un conjunto de características (datos inmutables, funciones puras, su composición, etc.).


Me he encontrado con esto muchas veces. Las personas afirman escribir en estilo funcional en JavaScript. De hecho, solo usan map y reduce junto con una serie de funciones puras . Y da buenos resultados, pero en general su código es de procedimiento. No estudiaron un paradigma, sino solo sus características.


La ventaja de un lenguaje que impone un paradigma rígidamente es que le enseña a usar este enfoque para resolver problemas. Y cuanto más lo imponga, más a menudo tendrá que intentar resolver el problema en el marco de este paradigma. Cuanto más funcional sea su lenguaje, más practicará utilizando un enfoque funcional para resolver problemas. Lo mismo ocurre con la POO y el estilo de procedimiento. En resumen, entrenas al no poder usar los enfoques a los que estás acostumbrado.


Permítanme hacer una declaración aún más controvertida: fuera de los lenguajes que son funcionales (Clojure, Haskell, Elm, Scala, Erlang, etc.), no se utilizan muchos FP. Excepto cuando los desarrolladores ya están familiarizados con el estilo funcional, gracias a la rica experiencia, solo usan migajas de lo que ofrece el paradigma. Y se pierden lo más importante: la oportunidad de ver la tarea desde un ángulo diferente.


No digo que sea imposible aprender FP usando JavaScript, pero esto requerirá autodisciplina y ayuda . El lenguaje no te guiará por este camino. Tendrá que hacerlo usted mismo o buscar a alguien que lo ayude.


Conclusión


Todos los paradigmas son excelentes porque "un punto de vista es equivalente a 80 puntos IQ" . Puede usar cualquier paradigma en cualquier idioma. Pero es muy difícil estudiar el paradigma sin sumergirse en él. Y es bastante difícil bucear sin usar el lenguaje que lo impone. Hasta que haga esto, utilizará las características del paradigma, pero no resolverá los problemas de una manera nueva. En general, la programación funcional no es un conjunto de características. Si quieres aprenderlo, sumérgete en él.

Source: https://habr.com/ru/post/es436396/


All Articles