SlideShare una empresa de Scribd logo
Scala
José Amadeo Martin Díaz Díaz
@joedayz
Sobre el ponente
Ing. Informático de la Pontificia Universidad Católica del Perú
Fundador de JoeDayz.pe
Miembro de PERU JUG desde el 2003.
Desarrollador Java desde el 2001
Desarrollador Scala desde el 2014
@joedayz
2
Agenda
1. ¿Qué es Scala?
2. Características Principales
3. Ecosistema Scala
4. Conclusiones
1. ¿Qué es Scala?
• Lenguaje de Programación multi-paradigma diseñado para expresar
patrones comunes de programación en forma concisa, elegante y con
tipos seguros.
• Integra sutilmente características de lenguajes funcionales y
orientados a objetos.
• La implementación actual corre en la maquina virtual de Java y es
compatible con las aplicaciones Java existentes.
Creado por Martin Odersky
Fundada el 2011
Github.info
TIOBE
2. Características Principales
• Herencia Múltiple (Similar a C++)
• Tipado estático
• Notación infija
• Funciones de Orden superior
• Multiparadigma:
• Funcional
• Orientado a Objetos
¿Qué es la programación funcional?
• Programación Imperativa:
• Se utilizan cambios de estado
• Efectos de lado
• Mutabilidad
• Programación Funcional:
• Se utilizan funciones aritméticas
• No hay efectos de lado
• Inmutabilidad
¿Por qué utilizar programación funcional?
• Ley de Moore
• Programación Concurrente
• Inmutabilidad -> El estado no cambia
• Facilidad para programar concurrentemente
• Se pueden pasar parámetros como parámetros a otras funciones
• Las Funciones además de valores (u objetos) pueden devolver otras
funciones como resultado.
¿Por qué utilizar programación funcional?
• Las funciones siempre devuelven el mismo resultado para cada
entrada
• No hay efectos de lado
• Facilidad para testear
• El primer lenguaje ampliamente utilizado para programación
funcional fue Lisp.
• En las universidades frecuentemente se usa Haskell para la enseñanza
¿Por qué utilizar programación funcional?
• Puedes empezar con JavaScript o Python.
• Scala es quien ha dado el empujón mas reciente
• Java 8 tiene características de programación funcional
Introducción a Scala
¿Casos de uso comunes?
• Creación de DSLs (lenguajes específicos de dominio)
Apache Camel – Scala DSL
¿Casos de uso comunes?
• Aplicaciones en el Cloud  AKKA (Programación concurrente con
actores)
¿Casos de uso comunes?
• BigData  Spark soportado por Apache.
¿Dónde se usa Scala?
https://typesafe.com/resources/case-studies-and-stories
2. Características Principales
Tuplas
• Colección heterogénea de elementos
• 22 elementos como máximo
• Orden predeterminado
Clases (estilo Java)
Clases (estilo Scala)
Clases (valores por defecto)
Resultado:
Clases (valores por defecto)
Case Classes
• Clases enriquecidas
• Proporcionan:
• Método apply (constructor)
• Getters
• Método copy
• Método unapply (extractor)
• No permiten heredar de ellas
• No soportan más de 22 atributos (tuplas)
Case Classes
Pattern Matching
Pattern Matching
Pattern Matching usando Case Classes
Traits
• Similar a interfaces en Java
• Posibilidad de implementar métodos
• Herencia múltiple
Traits
Traits como Interfaces Ricas
Traits como Interfaces Ricas
Extender una clase con múltiples Traits
Traits - Composición
Traits - Composición
Traits - Composición
Traits – Problema del Diamante
Traits – Problema del Diamante
Implicitos
• Elementos de código que se ejecutan sin ser llamados explícitamente
• Potente pero peligroso
• No abusar de implícito
• Dificultad de seguir el hilo de ejecución
• Posibles usos:
• Conversores
• Inyección de dependencias
• Contextos de ejecución
Implicitos
• Conversión
Implicitos
• Conexión Implicita
Funciones de Orden Superior
• Funciones que devuelven funciones
• Funciones que toman otras funciones como parámetro
Recomiendo ver: http://scala.org.mx/news/2015/01/29/funciones-scala/
Trabajar con Colecciones
Trabajar con Colecciones
Más ejemplos en: https://twitter.github.io/scala_school/coll2.html
Trabajar con Colecciones
Trabajar con Colecciones
Combinar filter, sort, map
Combinar filter, sort, map
Uno mas …
For-comprehesion
Option
Tratamiento de Excepciones
Tratamiento de Excepciones
Tratamiento de Excepciones
Try (Success & Failure)
3. Ecosistema de Scala
Akka
• Construcción de aplicaciones mediante el modelo de actores
• Facilita construir aplicaciones distribuidas
• Asíncrono
• Escalabilidad
• Disponible también para Java
http://www.genbetadev.com/paradigmas-de-programacion/manejar-la-concurrencia-con-actores
Introducción a Scala
Ejemplo Akka
Ejemplo Akka
Ejemplo Akka
Otros ejemplos de Akka
Otros ejemplos de Akka
Más utilidades de Akka
• Supervisión
• EventBus
• Clustering
• Akka-HTTP
• Akka-Persistence
• Framework para construir aplicaciones web
• Construido sobre Akka
• MVC
• Disponible también para java
http://playframework.org/
Introducción a Scala
• Para creación de API’s REST
• Arquitectura basada en actores
• Futuro Akka-HTTP
• Permite peticiones asíncronas
• Incluye DSL para Testing
http://sysgears.com/articles/building-rest-service-with-scala/
Introducción a Scala
• Herramienta orientada a BigData
• Distribución de datos
• Analytics
• Competencia de Hadoop
• Spark-streaming
https://spark.apache.org/examples.html
• Librería para acceder y realizar búsquedas en base de datos
• Trabajar con colecciones en Scala
• Opción de utilizar SQL Embebido
Conexión a base de datos
Definición de Tablas
Poblando la Base de Datos
Consultando
4. Conclusiones
• Multiparadigma
• Compatible con la JVM
• Puedes seguir utilizando tu arsenal de librerías Java
• Conciso y limpio
• Inferencia de tipos
DesVentajas
• Curva larga de aprendizaje
• Tiempos altos de compilación
• Lenguaje en evolución
• Poca documentación – libros, blogs
• Pocas comunidades
• TypeSafe cursos son carísimos
• Muchas formas de hacer lo mismo
¿Cómo aprenderlo?
• Curso de Coursera : Programación Funcional
• TypeSafe Activator
• Programming in Scala de Oreilly
Entornos de desarrollo
• Eclipse + Scala IDE
• Intellij IDEA
• Sbt y Editor Texto
• Scalac + editor de texto
Preguntas
@joedayz
Jose.diaz@joedayz.pe

