Uno de los grandes paradigmas de la programación es la programación funcional.
¿resurge la moda de la programación funcional?
Estudiar Ingeniería en Informática te acerca a un mundo tecnológico donde la renovación es constante. El Ingeniero Federico Kereki nos lo explica en detalle.
La programación funcional, un paradigma con orígenes en abstrusas áreas de las Matemáticas, ha resurgido hoy en día como herramienta importante para desarrollo de todo tipo de aplicaciones.
En computación, la programación funcional es un paradigma que tuvo sus orígenes hace casi un siglo atrás, pero que está renaciendo hoy en día para el desarrollo de aplicaciones de todo tipo.
Si queremos saber de dónde salió esta idea, tendríamos que ir hacia los años 30, cuando se estaba estudiando el tema de la “computabilidad” (¿qué es computable?, ¿Hay algo que no se pueda computar?) y nació con el sonoro nombre de “cálculo lambda” (o “cálculo λ”), inventado por el matemático Alonzo Church… ¡años antes de que existieran computadoras programables!
Sólo mucho tiempo después, casi llegando a los años 60, se creó el lenguaje LISP, con fuertes raíces en la programación funcional, y muy aplicado a temas de Inteligencia Artificial, entre otros. Este lenguaje sería el primer caso de un lenguaje funcional usado ampliamente… de hecho, LISP es el segundo lenguaje más viejo aún en uso hoy en día, precedido sólo por FORTRAN para ambientes de cálculo numérico.
¿Por qué la programación funcional no fue aplicada generalmente?
Sus orígenes tan matemáticos probablemente ayudaron bastante a que fuera dejada de lado, y las áreas en las que se aplicaba no eran exactamente las áreas más comunes o usuales para el desarrollo de sistemas, para todo lo cual usualmente se optaba por lenguajes procedurales y, más cercano en el tiempo, orientados a objetos.
La programación funcional se basa en la definición y evaluación de funciones, evitando por ejemplo el concepto de variables, cuyo contenido puede cambiar a lo largo de la ejecución de un programa – ¡y la mera idea de trabajar sin variables suele resultar incomprensible para los programadores!
¿Qué cambió hoy para que la programación funcional vuelva a ser aceptada?
Un factor clave es la aparición de lenguajes modernos que mezclan paradigmas, y por ejemplo permiten no sólo la programación orientada a objetos, sino también la programación funcional más pura, quedando a discreción del programador qué tan allá se atreva a llegar con esta última.
Aunque existen múltiples lenguajes que permiten o se basan en programación funcional (Erlang o Scala son dos entre muchos ejemplos) probablemente el caso más conocido sea JavaScript, el lenguaje creado para ser usado en los navegadores e Internet. JavaScript tuvo un origen un poco “a los tumbos” – al grado de que su primera versión, de 1995, fue escrita por Brandon Eich en tan sólo 10 días. (Trivia: el nombre original fue Mocha, luego cambiado por LiveScript, antes de que se optara finalmente por JavaScript, con la intención de apropiarse un poco de la popularidad del lenguaje Java, ¡con el que no estaba relacionado!) A lo largo de los años, JavaScript fue creciendo, y hoy en día (estandarizado bajo el nombre EcmaScript) incluye todos los elementos necesarios como para poder programar funcionalmente si uno lo desea y compite con otros como Python.
Programación funcional
Hoy en día, importantes herramientas para desarrollo web se basan en, o adoptan conceptos de, la programación funcional. React, por ejemplo, toma un enfoque funcional para producir y manipular páginas web – y otras herramientas, como Angular (no en las versiones viejas, 1.x, ahora rebautizadas como AngularJS, sino en sus versiones más recientes) están también adoptando ideas funcionales clave. Y, si uno quiere ser 100% funcional, puede adoptar Elm, y tendrá un ambiente totalmente funcional para el desarrollo para la web.
En resumen, si bien los orígenes de la programación funcional estaban dirigidos hacia profundos temas matemáticos, hoy en día se puede aplicar tal paradigma en esencialmente todo contexto, y la fama de “oscuridad” o “dificultad” que existía, ya ha disminuido en mucho, y es perfectamente posible recomendar, a todo estudiante de computación, que practique asiduamente el uso de la programación funcional.
Federico Kereki es Ingeniero de Sistemas en Computación, con una maestría en Educación, y más de 30 años de experiencia como consultor, desarrollador, profesor, y escritor. Corrientemente es un “Subject Matter Expert” en Globant, y profesor en UDE de diversas asignaturas, habiendo anteriormente sido profesor en la UDELAR y ORT. Ha escrito muchos artículos para revistas y páginas en la web, un par de librillos sobre seguridad de computadores, y dos libros: “ESSENTIAL GWT” y “MASTERING JAVASCRIPT FUNCTIONAL PROGRAMMING”, estando próximo a terminar un tercero sobre desarrollo con JavaScript, para Packt Publishing.