¿La programación funcional está tan relacionada con las matemáticas porque gran parte de la programación funcional se representa con nociones matemáticas? ¿Es NECESARIO tener una base sólida de matemáticas para aprender y comprender la programación funcional para un programador con una formación imperativa?
math
scala
functional-programming
prasonscala
fuente
fuente
Respuestas:
Toda la programación está relacionada con las matemáticas. De hecho, muchas universidades todavía colocan sus programas de informática bajo el ámbito del departamento de matemáticas.
En cuanto al aprendizaje de la programación funcional, no es necesario tener una base sólida en matemáticas para aprenderlo. Ahora he aprendido tres idiomas funcionales diferentes con un dominio razonable (Haskell, Erlang, Clojure) y mis propias habilidades matemáticas son extremadamente débiles. La comunidad de Haskell puede, de hecho, ser un poco molesta en su forma de hablar de las cosas centrada en las matemáticas, pero Erlang y Clojure son lenguajes de programación funcionales muy pragmáticos que no son tan difíciles de aprender porque la información del tutorial está escrita, aparentemente, para programadores, no expertos en matemáticas. Dicho esto, a pesar de mi discapacidad en matemáticas , recogí a Haskell, así que no es imposible.
La verdadera dificultad que he encontrado al elegir lenguajes de programación declarativos en general (de los cuales funcional es un subconjunto) es renunciar a ese impulso de tener el control; para decirle a la computadora qué hacer. Toma un tiempo acostumbrarse.
fuente
Si. Esencialmente, un programa funcional es un conjunto de declaraciones como esa:
// 1_ y 2_ son "argumentos ficticios" f (1_): = sin (1_) g (1_, 2_): = 1_ + 2_ etc.
x = f ()
y = g (x)
z = h (x, h2 (y))
etc ...
Está escribiendo lo que se supone que debe hacer el programa en forma de ecuaciones que definen nuevos valores (nota: no variables) como funciones de valores previamente definidos. También define las funciones como relaciones. Es realmente bastante similar a la forma en que se escriben los teoremas matemáticos.
fuente
IMO Mathematica, como ejemplo de un lenguaje en el que puedes usar programación funcional, no requiere una sólida formación en matemáticas. De hecho, no creo haber encontrado nada parecido a la programación funcional durante mi educación matemática básica. Comencé la programación de Mathematica haciendo C-style, y descubrí la programación funcional solo años después. No creo que las construcciones de programación funcionales básicos como
Map
,Apply
,NestList
, etc requieren ningún fondo de matemáticas en absoluto.fuente
realmente no. La programación funcional es solo una metodología, pero tenía su base en el cálculo lambda y cosas así.
Los cierres son un intento (pequeño) de introducir conceptos de programación funcional en lenguajes de procedimiento. en lugar de
for(int i =0 ; i < num; i++) doStuff(arr[i]);
, puede suponer que los elementos de la matriz pueden tener "cosas hechas" inherentementearr.each do |el| doStuff(el) end
fuente
The term closure is often mistakenly used to mean anonymous function. This is probably because most languages implementing anonymous functions allow them to form closures and programmers are usually introduced to both concepts at the same time. These are, however, distinct concepts. A closure retains a reference to the environment at the time it was created (for example, to the current value of a local variable in the enclosing scope) while a generic anonymous function need not do this.
La respuesta corta es: Sí, porque todo con un cierto grado de formalización (como los lenguajes de programación) está fuertemente relacionado con las matemáticas, para diversos grados de matemáticas.
Pero, usar un lenguaje de programación no requiere estrictamente familiaridad con las matemáticas, por ejemplo, los fundamentos teóricos de los lenguajes. No tiene que saber qué es un lenguaje libre de contexto y qué leyes y propiedades tiene dicho lenguaje para poder usarlo. Del mismo modo, no es necesario ser germanista o romanista para hablar alemán o francés.
La notación "matemática" no es una propiedad común de los lenguajes funcionales. Scala y todos los lenguajes basados en Lisp tienen sintaxis muy diferentes en comparación con Haskell.
fuente