Más contenido relacionado

PDF
Análisis de markov
PPT
Prueba Poker
PPTX
Construcción de un sitio web de comercio electrónico
PPTX
Método Lote por Lote
PDF
Estructura de los agentes
PPTX
SITEMA O PROCESO kanban
PDF
Trabajo colaborativo en entornos virtuales
PPTX
Sesion 7_07102022.pptx
Análisis de markov
Prueba Poker
Construcción de un sitio web de comercio electrónico
Método Lote por Lote
Estructura de los agentes
SITEMA O PROCESO kanban
Trabajo colaborativo en entornos virtuales
Sesion 7_07102022.pptx

La actualidad más candente (20)

PDF
Introducción a la Simulación
PPTX
Simulacion para ISC - Unidad 1 Introducción a la Simulación
PPTX
Metodo esquina noreste
PDF
Arduino labview
PDF
Procesos de Nacimiento y muerte - Teoria de colas
DOCX
Cuadro comparativo de manufactura tradicional y manufactura avanzada
PPT
Producto innovador gloria rico
PPT
Método Holt
DOCX
Valor anual equivalente
PDF
ADMINISTRACIÓN DE INVENTARIOS
PDF
PPT
Líneas de espera (1) ejercicio
PDF
El pronóstico de la demanda.
PDF
247288947 manual-simio (1)
PPTX
Unidad i sensores
PDF
Metodologia Casa de la Calidad QFD
PPTX
Puestos y responsabilidades del personal de base de datos
PDF
59399779 lineas-transfer
ODP
Diagramas gantt y pert
Introducción a la Simulación
Simulacion para ISC - Unidad 1 Introducción a la Simulación
Metodo esquina noreste
Arduino labview
Procesos de Nacimiento y muerte - Teoria de colas
Cuadro comparativo de manufactura tradicional y manufactura avanzada
Producto innovador gloria rico
Método Holt
Valor anual equivalente
ADMINISTRACIÓN DE INVENTARIOS
Líneas de espera (1) ejercicio
El pronóstico de la demanda.
247288947 manual-simio (1)
Unidad i sensores
Metodologia Casa de la Calidad QFD
Puestos y responsabilidades del personal de base de datos
59399779 lineas-transfer
Diagramas gantt y pert
Publicidad

