No hay día que no aparezca un nuevo artículo sobre cuánto ha crecido Internet, cómo…
La programación funcional era, o incluso sigue siendo, una gran desconocida para gran parte del sector tecnológico. La famosa programación orientada a objetos, erigida como adalid de la modernidad tecnológica era vista como único paradigma de programación válido tanto en el entorno profesional como en el entorno educativo.
En términos llanos, la programación orientada a objetos fue ideada para entornos en los que hay que tratar con información muy cambiante y se basa en la clasificación de la información a tratar por tipos. De este modo nos brinda un sistema de clases y herencias con los que resulta muy sencillo agrupar esos “tipos” de información (objetos) con las mismas características y definir un conjunto de normas (clases) para que la información similar sea tratada de igual manera. Incluso, unos tipos de información pueden heredar varios aspectos de otros con los que guarde cierto parecido y personalizar sólo algunos aspectos.
Como aspecto negativo, en estos entornos resulta realmente delicado hacer nuevas operaciones con los mismos “tipos” de información. Es decir, añadir funcionalidades suele implicar modificar mucho código múltiples clases diferentes.
En los ecosistemas web, una vez puesta en producción una aplicación web, no es habitual que sea necesario añadir nuevos tipos de información con los que lidiar. Por ejemplo, en un e-Commerce una vez creado un conjunto de recursos CRUD (los habituales Crear, Leer, Actualizar y Borrar) para tratar con usuarios, fabricantes, productos, facturas, etc. no es habitual crear nuevos tipos de información. Pero, por otro lado, sí es muy habitual, y cada vez más, crear nuevos procedimientos para tratar esa información y añadir nuevas funcionalidades.
La programación funcional fue ideada, casi en términos antagónicos a la orientación a objetos, para tratar procesos en los que los «tipos» de información apenas varía, pero la forma de tratarla sí evoluciona rápidamente. En resumen: es sencillo añadir nuevas funcionalidades pero resulta tedioso añadir nuevos tipos de información a posteriori.
Además, ciertos tipos de lenguajes funcionales son especialmente útiles en entornos en los que la concurrencia gana mucho protagonismo. En otras palabras, el entorno ideal para un proyecto desarrollado con lenguajes funcionales son aquellos en los que existen unos tipos de información estables, en los que es necesario añadir funcionalidades regularmente y en los que existen muchas operaciones simultáneas de poca carga para la CPU. Efectivamente, ¡una aplicación web moderna es la candidata perfecta para la programación funcional!
Porque aún está en sus inicios. La programación funcional no es en absoluto un concepto nuevo, pero su uso extensivo está empezando a despegar recientemente. El auge de lenguajes como Clojure, Rust o Lisp (especialmente en sus dialectos Common Lisp o Scheme) da buena muestra de ello. Es destacable el caso de Erlang, un clásico en el mundo de las telecos. Erlang es un lenguaje funcional (concurrente más bien, pero funcional al fin y al cabo) creado por Ericsson en la década de los años 90 para gestionar la programación de switches de telefonía siguiendo unas estrictas premisas que ya vimos en el anterior artículo de El Internet de las “Muchas” Cosas. Destaca entre todos el buque insignia de Ericsson: el switch AXD 301, el famoso caso de éxito capaz de conseguir una disponibilidad de nueve nueves, es decir, 99,9999999%. A día de hoy Erlang cuenta con otros grandes casos de éxito a sus espaldas como los dos millones de conexiones concurrentes por máquina de WhatsApp, el núcleo que da vida a los universos online para millones de jugadores en World of Warcraft, parte del sistema EC2 de Amazon e, incluso, el motor del chat de Facebook con más de 100 millones de usuarios mensuales. Además de, por supuesto, soportar bajo equipamiento de Ericsson el 50% del tráfico de telefonía en todo el mundo.
Elixir es un lenguaje funcional que corre sobre BEAM, la eficiente y más que estable máquina virtual de Erlang. Este lenguaje fue creado por José Valim, uno de los programadores principales del núcleo de Ruby On Rails, de donde toma prestada gran parte de su sintaxis y productividad.
Es bastante llamativo ver en el entorno de Ruby cómo Elixir va ganando adeptos, relevancia e, incluso, muchos desarrolladores y consultoras empiezan a tener mucha más demanda de proyectos con Elixir, especialmente en la bahía de San Francisco. Asimismo los grupos de usuarios y meetups proliferan a buen ritmo por todo el mundo. En España Elixir Barcelona fue el primer grupo en formarse y, más recientemente, su equivalente en la capital Madrid Elixir nos ha sorprendido con una muy alta participación desde su primera ponencia a cargo de uno de los imprescindibles del circuito startup: el siempre interesante Javier Cuevas.
Para poder competir con Ruby, Elixir necesitaba su propio “on Rails”, es decir, su framework web donde resultara atractivo realizar las tareas habituales de una app web, una API, etc. Y de esta idea nació Phoenix, una de las grandes promesas para los próximos años. A día de hoy cuenta con un gran auge y las pruebas de rendimiento, en las que llega a soportar 2 millones de conexiones concurrentes por máquina la equiparan a Erlang deparándole un futuro muy prometedor.
Incluso en el entorno front-end, pese a no estar en el mismo espectro de estos lenguajes de programación, también se toman prestadas muchas ideas de la programación funcional dejándose influenciar por ese “sabor funcional” tan de moda que, también, resulta especialmente útil de cara a mantener consistente el estado de las aplicaciones. Como hacen, por ejemplo, React y React Native, dos de las librerías JavaScript más en boga en la actualidad amparadas bajo la tutela de Facebook.
Podríamos profundizar durante horas acerca de muchos de los aspectos que hemos tratado en este artículo. Por eso espero tus comentarios en este post y Redes Sociales para desarrollar series de artículos que resulten aún más interesantes. ¡Gracias por participar!
La logística y el transporte están atravesando una revolución tecnológica que está transformando la manera…
Estamos observando una revolución silenciosa pero impactante, propiciada por el Internet de las Cosas (IoT).…
En un mercado inundado de opciones de servicio Cloud, las empresas deben decidir cuidadosamente cuál…
La Inteligencia Artificial (IA) uno de los temas más discutidos y fascinantes de nuestro tiempo.…
En un panorama empresarial marcado por una digitalización acelerada, la gestión de la información se…
Desde nuestros inicios hace 30 años, hemos observado de cerca la transformación de Internet, de…