Programación funcional vs oop
Contenidos
return fib(n – 1) + fib(n – 2);Transparencia referencial: En los programas funcionales las variables una vez definidas no cambian su valor a lo largo del programa. Los programas funcionales no tienen sentencias de asignación. Si tenemos que almacenar algún valor, definimos nuevas variables en su lugar. Esto elimina cualquier posibilidad de efectos secundarios porque cualquier variable puede ser reemplazada por su valor real en cualquier punto de la ejecución. El estado de cualquier variable es constante en cualquier instante. Ejemplo: x = x + 1 // esto cambia el valor asignado a la variable x.
Clasificación de los lenguajes de programación funcionales
La programación funcional es la técnica de programación que acentúa los factores funcionales necesarios para crear e implementar los programas. La programación orientada a objetos (OOP) es la técnica de programación conceptual que utiliza objetos como clave. El modelo de programación utilizado en la programación funcional es un modelo de programación declarativo, mientras que la programación orientada a objetos utiliza el modelo de programación imperativo. En los programas funcionales, las variables y las funciones son los elementos principales del código, mientras que en los programas orientados a objetos, los objetos y los métodos son los elementos clave.
Tanto la programación funcional como la programación orientada a objetos son conceptos diferentes de lenguaje de programación. Ambos lenguajes, Programación Funcional y Programación Orientada a Objetos, tienen como objetivo proporcionar un código libre de errores, que pueda ser fácilmente comprensible, bien codificado, gestionado y de rápido desarrollo.
La programación funcional y la programación orientada a objetos utilizan métodos diferentes para almacenar y manipular los datos. En la programación funcional, los datos no pueden almacenarse en objetos, y sólo pueden transformarse creando funciones. En la programación orientada a objetos, los datos se almacenan en objetos. La programación orientada a objetos es ampliamente utilizada por los programadores y también tiene éxito.
Lenguajes funcionales
return fib(n – 1) + fib(n – 2);Transparencia referencial: En los programas funcionales las variables una vez definidas no cambian su valor a lo largo del programa. Los programas funcionales no tienen sentencias de asignación. Si tenemos que almacenar algún valor, definimos nuevas variables en su lugar. Esto elimina cualquier posibilidad de efectos secundarios porque cualquier variable puede ser reemplazada por su valor real en cualquier punto de la ejecución. El estado de cualquier variable es constante en cualquier instante. Ejemplo: x = x + 1 // esto cambia el valor asignado a la variable x.
Por qué la programación funcional
Que la programación funcional se opone a la programación orientada a objetos de alguna manera fundamental es un cliché de programación muy extendido. Enumeramos características como la inmutabilidad, las funciones y la composición en contraste con la mutabilidad, las clases y la herencia. Se promociona Clojure y Haskel como lenguajes funcionales en un extremo del espectro y C++ y Java como lenguajes orientados a objetos en el otro. Sin embargo, articular la composición del espectro es otra historia. Ninguna de estas trivialidades revela por qué ciertas características se ven juntas o separadas, por qué los propios lenguajes pueden inclinarse en una u otra dirección, o cualquier diferencia inherente en la semántica del programa.
Sin embargo, el cliché “funciones vs. objetos” es un artefacto de una profunda verdad sobre las estructuras y la semántica de los programas. Al igual que el aceite y el agua, la programación funcional y la orientada a objetos no pueden coexistir. Podemos elegir objetos o funciones, pero no ambos a la vez, como se anuncia. Además, la elección entre paradigmas tiene implicaciones dramáticas para nuestros programas, ya que ofrece “visiones del mundo” opuestas que implican conceptos tan básicos como la identidad, el cambio, el estado e incluso el tiempo.