Similar a Introducción a Scala (20)

PDF
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
PDF
Descubriendo scala
PDF
Programación Funcional en Scala
PDF
Scala Overview
PDF
Scala: La escalera a la Programación Funcional
PPTX
Scala @ Real life
PPTX
Scala@real life
PPTX
Codemotion 2014 Scala @real life
PPTX
Scala @ Real Life Codemotion 2014
PDF
Scala desde c# y JavaScript
PDF
Scala: un vistazo general
PDF
Apache spark meetup
PDF
Procesamiento de datos a gran escala con Apache Spark
PPTX
Programación funcional con Scala
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...
PDF
Introducción a scala
PDF
Historia de la Programacion funcional
PPTX
Meetup Fun[ctional] spark with scala
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Descubriendo scala
Programación Funcional en Scala
Scala Overview
Scala: La escalera a la Programación Funcional
Scala @ Real life
Scala@real life
Codemotion 2014 Scala @real life
Scala @ Real Life Codemotion 2014
Scala desde c# y JavaScript
Scala: un vistazo general
Apache spark meetup
Procesamiento de datos a gran escala con Apache Spark
Programación funcional con Scala
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...
Introducción a scala
Historia de la Programacion funcional
Meetup Fun[ctional] spark with scala
Publicidad

Último (20)

PPTX
Administración se srevidores de apliaciones
PDF
ACTIVIDAD 2.pdf j
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
DOCX
Las nuevas tecnologías en la salud - enfermería técnica.
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PPTX
Introduccion a servidores de Aplicaciones (1).pptx
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
La electricidad y la electrónica por Antonia Diaz Bernal
PDF
Manual Videovigilancia IP y Seguridad Electronica-Parte 1-Book-cl.pdf
PDF
taller de informática - LEY DE OHM
PDF
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
PPTX
Yogurt de tocosh (1).pptx preparacion receta
PPTX
Presentación de Redes de Datos modelo osi
PPT
introduccion a las_web en el 2025_mejoras.ppt
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPT
Que son las redes de computadores y sus partes
PDF
Conceptos básicos de programación tecnología.pdf
PDF
Estrategia de apoyo tecnología grado 9-3
Administración se srevidores de apliaciones
ACTIVIDAD 2.pdf j
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
Las nuevas tecnologías en la salud - enfermería técnica.
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Introduccion a servidores de Aplicaciones (1).pptx
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
Zarate Quispe Alex aldayir aplicaciones de internet .docx
La electricidad y la electrónica por Antonia Diaz Bernal
Manual Videovigilancia IP y Seguridad Electronica-Parte 1-Book-cl.pdf
taller de informática - LEY DE OHM
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
Yogurt de tocosh (1).pptx preparacion receta
Presentación de Redes de Datos modelo osi
introduccion a las_web en el 2025_mejoras.ppt
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Que son las redes de computadores y sus partes
Conceptos básicos de programación tecnología.pdf
Estrategia de apoyo tecnología grado 9-3

Introducción a Scala