El paradigma de programación funcional es muchas veces evitado por desarrolladores alrededor del mundo, quienes prefieren seguir desarrollando aplicaciones usando el paradigma de programación orientada a objetos, el cual es más conocido y ampliamente usado. Este rechazo hacia la programación funcional ocurre ya sea por simple falta de conocimiento o porque los desarrolladores tienden a pensar que es algo difícil y útil solamente en ámbitos académicos. Esto es probablemente porque hay muchos conceptos nuevos usualmente explicados empleando muchos términos matemáticos. Nada más alejado de la realidad: la programación funcional nos ayuda a resolver muchos de los problemas que se presentan al desarrollar software, especialmente programas que requieren altos niveles de asincronicidad y concurrencia, y si es explicada adecuadamente no tiene por qué ser algo difícil de aprender.
El lenguaje Scala combina lo mejor de los mundos de la programación funcional y orientada a objetos, y provee completa interoperabilidad con el gran ecosistema de Java. Además, dentro del ecosistema de Scala, existen librerías como ZIO, que permiten a los desarrolladores ser altamente productivos y crear aplicaciones modernas, altamente performantes y concurrentes, aprovechando los principios de la programación funcional sin que ello represente una enorme barrera de entrada.
En este artículo trataremos los principios de la programación funcional, y a continuación veremos cómo, gracias a Scala y ZIO, podemos crear aplicaciones que resuelvan problemas del mundo real. Como ejemplo ilustrativo, implementaremos el juego del ahorcado.