¿Cuáles cree que son los beneficios de la programación funcional? ¿Y cómo se aplican hoy a los programadores?¿Cuáles son los beneficios de la programación funcional?
¿Cuáles son las mayores diferencias entre la programación funcional y el OOP?
¿Cuáles cree que son los beneficios de la programación funcional? ¿Y cómo se aplican hoy a los programadores?¿Cuáles son los beneficios de la programación funcional?
¿Cuáles son las mayores diferencias entre la programación funcional y el OOP?
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 todas las elementos."
La programación funcional mueve ideas de programación más básicas en el compilador, ideas tales 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 encarga 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 se pueden ver en el contexto de un solo procesador también, dependiendo de la forma en que se escribe el programa, porque la mayoría de los lenguajes y extensiones funcionales admiten la evaluación diferida. En Haskell puedes decir "esta etiqueta representa una matriz que contiene todos los números pares". Dicha matriz es infinitamente grande, pero puede solicitar el elemento número 100.000 de esa matriz en cualquier momento sin tener que saber, en el momento de 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.
Creo que su primer párrafo está más cerca de describir la programación declarativa relacional como Prolog que la programación funcional. – McPherrinM
@McPherrinM: los lenguajes funcionales son declarativos, en lugar de imperativos. –
Parece que está [confundiendo DP vs. IP, con procedimiento vs. FP] (http://stackoverflow.com/questions/602444/what-is-functional-declarative-and-imperative-programming/8357604#8357604). FP proporciona la separación de preocupaciones enfatizando la composición de la función, es decir, separando las dependencias entre las subcomputaciones de un cálculo determinista. –
No tiene que ser uno u otro: usar un lenguaje como C# 3.0 le permite mezclar los mejores elementos de cada uno. OO se puede utilizar para la estructura de gran escala a nivel de clase y superior, estilo funcional para la estructura de pequeña escala a nivel de método.
El uso del estilo funcional permite escribir un código que declara su intención claramente, sin mezclarse con instrucciones de flujo de control, etc. Debido a los principios como la programación libre de efectos secundarios, es mucho más fácil razonar sobre el código, y verificar su corrección.
El mayor beneficio es que no es lo que está acostumbrado. Elija un idioma como Scheme y aprenda a resolver los problemas con él, y se convertirá en un mejor programador en los idiomas que ya conoce. Es como aprender un segundo idioma humano. Usted asume que los demás son básicamente una variación suya porque no tiene nada con qué compararlos. La exposición a los demás, en particular, que no están relacionados con lo que ya sabes, es instructiva.
que es un beneficio de aprenderlo, no es un beneficio del paradigma en sí – Moe
¿Pero están realmente separados? Desde el punto de vista del encuestador original, yo diría que no: lo más probable es que estén buscando beneficios en total, dedicando el esfuerzo a aprender un lenguaje funcional. –
"eso es un beneficio de aprenderlo, no un beneficio del paradigma en sí". El paradigma se filtrará en su otro trabajo OOP y puede ayudar a simplificar su desarrollo allí. Puede abordar los problemas desde "calcular este resultado desde esta entrada" y "componer estas dos funciones que calculan datos nuevos" en lugar de "esperar: ¿cuál fue el estado de alguna variable compartida allí?" y "¿obtuve estos procedimientos para ejecutarlos en el orden correcto?". En serio, obtienes estos beneficios (a partir del paradigma de FP) en Python, C#, C++, Java, lo que sea. –
Si aún no conoce la programación funcional, aprender le brinda más formas de resolver problemas.
FP es una generalización simple que promueve las funciones a los valores de primera clase, mientras que OOP es para la estructuración a gran escala de código. Sin embargo, existe cierto solapamiento en el que los patrones de diseño de OOP se pueden representar directamente y de forma mucho más sucinta usando funciones de primera clase.
Muchos idiomas ofrecen FP y OOP, incluyendo OCaml, C# 3.0 y F #.
Cheers, Jon Harrop.
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 hilos y dado el aumento del hardware multinúcleo esto es de máxima importancia.
La programación funcional también aumenta la modularidad; a menudo puede ver métodos/funciones que son demasiado largos, casi nunca verá una función de más de un par de líneas de longitud. Y como todo está desacoplado, la reutilización ha mejorado mucho y las pruebas unitarias son muy fáciles.
Por qué importa la programación funcional
http://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf
lo tanto, un buen punto de partida sería la de tratar de entender algunas cosas que no son posibles en los lenguajes imperativos, pero posible en los lenguajes funcionales.
Si habla de computabilidad, por supuesto no hay nada que sea posible en la programación funcional pero no obligatoria (o viceversa).
El objetivo de los diferentes paradigmas de programación no es hacer posibles cosas que antes no eran posibles, sino facilitar las cosas antes.
La programación funcional tiene como objetivo permitirle escribir más fácilmente programas que son concisos, libres de errores y paralelizables.
No piense en la programación funcional en términos de "necesidad". En cambio, piense en ello como otra técnica de programación que abrirá su mente al igual que OOP, plantillas, lenguaje ensamblador, etc. pueden haber cambiado completamente su forma de pensar cuando (si) los aprendió. En definitiva, el aprendizaje de la programación funcional lo convertirá en un mejor programador.
Es necesario para Matemáticas =) –
Una vez que el programa crece, el número de comandos en nuestro vocabulario es demasiado alto, por lo que es muy difícil de usar. Aquí es donde la programación orientada a objetos nos facilita la vida, porque nos permite organizar nuestros comandos de una mejor manera. Podemos asociar todos los comandos que involucran al cliente con alguna entidad de 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 especifica 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: primitivas que especifican cómo podemos juntar comandos para crear un programa. En los lenguajes imperativos, pudimos componer comandos en una secuencia o utilizando un número limitado de construcciones integradas, como bucles, pero si observa los programas típicos, aún verá muchas estructuras recurrentes; formas comunes de combinar comandos
The Blub Paradox. http://www.paulgraham.com/avg.html – missingfaktor
Consulte http://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming – EliuX