Que es la Programación Funcional?

Cristian Rengifo
2 min readMar 1, 2019

Es un paradigma de programación declarativa, osea, nos enfocamos en que estamos haciendo y no en cómo se está haciendo (enfoque imperativo), no se usan ciclos o condiciones.

Ventajas

  • Altos niveles de abstracción: El código muestra un mayor énfasis en el “¿qué se hace?” en lugar del “¿cómo se hace?”.
  • Código declarativo y comprensible: Debido a los altos niveles de abstracción, los programas que aplican este paradigma suelen ser más cortos y fáciles de entender que sus versiones en programación imperativa.
  • La evaluación perezosa: Esta estrategia de evaluación permite realizar cálculos por demanda, evitando gasto computacional innecesario. El ejemplo más claro está en la utilización de listas infinitas.
  • Las características del paradigma, en especial la utilización de funciones puras, permiten realizar ciertas optimizaciones particulares.
  • Mayor probabilidad de aplicar expansión en línea: Esta es una optimización del compilador que sustituye los llamados a una función por la definición directa de dicha función, de tal forma que se ahorre tiempo y espacio durante la ejecución.
  • Las características del paradigma, en especial la utilización de funciones puras, permiten realizar ciertas optimizaciones particulares.
  • Optimizaciones a partir de la utilización de funciones puras: Las funciones puras nos garantizan la ausencia de efectos secundarios.

Entonces, ¿cuando es recomendado usar programación funcional?, Es recomendado programar usando este paradigma cuando nuestro objetivo son, mantenibilidad, la capacidad de comprensión de código y un bajo índice de errores, escoja en su lugar la programación imperativa si vas a realizar un software que requiera alto rendimiento tal como un juego, un antivirus, controladores o sistemas operativos.

Desventajas

  • Dificultad inicial para producir buen código: Esto debido a que un programador suele estar acostumbrado al pensamiento de la programación imperativa, tomando un poco de tiempo que la persona logre adaptarse y generar código útil.
  • Generación de grandes cantidades de short-lived garbage: Esto se debe principalmente a la característica de inmutabilidad. Los garbage collectors tienden a optimizar este aspecto.
  • Menor eficiencia en el uso de CPU comparados con su contraparte imperativa: Debido principalmente a que muchas estructuras de variables mutables (como los arreglos) tienen una sencilla implementación en un paradigma imperativo, mientras que en la programación funcional no es fácil crear componentes homólogos inmutables con la misma eficiencia.

Ventajas técnicas

  • Expresividad:
  • Seguridad
  • Paralelismo

Lenguajes de programación

Estos son algunos de los lenguajes de programación funcionales.

  • Scala
  • Haskell
  • Clojure
  • Elixir
  • Erlang

En la próxima publicación se hablará sobre la programación funcional en elixir y se harán varias publicaciones sobre este lenguaje y sus herramientas.

--

--

Cristian Rengifo

Software Developer #ASPNET, #WebApi, #MVC, #Angular, #Informix4GL and learning #Elixir