¿Qué es la programación funcional?

La programación funcional es un paradigma de programación donde la base del cálculo es la evaluación de las expresiones. Algunas características son el uso de funciones de orden superior, transparencia referencial y evaluación perezosa. Las ventajas del estilo de programación incluyen que los programas son fáciles de leer, son muy confiables y se pueden dividir en componentes. Las desventajas son que los cálculos pueden ser lentos y el estilo y la sintaxis son completamente diferentes de otros estilos de programación comunes. El estilo de programación funcional es más a menudo adoptado por académicos que por profesionales de la informática.

Como su nombre indica, las funciones son una parte fundamental de este paradigma de programación. Las funciones pueden estar anidadas dentro de otras funciones, llamadas funciones de orden superior, y cada función de orden superior puede descomponerse en funciones de bloques de construcción que son fáciles de entender y depurar. Ejemplos de algunas funciones de orden superior son Map y Nest. El mapa de funciones toma una función F y el LISt de variables, por ejemplo (x, y, z) y da el resultado en una lista: mapa [f, (x, y, z)] = (f (x), f (y), f (z)). Nest toma la función f, la variable x y el número de iteraciones: nido [f, x, 3] = f (f (f (x)))).

La programación funcional pura toma una entrada y devuelve una salida sin cambiar el estado de una variable. En otras palabras, una función con la misma entrada siempre dará los mismos resultados, independientemente de lo que haya ocurrido anteriormente en el programa. Esto se llama transparencia referencial. Dado que las funciones matemáticas son referencialmente transparentes, la programación funcional es intuitiva para muchos matemáticos, ingenieros y científicos.

La transparencia referencial de las funciones significa que el orden de la evaluación de la función no es importante. Por lo tanto, las funciones no necesitan ser evaluadas hasta que se necesiten sus resultados, lo que se llama evaluación perezosa. Esto está en completo contrast con programación imperativa, donde un programa comienza con el primer comando y se ejecuta a través de la lista hasta el último comando. La evaluación perezosa se salta sobre partes del programa que no siguen lógicamente o son superfluas, lo que optimiza automáticamente el programa y puede reducir el tiempo de computación.

La programación funcional tiene muchas ventajas sobre otros paradigmas de programación. Las funciones con entradas y salidas claras son fáciles de leer y comprender. Una vez que una función se depugga a fondo, se puede utilizar de manera confiable en otras aplicaciones. Las máquinas multinúcleo pueden calcular funciones que se evalúan de forma independiente en paralelo, mejorando drásticamente el rendimiento de los programas.

Desafortunadamente, no todos los programas se prestan a la computación paralela, y la computación de los programas funcionales puede ser bastante lento. Los programas funcionales dependen en gran medida de la recursión, lo que a menudo es menos eficiente que el uso de bucles tradicionales o métodos de iteración. De hecho, la programación funcional puede ser quiTE torpe y difícil de aprender, ya que no se parece a otros paradigmas más comunes, como la programación orientada a objetos.

Los académicos tienden a favorecer la programación funcional, ya que proporciona una forma clara y comprensible de programar problemas complejos del mundo real. Algunos idiomas puros son Haskell y Erlang. Mathematica está especializada en matemáticas simbólicas, R está especializada en estadísticas y J está especializada en análisis financiero. Languaces multiparadigma como Scala y F# admite tanto la programación funcional como otros estilos de programación.

OTROS IDIOMAS