Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introducción a Scala

Introducción a Scala

Scala es un lenguaje que combina la programación orientada a objetos y el paradigma imperativo, con el paradigma funcional. En esta charla nos centraremos primero en ver las características OO de Scala comparándolas con Java y luego veremos algunas de las características "funcionales" del lenguaje.

Paradigma

March 21, 2014
Tweet

More Decks by Paradigma

Other Decks in Technology

Transcript

  1. Agenda ¿Por dónde empezar? Features de scala – OO &

    Funcional OO Features – Scala Vs. Java Funcional features de Scala ¿Qué es Scala?
  2. ¿Qué es Scala? Lenguaje de propósito general Martin Odersky →

    Escuela Politécnica de Lausanne → 2001 Unifica características de paradigma OO y funcional Typesafe Inc. → 2011 1ª versión → finales 2003 2ª versión → Marzo 2006
  3. ¿Por dónde empezar? Read-eval-print loop (REPL): Simple Build Tool (sbt)

    http://www.scala-sbt.org/ giter8 (g8) https://github.com/n8han/giter8 Integración con IDEs: - Intellij: https://github.com/mpeltonen/sbt-idea - Eclipse: https://github.com/typesafehub/sbteclipse Scala school: http://twitter.github.io/scala_school/
  4. Features de Scala OO FUNCIONAL → Clases → Case Classes

    → Traits → Herencia múltiple → Objects → Companion Objects → Implícitos → Funciones puras → Inmutabilidad → Pattern Matching → Funciones de orden superior → List API → Laziness → For-comprehension
  5. Traits – Ejemplos prácticos Extendiendo traits – ejemplo cache Muy

    bonito pero... nuestro usuario quiere que la cache se refresque después de un tiempo determinado para reflejar los cambios
  6. To trait or not to trait Una clase puede extender

    sólo de una superclase pero puede “mix-in” todos los traits que quiera => mixin-class composition Traits no admiten parámetros en su constructor (sólo type parameters) Si queremos “fully-interoperability” con Java => abstract class Si va a ser reutilizada en múltiples y no-relacionadas clases => trait Si aún asi dudas.... Usa traits!!!
  7. Companion Objects Declarar métodos y variables estáticas de nuestras clases

    Declarar el método unapply que se invocara al hacer pattern matching sobre la clase Declarar el método apply que se usa típicamente como un Factory method
  8. Implícitos defs class scala> id(“3”) → returns “3” scala> id(3)

    → id(fromIntToString(3)) → returns “3” scala> 4.duplicateInt → new IntHelper(4).duplicateInt → returns 8
  9. Lenguajes funcionales Origen en el cálculo lambda → Sistema formal

    para investigar definición de funciones, aplicación de funciones y recursión Funciones que producen resultados que dependen sólo de sus “inputs” no del estado del programa Eliminar efectos de lado → hacen más fácil de entender los programas y comprender su comportamiento
  10. Inmutabilidad 0 + 1 0 0 1 1 + 2

    2 3 + 3 3 … 45 + 10 10
  11. Higher-order functions Funciones que: * Toma una o mas funciones

    como parámetros y/o * Tiene una función como salida
  12. Conclusiones Funcional + OO > Solo OO Lenguaje expresivo y

    flexible (arma doble-filo) JVM Mejora las habilidades del programador Migración progresiva desde Java Comunidad y ecosistema cada vez más potente