Programacion Funcional en Python 1
La programacion funcional es un paradigma de desarrollo, una forma de atacar los problemas que enfrentamos dia a dia en el entorno de la tecnologia, y a su vez, las pautas para que concertemos dentro de un equipo de desarrollo como vamos a atacar el problema que se nos presente viendo las ventajas que ofrece el paradigma funcional frente a otras como estructurada o orientada a objetos.
Definiciones
A partir de la programacion funcional se ha logrado aportar al desarrollo un monton de ventajas que otros paradigmas ofrecerian pero con mayor complejidad, es por ello que este post se me hace vital no solo porque la forma de pensar con dicho paradigma es totalmente diferente a estructurado(EP) o Orientado a Objetos(OOP) de la que normalmente ya que la tendencias previas del mercado han ofrecido y solicitado para sus soluciones de software.
Es asi que aunque no muy viejo es la solucion mas apegada a las matematicas como forma de atacar el problema que tenemos al frente, y es con ello que encontramos que las funciones cobran una gran importancia, y es que se convierte en una moneda de cambio, a cada funcion le vamos a ofrecer otra funcion y las funciones en si se comportan como una variable, ahi es donde entra en la ecuacion python.
Programacion Estructurada
1 | # Paradigma Estructurado |
En el Paradigma estructurado se observa la asignacion desde el inicio, el proceso en el punto medio asi como tambien un resultado esperado a partir de ciclos y condicionales, normalmente la forma de programar y ver el mundo es asi, sin embargo nosotros tenemos automatizado dicho proceso mental, asi que reducimos ese proceso y analizamos el proceso como una lista de la siguiente manera:
- Tomo Valor 1
- Tomo Valor 2
- Verifico quien es mayor de los dos
- imprimo quien es el mayor
- sumo los dos valores en uno nuevo
- imprimo la suma de los dos numeros
- itero el valor de los dos sumados
- por cada iteracion imprimo el numero y digo que es menor
Como se puede observar en la lista funciona como un pseudocodigo, normalmente las personas analizamos nuestras tareas de rutina diarios y con ello atacamos el problema sin importar que, sin embargo muchas veces cuando el codigo es mas largo(que en programacion estructurada es muy facil llegar allá), empezamos a tener problemas como desarrolladores a leerlo y en ultimas mantenerlo, otro de esos tipicos problemas que posee el desarrollo con este paradigma es lo dificil que es testear y optimizar.
Programacion Orientada a Objetos
Cuando vemos las dificultades resultantes que posee la programacion estructura que puede tender a la programacion spaghetti se buscaron formas para que programar no sea algo que genere sufrimiento y que pueda conllevar a un codigo mas facil de ser trabajado a futuro, adaptable ante nuevas mejoras y capaz de generar segmentos de codigo con la capacidad de ser usados en otros proyectos.
1 | class Input: |
Programacion Funcional
Todos los demas paradigmas aunque no parezca cierto son un poco mas modernos y son construidos con el objetivo de solucionar los problemas que aquejaban al presente por el cual fue construido, sin embargo, con el tiempo cada uno de los paradigmas presentaban dificultades a la hora de avanzar(eso no indica que no se usen o se hayan perdido en el tiempo, cada paradigma bien usado es bueno ya que atacara la solucion). La programacion funcional en si misma guarda la esencia de las matematicas y la logica en si que son la base de las construcciones de todos los lenguajes de programacion por si mismo pueden llegar a ser complicados o en parte situacionales.
Cuando se trabaja con la programacion funcional el objetivo en si es el uso de procesos sin necesidad de llegar a la repeticion, es por eso que las matematicas y la logica son cada vez mas participes.
1 | def input(msg: str) -> str: |
La caracteristica que tiene es que las funciones funcionan por si mismas, el uso de las funciones es la principal caracteristicas y a su vez hay funciones que tienen de otras funciones, eso normalmente se le conoce como curry.
Python es un lenguaje multiparadigma eso quiere decir que la disponibilidad de paradigma la escoge el equipo de desarrollo/desarrollador teniendo la posiblidad de evaluar los alcances y limitaciones de cada uno de estos paradigmas. Esta caracteristica ademas de varias otras permitiran acceder a todo el poder que tiene la tecnologia a nivel funcional.