2008-10-14 8 views
12

La programación funcional parece ser un paradigma en la informática que tiene cada vez más eco.¿A qué tipo de problema es adecuada la programación funcional?

Me pregunto qué tipo de problemas se resuelven mejor con un enfoque de programación funcional en lugar de con un enfoque más tradicional orientado a objetos.

Gracias.

+1

Solución de un montón de problemas sub-problemas sub-sub-problemas ... ;) – willasaywhat

+1

No estoy seguro de que volvería a describir, especialmente desde el punto de vista de la ciencia de computación, como la OO enfoque "más tradicional". OO se originó con Simula a finales de los años 60; funcional con LISP a fines de los '50. Smalltalk, el primer idioma explícitamente etiquetado como "orientado a objetos", se desarrolló contemporáneamente en los años 70 con ML, que podría considerarse el comienzo de la segunda generación de lenguajes de programación funcionales. –

+0

posible duplicado de [¿Por qué los idiomas funcionales?] (Http://stackoverflow.com/questions/36504/why-functional-languages) –

Respuesta

7

La programación funcional es la más adecuada para la mayoría de los tipos de problemas, incluso para los que normalmente usaría programación orientada a objetos, excepto tal vez los problemas que requieren el almacenamiento de muchos estados u otros efectos secundarios. Aparte de eso, FP maneja problemas complejos mucho más elegantemente que OOP, ya que gran parte proviene de un fondo matemático (comenzando con el cálculo lambda). Tienes mucha más flexibilidad en cuanto a abstracción y composición. Un programa orientado a objetos con muchos patrones de diseño podría refactorizarse utilizando construcciones más funcionales que le permitirán hacer lo mismo sin las estructuras repetitivas que los patrones de diseño le hacen escribir. Además de las matemáticas y el análisis sintáctico, FP también se ha utilizado ampliamente en la inteligencia artificial (particularmente Lisp).

6

La programación funcional es ideal para crear programas que pueden someterse a ejecución en paralelo, ya que desalientan el uso de estados globales.

4

Los lenguajes funcionales se usan mucho en matemáticas y estadística.

2

Estoy de acuerdo con Galwegian -

"Los lenguajes funcionales se utilizan mucho en las matemáticas y estadísticas."

Sin embargo, esos no son los únicos usos. A medida que los lenguajes de programación funcionales se generalicen, es probable que comiences a buscar clases de negocios/bibliotecas/software escritas en estos idiomas.

3

Para avanzar en el punto de ejecución paralelo, los lenguajes funcionales tienden a ser buenos para el modelado gráfico, como el trazado de rayos.

2

Casi cualquier cosa que tenga muchas matemáticas.

1

Si está escribiendo plantillas C++, está trabajando en un lenguaje funcional puro.

2

Por ejemplo, el lenguaje funcional ML es agradable para la implementación de los compiladores y otras aplicaciones de manipulación de árboles.

1

XSLT es un ejemplo de un lenguaje de programación funcional para hacer transformaciones de datos o documentos representados como XML - ciertamente uno muy detallado y muy limitado. Si mal no recuerdo, XQuery también es puramente funcional. Los trucos son que, sin ningún concepto de estado global, están en un programa host para suministrar los datos y consumir sus resultados. Esto ayuda a mantener los programas XSLT (hojas de estilo) puros y reutilizables, pero necesita agregar algún tipo de marco (imperativo) para usarlos como parte de un sistema de procesamiento de propósito general.

1

hojas de cálculo básicas pueden ser vistos como programas funcionales ... :)

1

Estructuras de datos.Ejemplo: compare la implementación imperativa de un Heap de Fibonacci (a menudo utilizado como cola de prioridad) con la implementación funcional. A menudo, el código funcional será de menos de 100 líneas de código, mientras que la implementación imperativa puede ser muchas más líneas de código.

Cuestiones relacionadas