Scala 101
TLDR; Resumen de la Sesión Scala 101
En una lluviosa tarde de viernes Fede Fernández(@fede_fdz) se decidió a hacernos una introducción a la programación funcional de la mano de su amado Scala. La inmutabilidad, las funciones puras y los monads hicieron explotar nuestro mundo.
Desde la organización el día no prometía demasiado: la lluvia y el hecho de ser viernes por la tarde hacía pensar que tendríamos una sesión íntima con Fede. Sin embargo de nuevo nuestra maravillosa comunidad nos sorprendió llenando casi el aforo esperado en RES.
El punto de partida era claro, ¿que es la programación funcional? ¿qué es Scala?, Fede empezó cañero ante una audiencia mayoritariamente en blanco sobre programación funcional y Scala, eliminando rápidamente la guerra entre la programación funcional y la orientada a objetos a base de pequeñas bromas. De forma distendida nos fue comentando las ventajas de la primera frente a la segunda, lo que propició la participación y divertimento de su público durante toda la jornada.
Fede hizo un repaso por lo siguiente temas (Podeis ver su presentación aquí):
Las características de Scala:
- Moderno
- Multi paradigma: Es funcional!!! y Es orientado a objetos!!!
- Extensible: está diseñado para interoperar con la Jvm.
- Es de tipado estático
Recursos para empezar con Scala:
-
Scala Online: scastie.scaal-lang.org
-
Scala Exercises scala-exercises
-
Functional Programming Principles in Scala Curso Coursera
-
Functional Programming in Scala Specialization Curso Coursera
Visión inicial del lenguaje Scala
- Declaración de variables y clases.
- Los Traits (similar a las interfaces).
- Funciones y uso de colecciones.
Inmutabilidad:
Que ventajas tiene y porque nuestros objetos debería quizás ser inmutables.
Funciones puras:
Funciones que dependen únicamente de la entrada, nunca del contexto u otras partes del sistema. Además no tienen ningún efecto secundario.
Efectos colaterales:
Debemos evitarlos y scala es una buena forma de hacerlo, pero también se puede usar mal…
Monads:
- Que es un monad (¿alguien lo sabe realmente?)
- No hay monad en Scala, pero hay librerías que los aportan.
- Option: El monad de está o no está
- Either: El monad de parte derecha y parte izquierda.
- Try: El monad de resultado o error.
- Future: El monad que te prometo que será un valor en el futuro, pero de mientras toma este recibo jajajaja.
Después de todo esto, ya muy cansados, nos fuimos al networking donde terminamos de tratar algunas cosas pendientes y hablamos de cosas mucho más alejadas de estos temas de lo que podáis imaginar.
Una gran tarde desde luego. Gracias a Fede, a RES y a esta gran comunidad.