Introducción a scala
Upcoming SlideShare
Loading in...5
×
 

Introducción a scala

on

  • 423 views

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 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.

Statistics

Views

Total Views
423
Views on SlideShare
420
Embed Views
3

Actions

Likes
0
Downloads
2
Comments
0

1 Embed 3

https://twitter.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Introducción a scala Introducción a scala Presentation Transcript

  • Introducción a Scala
  • Agenda ¿Por dónde empezar? Features de scala – OO & Funcional OO Features – Scala Vs. Java Funcional features de Scala ¿Qué es Scala?
  • ¿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
  • ¿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/
  • 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
  • Clases Vs.
  • Case Classes Vs.
  • Traits Vs.
  • Herencia múltiple – Diamond problem Vs.
  • Traits – Ejemplos prácticos Creando fake objects para test unitarios
  • 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
  • Traits – Ejemplos prácticos Extendiendo traits – ejemplo cache
  • Traits – Ejemplos prácticos Apilando traits
  • 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!!!
  • Objects Vs.
  • 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
  • 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
  • Paradigma funcional
  • 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
  • Funciones puras Funciones sin efecto de lado
  • Inmutabilidad Val vs Var
  • Inmutabilidad 0 + 1 00 1 1 + 2 2 3 + 3 3 … 45 + 10 10
  • Pattern Matching “Mighty” switch
  • Higher-order functions Funciones que: * Toma una o mas funciones como parámetros y/o * Tiene una función como salida
  • Higher-order functions Ejemplo Set
  • List API filter, filterNot, find, flatMap, foldLeft, foldRight, forAll, foreach, groupBy...
  • 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
  • Futuro de Scala?