SlideShare una empresa de Scribd logo
Scala: La escalera a la
Programación Funcional
1st June 2017 - Madrid
Ignacio Navarro Martín @inavarromartin
#OpenExpo2017
Scala Meetup @ Madrid
Presentación
Scala Meetup @ Madrid
Ignacio Navarro Martín @inavarromartin
#OpenExpo2017
https://scalaes-register.herokuapp.com/
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
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.
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
La P. Funcional es cool
Scala Meetup @ Madrid
Ignacio Navarro Martín @inavarromartin
#OpenExpo2017
Scala está en todas partes
Scala Meetup @ Madrid
Ignacio Navarro Martín @inavarromartin
#OpenExpo2017
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
Ecosistema Scala
Scala Meetup @ Madrid
Ignacio Navarro Martín @inavarromartin
#OpenExpo2017
● El ecosistema Scala es muy maduro y grande
Monix
MacWire
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
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
○ ...
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
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
}
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
}
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
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
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
}
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
}
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)
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”)
¡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/

Más contenido relacionado

PPTX
Why Everyone Needs DevOps Now: 15 Year Study Of High Performing Technology Orgs
PDF
iSQI Certification Days DASA – DevOps & ISTQB Frank Frambach
PDF
5 claves para un trayecto exitoso a DevOps
PPTX
New DevOps for the DBA
PDF
Innotech Austin 2017: The Path of DevOps Enlightenment for InfoSec
PPSX
PPTX
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
PPTX
Accenture DevOps: Delivering applications at the pace of business
Why Everyone Needs DevOps Now: 15 Year Study Of High Performing Technology Orgs
iSQI Certification Days DASA – DevOps & ISTQB Frank Frambach
5 claves para un trayecto exitoso a DevOps
New DevOps for the DBA
Innotech Austin 2017: The Path of DevOps Enlightenment for InfoSec
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
Accenture DevOps: Delivering applications at the pace of business

Similar a Scala: La escalera a la Programación Funcional (20)

PPTX
Introducción a Scala
PDF
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
PDF
Trabajo práctico sobre Clojure, Evaluación de un Lenguaje de Programación
PDF
Paradigmas de programación y un vistazo a lo funcional (Cuarta meetup Scala P...
PPTX
Codemotion 2014 Scala @real life
PPTX
Scala @ Real Life Codemotion 2014
PDF
Programación Funcional en Scala
PDF
Descubriendo scala
PPTX
Programación funcional con Scala
PDF
Programación funcional, una nueva forma de resolver problemas.
PDF
Apache spark meetup
PDF
Procesamiento de datos a gran escala con Apache Spark
PPTX
4 Introducción al lenguaje Scala
PPTX
Meetup Fun[ctional] spark with scala
PDF
Fun[ctional] spark with scala
PPTX
Introducción a Scala
PPTX
Scala @ Real life
PPTX
Scala@real life
PDF
Programación funcional Core Upgrade Febrero 2018 (ejemplos con Javascript)
Introducción a Scala
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Trabajo práctico sobre Clojure, Evaluación de un Lenguaje de Programación
Paradigmas de programación y un vistazo a lo funcional (Cuarta meetup Scala P...
Codemotion 2014 Scala @real life
Scala @ Real Life Codemotion 2014
Programación Funcional en Scala
Descubriendo scala
Programación funcional con Scala
Programación funcional, una nueva forma de resolver problemas.
Apache spark meetup
Procesamiento de datos a gran escala con Apache Spark
4 Introducción al lenguaje Scala
Meetup Fun[ctional] spark with scala
Fun[ctional] spark with scala
Introducción a Scala
Scala @ Real life
Scala@real life
Programación funcional Core Upgrade Febrero 2018 (ejemplos con Javascript)
Publicidad

Último (20)

PDF
Maste clas de estructura metálica y arquitectura
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPTX
Introduccion a servidores de Aplicaciones (1).pptx
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
DOCX
Trabajo colaborativo Grupo #2.docxmkkkkkkl
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PDF
Estrategia de apoyo tecnología miguel angel solis
DOCX
Trabajo colaborativo Grupo #2.docxmmuhhlk
DOCX
Las nuevas tecnologías en la salud - enfermería técnica.
PPT
Que son las redes de computadores y sus partes
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
ACTIVIDAD 2.pdf j
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
clase auditoria informatica 2025.........
PDF
La electricidad y la electrónica .pdf n
Maste clas de estructura metálica y arquitectura
REDES INFORMATICAS REDES INFORMATICAS.pptx
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Introduccion a servidores de Aplicaciones (1).pptx
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
historia_web de la creacion de un navegador_presentacion.pptx
Trabajo colaborativo Grupo #2.docxmkkkkkkl
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Estrategia de apoyo tecnología miguel angel solis
Trabajo colaborativo Grupo #2.docxmmuhhlk
Las nuevas tecnologías en la salud - enfermería técnica.
Que son las redes de computadores y sus partes
Presentación PASANTIAS AuditorioOO..pptx
ACTIVIDAD 2.pdf j
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
clase auditoria informatica 2025.........
La electricidad y la electrónica .pdf n
Publicidad

Scala: La escalera a la Programación Funcional

  • 1. Scala: La escalera a la Programación Funcional 1st June 2017 - Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 Scala Meetup @ Madrid
  • 2. Presentación Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 https://scalaes-register.herokuapp.com/
  • 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. 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. 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. La P. Funcional es cool Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017
  • 7. Scala está en todas partes Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017
  • 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. Ecosistema Scala Scala Meetup @ Madrid Ignacio Navarro Martín @inavarromartin #OpenExpo2017 ● El ecosistema Scala es muy maduro y grande Monix MacWire
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. ¡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/