Realmente estoy teniendo dificultades para entender la diferencia entre los paradigmas de programación funcional y de procedimiento .
Aquí están los dos primeros párrafos de la entrada de Wikipedia sobre programación funcional :
En informática, la programación funcional es un paradigma de programación que trata la computación como la evaluación de funciones matemáticas y evita estados y datos mutables. Enfatiza la aplicación de funciones, en contraste con el estilo de programación imperativa, que enfatiza los cambios de estado. La programación funcional tiene sus raíces en el cálculo lambda, un sistema formal desarrollado en la década de 1930 para investigar la definición de funciones, la aplicación de funciones y la recursividad. Muchos lenguajes de programación funcionales pueden verse como elaboraciones del cálculo lambda.
En la práctica, la diferencia entre una función matemática y la noción de "función" utilizada en la programación imperativa es que las funciones imperativas pueden tener efectos secundarios, cambiando el valor del estado del programa. Debido a esto, carecen de transparencia referencial, es decir, una misma expresión de lenguaje puede dar como resultado valores diferentes en momentos diferentes según el estado del programa en ejecución. Por el contrario, en el código funcional, el valor de salida de una función depende solo de los argumentos que se ingresan a la función, por lo que llamar a una función
f
dos veces con el mismo valor para un argumentox
producirá el mismo resultadof(x)
ambas veces. La eliminación de efectos secundarios puede facilitar la comprensión y la predicción del comportamiento de un programa, que es una de las motivaciones clave para el desarrollo de la programación funcional.
En el párrafo 2 donde dice
Por el contrario, en el código funcional, el valor de salida de una función depende solo de los argumentos que se ingresan a la función, por lo que llamar a una función
f
dos veces con el mismo valor para un argumentox
producirá el mismo resultado enf(x)
ambas ocasiones.
¿No es ese el mismo caso exacto para la programación procedimental?
¿Qué se debe buscar en procedimientos frente a funcionales que se destacan?