los diferencia clave Entre la programación funcional y la programación imperativa es que la La programación funcional considera los cálculos como funciones matemáticas y evita el cambio de estado y datos mutables, mientras que la programación imperativa usa las declaraciones que cambian el estado de los programas..
Un paradigma de programación proporciona un estilo de construcción de la estructura y los elementos de un programa de computadora. Los paradigmas de programación ayudan a clasificar los lenguajes de programación según sus características. Un lenguaje de programación podría influir en más paradigmas. En el paradigma orientado a objetos, el programa se estructura utilizando objetos, y los objetos pasan mensajes utilizando métodos. La programación lógica puede expresar computación exclusivamente en términos de lógica matemática. Otros dos paradigmas de programación son la programación funcional y la programación imperativa. La programación funcional permite expresar cálculos como la evaluación de funciones matemáticas. La programación imperativa proporciona declaraciones que cambian explícitamente el estado de la memoria. Este artículo discute la diferencia entre la programación funcional y la programación imperativa..
1. Resumen y diferencia clave
2. ¿Qué es la programación funcional?
3. ¿Qué es la programación imperativa?
4. Similitudes entre la programación funcional y la programación imperativa
5. Comparación lado a lado - Programación funcional vs Programación imperativa en forma tabular
6. Resumen
La programación funcional se basa en las matemáticas. El principio clave de la programación funcional es que todos los cálculos se consideran como una combinación de funciones matemáticas separadas. Una función matemática asigna entradas a salidas. Supongamos que hay una función llamada f (x) = x * x. El valor x 1 se asigna a la salida 1. El valor x 2 se asigna a la salida 4. El valor x 3 se asigna a la salida 9 y así sucesivamente.
Figura 01: Ejemplo de lenguaje de programación funcional - Haskell
En la programación funcional, se consideran los patrones. Los lenguajes de programación funcional Haskell, utiliza el siguiente método para encontrar la suma de los números..
La función de suma tiene valores enteros, y el resultado también será un entero. Se puede escribir como suma: [int] -> int. La suma se puede hacer siguiendo los siguientes patrones.
suma [n] = n, la suma de un número es el número mismo.
Si hay una lista de números, se puede escribir de la siguiente manera. La n representa el primer número, y ns representa los otros números
suma (n, ns) = n + suma ns.
Los patrones anteriores se pueden aplicar para encontrar la suma de tres números que son 3,4,5.
3 + suma [4,5]
3 + (4 + suma [5])
3+ 4 + 5 = 12
Se dice que una función o una expresión tiene efectos secundarios si modifica algún estado fuera de su alcance o tiene una interacción observable con sus funciones de llamada además del valor de retorno. La programación funcional minimiza estos efectos secundarios. Los cambios de estado no dependen de las entradas de la función. Es útil para entender el comportamiento del programa. Un inconveniente de la programación funcional es que el aprendizaje de la programación funcional es más difícil en comparación con la programación imperativa.
La programación imperativa es un paradigma de programación que utiliza las declaraciones que cambian el estado de un programa. Se centra en describir cómo funciona un programa. Los lenguajes de programación como Java, C y C # son lenguajes de programación imperativos. Proporciona un procedimiento paso a paso sobre qué hacer. Los lenguajes de programación imperativos contienen estructuras como if, else, while, para bucles, clases, objetos y funciones..
Figura 02: Ejemplo de lenguaje de programación imperativo - Java
La suma de diez números se puede encontrar en Java de la siguiente manera. En cada iteración, el valor i se agrega a la suma y se asigna a la variable de suma. En cada iteración, el valor de la suma continúa sumándose a la suma calculada previamente.
int suma = 0;
para (int i = 0; i< =10; i++)
suma = suma + i;
La programación imperativa es fácil de aprender, entender y depurar. Es fácil encontrar el estado del programa debido al uso de variables de estado. Algunos inconvenientes son que puede hacer que el código sea largo y también puede minimizar la escalabilidad.
Programación funcional vs imperativa | |
La programación funcional es un paradigma de programación que considera la computación como la evaluación de funciones matemáticas y evita el cambio de estado y datos mutables.. | La Programación imperativa es un paradigma de programación que usa declaraciones que cambian el estado de un programa.. |
Estructuras | |
La programación funcional contiene llamadas a funciones y funciones de orden superior.. | La programación imperativa contiene if, else, while, para bucles, funciones, clases y objetos.. |
Lenguajes de programación | |
Scala, Haskell y Lisp son lenguajes de programación funcionales.. | C, C ++, Java son lenguajes de programación imprescindibles.. |
Atención | |
La programación funcional se centra en el resultado final.. | La programación imperativa se enfoca en describir cómo funciona un programa. |
Sencillez | |
La programación funcional es difícil.. | La programación imperativa es más fácil.. |
Un paradigma de programación proporciona un estilo de construcción de la estructura y los elementos de un programa de computadora. La Programación Funcional y la Programación Imperativa son dos de ellas. La diferencia entre la programación funcional y la programación imperativa es que la programación funcional considera los cálculos como funciones matemáticas y evita el cambio de estado y datos mutables, mientras que la programación imperativa usa las declaraciones que cambian el estado de los programas..
1. “Programación imperativa”. Wikipedia, Wikimedia Foundation, 28 de marzo de 2018. Disponible aquí
2. “Programación funcional”. Wikipedia, Wikimedia Foundation, 28 de marzo de 2018. Disponible aquí
3.Computerphile. YouTube, YouTube, 30 de agosto de 2013. Disponible aquí
1.'Haskell Logo'By Haskell1965 - Trabajo propio, (CC BY-SA 3.0) vía Commons Wikimedia
2.'14485179234'by Linux Screenshots (CC BY 2.0) vía Flickr