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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introducción a scala

440
views

Published on

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.

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
440
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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