Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Scala: La escalera a la Programación Funcional

299 visualizaciones

Publicado el

Qindel Group estuvo representada en el evento Open Expo 2017 por Ignacio Navarro, Desarrollador Senior de la empresa.
Navarro es programador de Scala y colaborador habitual de proyectos y charlas de programación funcional. Fue parte del MeetUps Haskell, donde habló de Scala, un lenguaje multiparadigma (Funcional y Orientado a Objetos) que corre sobre la JVM (*).

Publicado en: Tecnología
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Scala: La escalera a la Programación Funcional

  1. 1. Scala: La escalera a la Programación Funcional 1st June 2017 - Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 Scala Meetup @ Madrid
  2. 2. Presentación Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 https://scalaes-register.herokuapp.com/
  3. 3. Scala: 2 en 1 Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 Scala es un lenguaje multiparadigma (Funcional y Orientado a Objetos) que corre sobre la JVM (*) (*) Si no contamos con ScalaJS y ScalaNative
  4. 4. Scala: Más allá de Java Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 Scala contiene todo lo necesario para hacer orientación a objetos. (*) Si no contamos con ScalaJS y ScalaNative ● Todo es un objeto ● Acceso Unificado ● “Herencia Multiple” (Traits y Resolución en diamante) ● Métodos ● etc.
  5. 5. Scala: Programación Funcional Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 ● Higher-Order functions ○ FunctionN, lambdas ● Inmutability ○ val vs var ○ lazy evaluation ● Algebraic data types ○ case classes ○ sealed classes (pattern matching) ● Type classes ● Implicit classes & conversions ● traits/mixins ● Monads ○ Monad syntax: for-comprenhesion ○ Type constructors ● Type-Level computing
  6. 6. La P. Funcional es cool Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017
  7. 7. Scala está en todas partes Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017
  8. 8. Scala y Java Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 ● ¿Tienes Java? Entonces tienes Scala ○ Tan fácil como añadir 1 plugin y 2 librerías en tu pom.xml ● Todo el ecosistema de Java a tu alcance
  9. 9. Ecosistema Scala Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 ● El ecosistema Scala es muy maduro y grande Monix MacWire
  10. 10. F.P. vs O.O.P Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 ● La Programación Funcional y la Orientación a Objetos son ortogonales y Scala permite usar las ventajas de ambos. ● Los grandes rasgos de la PF son: ○ Inmutabilidad ○ Funciones de orden superior ○ Funciones puras
  11. 11. Ventajas de la PF Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 ● La programación funcional nos permite hacer: ○ Programas testeables ○ Componibles ○ Concurrentes ○ Modulares ○ Correctos ○ ...
  12. 12. Funciones Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 ● Una función recibe N parámetros y los convierte en un valor de salida def sum(x: Int, y:Int): Int = x + y
  13. 13. Función orden superior I Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 ● Una función de orden superior recibe otras funciones como parámetros def people(connection: Connection): List[Person] = { val list = connection.select(”SELECT * FROM PEOPLE”) list }
  14. 14. Función orden superior II Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 ● Esta función sería testeable def people(fun: String => Person): List[Person] = { val list = fun(”SELECT * FROM PEOPLE”) list }
  15. 15. Inmutabilidad Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 ● La inmutabilidad: ● SOLID X 1000 ● No nos importa el estado ● Staless val list = List(1,2) val newList = 1 :: list
  16. 16. Funciones Puras I Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 ● Una función es pura si para el resultado de la misma solo depende de los parámetros de la entrada y no tiene efectos secundarios. ● Si un programa es puro permite la concurrencia. ● El estado compartido es la raíz de todo mal
  17. 17. Funciones Puras II: Side effects Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 ● Una efecto secundario produce un cambio sobre una variable fuera del scope de la misma. def people(connection: Connection): List[Person] = { val list = connection.select(”SELECT * FROM PEOPLE”) println(list) list }
  18. 18. Funciones Puras III Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 ● Una efecto secundario produce un cambio sobre una variable fuera del scope de la misma. val connection: Connection = DBConnection() def people(): List[Person] = { val list = connection.select(”SELECT * FROM PEOPLE”) list }
  19. 19. Currying Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 ● La programación funcional nos permite hacer: def sum(x: Int, y:Int): Int = x + y def sum(x: Int)(y:Int): Int = x + y def sum2(y:Int): Int = sum(2)_ sum2(3)
  20. 20. Abstracción y composición Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 val fut:Future[Int] = future(2 + 3) fut.map(x => s“El valor es $x”)
  21. 21. ¡Gracias! Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 www.meetup.com/Scala-Programming-Madrid (@MadridScala) ● Conferencias ○ LXScala (Lisboa) ○ ScalaSwarm (Oporto) ○ LambdaWorld (Cádiz) ○ ScalaDays (Copenhague) https://scalaes-register.herokuapp.com/

×