Por qué la programación funcional

38

¿Cuál es el trato con la programación funcional? Veo hablar mucho de eso, pero para ser sincero, nunca los he encontrado útiles. ¿Por qué tantas universidades aparentemente les enseñan?


fuente
66
Muy grande en la programación de IA.
aqua
3
@aqua: ¿no debería ser esa una respuesta de por qué no?
Martin Beckett
55
También me gustaría señalar que incluso los lenguajes OO tradicionales están comenzando a incluir conceptos de programación funcional. Linq (en .NET), por ejemplo.
apoorv020
Creo que la programación funcional ejercita más tu cerebro y puede conducir a un código realmente conciso. Entonces es bastante genial.
Adel
2
@ apoorv020: Y genéricos, tuplas y recolección de basura y ... todo se originó en lenguajes funcionales.
Jon Harrop

Respuestas:

60

Comience por qué importa la programación funcional . Luego vaya a Por qué importa la función La programación importa . Algunas balas:

  • La programación funcional le permite razonar sobre los problemas de manera diferente
  • La abstracción funcional es muy poderosa y le permite SECAR su código de formas que no están disponibles para otros paradigmas
  • En nuestro futuro multinúcleo, los lenguajes funcionales pueden ser más fáciles de dividir en tareas simultáneas (aunque los lenguajes no estrictamente funcionales también están trabajando duro en el problema).
  • Es más fácil demostrar que los programas escritos en lenguajes funcionales puros (sin efectos secundarios) son matemáticamente correctos.
Corbin March
fuente
55
+1: todos estos son puntos excelentes, y se explican de manera más concisa y con más detalles exactos que lo que intenté hacer.
jmort253
1
Con su cuarto punto, ¿quiso decir que se puede probar que el idioma es correcto o que los programas se escriben en el idioma? De todos modos, tanto los lenguajes impuros como los programas escritos en lenguajes impuros pueden demostrarse correctos, es mucho más difícil y desordenado.
Jörg W Mittag
1
@ Jörg W Mittag, también es mucho más fácil razonar sobre las propiedades del lenguaje en sí. La semántica denotacional es trivial para los lenguajes funcionales y bastante complicada para el imperativo.
SK-logic
Es curioso cómo el segundo enlace proporciona algunos argumentos "explícitos", sabiendo que ni siquiera leo el primer enlace.
jokoon
+1: Gran respuesta. Me gusta especialmente cómo pones las viñetas # 1 y # 2 a las palabras.
Jim G.
9

Los conceptos de programación funcional crean una base que cambiará su forma de pensar y lo ayudará a resolver problemas del mundo real.

El concepto es similar a por qué todos aprendemos Cálculo multivariable, Álgebra y / o Física de ingeniería como estudiantes de informática, aunque es posible que nunca necesitemos ese conocimiento específico en nuestras carreras.

Es por eso que las Escuelas de Derecho aman a los candidatos con una licenciatura en Matemáticas. Estudiar Matemáticas te enseña a pensar en múltiples conceptos de una manera lógica, y la programación funcional te enseña abstracciones y muchos otros conceptos importantes que te ayudan a resolver problemas y mirarlos desde otra perspectiva.

En resumen, la programación funcional ayuda a enseñarle cómo aprender.

jmort253
fuente
¿Tal vez realmente no necesita un nombre entonces? ¿No es simplemente un diseño de programa 'correcto'?
4

Cuando comienzas, la programación funcional es el mejor modelo de pensamiento. Porque la mayoría de sus programas no requerirán orientación a objetos. Al menos esa ha sido mi experiencia.

Sin embargo, ahora que entro en algunas aplicaciones que requieren la separación de la pantalla y la lógica, fue cuando comencé a separar toda la lógica y el código de la pantalla, para facilitar que cada uno haga lo que es mejor.

Pero no sabrá por qué hacer eso, a menos que domine Functional primero. Nunca me gustó que la gente me pusiera OO, o que OO es la solución para todo. Solo asegúrate de que sea cual sea el enfoque que uses, tiene sentido para lo que estás trabajando, y no es una curva de aprendizaje demasiado empinada para tomar demasiado tiempo del trabajo por el que te pagan.

crosenblum
fuente
1
+1 - Me gusta que señales que utilizas la mejor técnica para el trabajo: asegúrate de que tenga sentido.
jmort253
1
Lamentablemente, el sentido común es raro en nuestra industria. Debido a que cada uno de nosotros tiene experiencias completamente diferentes, que debido a los errores que cometemos son diferentes, cada uno de nosotros desarrolla hábitos diferentes y por qué los hacemos ... Como adaptar el control de la fuente, no tiene sentido para alguien que siempre ha trabajado ellos mismos
crosenblum
"El sentido común es la cosa más justamente distribuida en el mundo, ya que cada uno piensa que está tan bien dotado que incluso aquellos que son más difíciles de satisfacer en todos los demás asuntos no tienen la costumbre de desear más de lo que ya tienen. tener." - Descartes
3

Porque enfatiza los verbos, no los sustantivos. A veces son los verbos los que importan.

Roger escaso
fuente
OOP enfatiza los sustantivos. A veces son los sustantivos los que importan. ¿Cómo sabemos cuál? - Falso dilema. Sistema detenido
3

Porque en general usa menos código para realizar la misma tarea. Menos código para escribir, es menos código para mantener. Además de ser menos código, también tiende a tener menos estado y, por lo tanto, es un poco más simple razonar sobre esto (una vez que esté acostumbrado).

Alex Baranosky
fuente
Entonces, ¿no es esa simplemente la definición de 'mejor'? ¿Por qué querríamos hacer algo más que lo que usted ha descrito?
2

Tal vez porque las universidades quieren enseñar algo de todos los paradigmas de programación, y para ciertas cosas la programación funcional es mejor (como describir el movimiento de los personajes del juego y las animaciones)

Coyote21
fuente