Es curioso cómo en el mundo tecnológico van cambiando los paradigmas vigentes. Podríamos incluso compararlos con el mundo de la moda, donde sin llegar al detalle de las temporadas, a veces parece que las tendencias cambian de forma caprichosa. Con la programación ocurre algo parecido, pero casi siempre siguiendo una lógica razonada. Un caso muy particular es el retorno de la programación funcional, muy conocida por sus siglas en inglés FP. Esta forma de enfocar el código informático tiene ya bastantes años pero históricamente se ha mantenido en un segundo plano en favor de la programación imperativa. Sin embargo, con la implantación masiva de los procesadores multinucleo, incluso en dispositivos móviles, ésta ha vuelto con fuerza a la palestra de la productividad.
La programación funcional es un paradigma de programación en el que se incide especialmente en el uso de funciones y de estructuras de datos inmutables. En principio, podría parecer que esto no aporta mucho en comparación con el actual modelo de programación imperativa, pero cuando tenemos que trabajar con procesos paralelos que tienen que interactuar entre sí esto es una ventaja muy notable. Entonces, ¿simplemente esta ventaja justifica el uso de este tipo de programación? Cualquiera que haya tenido que sincronizar procesos seguramente se habrá encontrado con su propio infierno particular, con errores muy difíciles de depurar, que ocurren en situaciones esporádicas con causas desconocidas. En estos casos, aplicar un diseño robusto, no que minimice, sino que evite completamente estas situaciones, puede ser la diferencia entre:
- Una aplicación que colapse en su desarrollo, ya que nadie puede diagnosticar cual es el problema exacto.
- Una aplicación que puede crecer ilimitadamente en funcionalidades y complejidad sobre una base muy bien cimentada.
Cualquier director técnico o cliente no dudaría en optar por la segunda opción. A pesar de ello, ésta no es la única ventaja. La programación funcional ofrece también una serie de ventajas productivas a la hora del mantenimiento del código, entre ellas encontramos que éste suele ser más sencillo de comprender y por lo tanto, puede extenderse y/o modificarse con mayor facilidad.
No querría que pareciese que todo son ventajas con la programación funcional y que, por ejemplo, los lenguajes orientados a objetos no tienen nada que aportar. Al contrario, la combinación de ambos paradigmas aporta lo mejor de ambos mundos, todas las ventajas y ninguna limitación. Esta síntesis es justamente la filosofía de Scala, uno de los lenguajes de programación más eficaces que podemos encontrar.
En ASM Web Services desde hace tiempo que conocemos la existencia y bondades de la programación funcional, pero la puesta en práctica de ésta no era tan sencilla debido a la falta de infraestructura general para este tipo de programación. Esta situación ha cambiado radicalmente con la implementación de Scala dentro de ASM. Este lenguaje ha demostrado una capacidad de adaptación, estabilidad, madurez y aplicación en sectores críticos como ningún otro. Incluso en sectores industriales donde la programación funcional era el vehículo habitual, Scala está desplazando a otros importantes lenguajes, como por ejemplo Erlang. Una de las ventajas con respecto a los anteriores lenguajes funcionales radica en que Scala se ejecuta sobre la máquina virtual de Java (JVM), lo que permite plena compatibilidad con las innumerables librerías de Java, así como mantener sus posibilidades multiplataforma.
Ahora existe un ecosistema completo, que es el adoptado en ASM, donde frameworks web, prácticas de programación funcional y comodidad con el uso de clases y objetos pueden combinarse para la mayor productividad de nuestros clientes, sin ninguno de los inconvenientes que históricamente se habían dado. Y todo ello teniendo en cuenta que no sólo estamos antes una tecnología puntera, sin ningún tipo de competencia madura, sino que estamos ante una revolución tecnológica dentro del mundo del desarrollo de software. Es por ello que estar trabajando hoy en día con una tecnología que va a ser el estándar dentro de unos años, nos produce una gran satisfacción. No sólo por podernos adelantar enormemente a la tendencia, sino por poderla ofrecer hoy en día como una ventaja competitiva a nuestros clientes en lugar de tener que esperar unos cuantos años.
Algunos lenguages como PHP, Java o C# están adoptando en sus últimas versiones algunas de estas características, pero mezclándolas con las actuales. Ésta, tal vez no es la mejor de las maneras de encarar el problema, pues la compatibilidad con versiones anteriores puede llegar a limitar enormemente las ventajas y posibilidades de la programación funcional. Algunas empresas como Apple, por poner un ejemplo, han optado por una estrategia más radical y parecida a la nuestra. Apple, concretamente, ha decidido dar un gran salto e incorporar todas las características de la programación funcional. Para ello ha creado Swift, un nuevo lenguaje que comparte el 90% de las características de Scala, algunas de ellas existentes desde hace años. En Swift, Apple ha depositado toda su confianza y pretende substituir a su actual Objective-C como vehículo oficial para el desarrollo de cualquier aplicación, tanto para iOS como para Mac OS X. No podemos verlo sino como un acierto, pues esta es nuestra misma apuesta desde hace ya un tiempo, estamos convencidos que clientes y usuarios sabrán valorar está decisión.