He estado tratando de aprender programación funcional y la mayoría de los tutoriales que he encontrado usan las matemáticas como ejemplos para las construcciones más complicadas (incluso las simples en algunos casos). ¿Por qué es esto? Me imagino que se podría usar algo más fácil. Hace que sea difícil de aprender.
Información de antecedentes: He estado escribiendo software durante 12 años. Entiendo algunos de los conceptos como cierres, funciones como ciudadanos de primera clase y genéricos. Puede que tenga problemas con las funciones de orden superior en algún nivel avanzado, pero me gustaría creer que tengo una comprensión básica. Las mónadas me están mordiendo en el trasero, y en este punto no he superado eso (estoy seguro de que eventualmente lo haré, porque soy persistente).
fuente
Respuestas:
Utilizan las matemáticas porque la programación funcional es muy buena para modelar construcciones matemáticas y está muy ligada a los conceptos matemáticos, particularmente el cálculo de Lambda. Además, dado que la E / S suele ser una asignatura bastante espinosa y avanzada en muchos idiomas del paradigma funcional, las matemáticas a través de las REPL de los distintos idiomas se convierten en una buena forma de enseñar el idioma al principio.
Debido a que la programación funcional trata las funciones como construcciones de primera clase dentro del lenguaje de programación, la generación de funciones se vuelve muy importante. Por lo tanto, las matemáticas más altas se vuelven bastante importantes, particularmente la teoría de grafos.
Los lenguajes imperativos son igual de matemáticos, pero todo es aritmético en la base, ya que están más cerca de la máquina que solo pueden agregar de todos modos. Los lenguajes funcionales con su mayor abstracción tienden más a las matemáticas. El uso general en la academia tampoco ayuda a medida que se acostumbran y, por lo tanto, son enseñados por personas que saben muchas matemáticas y están enseñando a personas que esperan aprender muchas matemáticas. Por lo tanto, es posible "simplificarlo", por así decirlo, pero es poco probable dados estos factores.
http://learnyouahaskell.com/ - Es probablemente una de las introducciones más suaves a la Programación Funcional, lo verifiqué dos veces y no hay nada más allá de la teoría básica de álgebra y grafos.
fuente
Existen numerosas razones, y todas están relacionadas:
Además, FP no es más math realmente que otros paradigmas, pero los conceptos clave (funciones como ciudadanos reales de primera clase, funciones de orden superior, cierres y pureza) requieren una cierta mentalidad. En algún momento, tu mente debería hacer "clic"; Si comprende estas 4 ideas centrales, es probable que el resto sea tan fácil como cualquier otro paradigma.
fuente
Es porque fundamentalmente, la programación de computadoras es matemática. Los lenguajes funcionales se diseñaron teniendo esto en cuenta y es por eso que gran parte de los tutoriales se centran en las matemáticas.
Solo es difícil de aprender si no estás acostumbrado a pensar que la programación de computadoras tiene una base matemática.
fuente
Creo que "The Little Schemer" es una excelente introducción a la programación funcional y no es nada math. No entra en las mónadas, por lo que puede ser demasiado básico para sus gustos, pero hace una derivación del combinador en Y hacia el final.
Recientemente lo revisé después de no hacer ninguna programación funcional desde la universidad hace 12 años, y fue una gran actualización, definitivamente me siento listo para abordar cosas más avanzadas después de resolver la mayoría de los problemas en el libro usando Racket.
fuente