Pregunta

¿Cuáles crees que son los beneficios de la programación funcional? ¿Y cómo se aplican a los programadores de hoy?

¿Cuáles son las mayores diferencias entre programación funcional y OOP?

¿Fue útil?

Solución

El estilo de la programación funcional es describir lo que desea, en lugar de cómo obtenerlo. es decir: en lugar de crear un bucle for con una variable de iterador y marchar a través de una matriz haciendo algo para cada celda, diría que el equivalente de " esta etiqueta se refiere a una versión de esta matriz donde esta función se ha realizado en todos los elementos. "

La programación funcional mueve más ideas de programación básica al compilador, ideas como listas de comprensión y almacenamiento en caché.

El mayor beneficio de la programación funcional es la brevedad, porque el código puede ser más conciso. Un programa funcional no crea una variable de iterador para ser el centro de un bucle, por lo que este y otros tipos de sobrecarga se eliminan de su código.

El otro beneficio importante es la concurrencia, que es más fácil de hacer con la programación funcional porque el compilador se ocupa de la mayoría de las operaciones que solían requerir la configuración manual de variables de estado (como el iterador en un bucle).

Algunos beneficios de rendimiento también se pueden ver en el contexto de un solo procesador, dependiendo de la forma en que se escribe el programa, porque la mayoría de los lenguajes funcionales y las extensiones admiten la evaluación perezosa. En Haskell, puedes decir "esta etiqueta representa una matriz que contiene todos los números pares". Tal matriz es infinitamente grande, pero puede solicitar el elemento número 100.000 de esa matriz en cualquier momento sin tener que saberlo, en el momento de la inicialización de la matriz, cuál es el valor más grande que va a necesitar. El valor se calculará solo cuando lo necesite, y no más.

Otros consejos

El mayor beneficio es que no es a lo que estás acostumbrado. Elija un lenguaje como Scheme y aprenda a resolver problemas con él, y se convertirá en un mejor programador en los idiomas que ya conoce. Es como aprender un segundo lenguaje humano. Usted asume que los demás son básicamente una variación por su cuenta porque no tiene nada con qué compararlo. La exposición a otros, los particulares que no están relacionados con lo que ya sabe, es instructiva.

Por qué importa la programación funcional
http://www.cs.kent.ac.uk /people/staff/dat/miranda/whyfp90.pdf

  

Por lo tanto, un buen punto de partida sería tratar de entender algunas cosas que no son posibles en los lenguajes imperativos, pero sí en los lenguajes funcionales.

Si está hablando de computabilidad, por supuesto, no hay nada posible en la programación funcional pero no imperativa (o viceversa).

El objetivo de los diferentes paradigmas de programación no es hacer posibles cosas que antes no eran posibles, sino hacer cosas fáciles que antes eran difíciles.

La programación funcional tiene como objetivo permitirle escribir más fácilmente programas concisos, libres de errores y paralelizables.

No tiene que ser uno u otro: usar un lenguaje como C # 3.0 te permite mezclar los mejores elementos de cada uno. OO se puede utilizar para la estructura a gran escala en el nivel de clase y superior, estilo funcional para la estructura a pequeña escala en el nivel de método.

El uso del estilo funcional permite escribir un código que declare claramente su intención, sin confundirse con las declaraciones de flujo de control, etc. Debido a principios como la programación sin efectos secundarios, es mucho más fácil razonar sobre el código, y comprueba su corrección.

Creo que el ejemplo más práctico de la necesidad de programación funcional es la concurrencia: los programas funcionales son naturalmente seguros para subprocesos y, dado el auge del hardware de múltiples núcleos, esto es de suma importancia.

La programación funcional también aumenta la modularidad (a menudo se pueden ver métodos / funciones en imperativos que son demasiado largos), casi nunca se ve una función de más de un par de líneas. Y dado que todo está desacoplado, la reutilización ha mejorado mucho y las pruebas unitarias son muy fáciles.

Una vez que el programa crece, el número de comandos en nuestro vocabulario se vuelve demasiado alto, lo que hace que sea muy difícil de usar. Aquí es donde la programación orientada a objetos hace que nuestra vida sea más fácil, ya que nos permite organizar nuestros comandos de una mejor manera. Podemos asociar todos los comandos que involucran al cliente con alguna entidad del cliente (una clase), lo que hace que la descripción sea mucho más clara. Sin embargo, el programa sigue siendo una secuencia de comandos que especifican cómo debe proceder.

La programación funcional proporciona una forma completamente diferente de ampliar el vocabulario. No se limita a agregar nuevos comandos primitivos; También podemos agregar nuevas estructuras de control & # 8211; primitivas que especifican cómo podemos unir los comandos para crear un programa. En lenguajes imperativos, pudimos componer comandos en una secuencia o usando un número limitado de construcciones integradas, como bucles, pero si observas programas típicos, aún verás muchas estructuras recurrentes; formas comunes de combinar comandos

No piense en la programación funcional en términos de una " necesidad " ;. En su lugar, piense en esto como otra técnica de programación que abrirá su mente de la misma manera que la OOP, las plantillas, el lenguaje ensamblador, etc. pueden haber cambiado completamente su forma de pensar cuando (si) las aprendió. En última instancia, aprender la programación funcional lo hará un mejor programador.

Si aún no conoce la programación funcional, el aprendizaje le brinda más formas de resolver problemas.

FP es una generalización simple que promueve funciones a valores de primera clase, mientras que la POO es para la estructuración de códigos a gran escala. Sin embargo, hay algunas superposiciones en las que los patrones de diseño de POO se pueden representar directamente y de manera mucho más sucinta utilizando funciones de primera clase.

Muchos idiomas proporcionan FP y OOP, incluidos OCaml, C # 3.0 y F #.

Saludos, Jon Harrop.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top