Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Scala desde c# y JavaScript

1,317 views

Published on

Charla de C# y JavaScript usada en la Mindcamp 7

Published in: Software
  • Be the first to comment

Scala desde c# y JavaScript

  1. 1. Scala desde C# y JavaScript Por @rlbisbe http://rlbisbe.net
  2. 2. Rober intenta aprender Scala con lo que sabe
  3. 3. Un poquito de historia
  4. 4. ¿Qué sabía de Scala? • Funciona sobre la JVM • Es funcional… dicen • Apache Spark (big data things) está escrito en él • Bastante aceptado en la comunidad Java
  5. 5. Y entonces apareció
  6. 6. Vamos a aprender algo de Scala para poder enterarme de algo
  7. 7. Sin embargo…
  8. 8. Pero… al final, algo sí que se me ha quedado
  9. 9. ¿Por qué aprender Scala? • Menos “verboso” • Estáticamente tipado • Funcional • Compatible con Android
  10. 10. ¿Qué necesitamos? Windows cinst scala OSX brew install scala Ubuntu/Debian sudo apt-get install scala
  11. 11. ¿Qué necesitamos? InteliJ jetbrains.com/idea/features/scala.html Eclipse scala-ide.org Netbeans github.com/dcaoyuan/nbscala
  12. 12. TypesafeActivator • Generador de código basado en plantillas • Akka • Spark • Play • … • No lo veremos en esta charla
  13. 13. ¿Por donde empezar? docs.scala-lang.org/tutorials/scala-for-java-programmers.html
  14. 14. Demo: Hola mundo helloWorld.scala helloWorld2.scala
  15. 15. Qué hemos visto • Object = Singleton • Los arrays son objetos • App permite crear objetos ejecutables • Sintaxis infija • args mkString “,” => args.mkString(“,”)
  16. 16. Variables, clases y funciones • val:Variable inmutable • var:Variable mutable • def: Método
  17. 17. Demo: Variables, clases, y funciones classes.scala
  18. 18. Qué hemos visto • Funciones como parámetros • “return” opcional. • Sintaxis distinta si hay retorno o si no hay. • Parámetros en la definición de la clase • Unit = void
  19. 19. Siguiente paso • Katas de código • Codekata.com • Exercises for Programmers
  20. 20. Mini-demo: Mi propio assert test.scala
  21. 21. Probando “de verdad” • ScalaTest • Permite probar código Java y Scala • Integrado con JUnit,TestNG, Mockito… • Tests unitarios e integración • Specs • Tests de comportamento • Basados en especificaciones
  22. 22. ¿Por donde continuar? scala-lang.org/docu/files/ScalaByExample.pdf • Gratis • Corto (140 páginas) • Lleno de ejemplos y casos de uso
  23. 23. Sintaxis funcional • Funciones anónimas • Inmutabilidad • Funciones anidadas • Higher order functions • Inferencia de tipos
  24. 24. Demo: Sintaxis funcional functional.scala
  25. 25. Qué hemos visto • Funciones sin paréntesis • No necesitamos return • Funciones dentro de funciones • Inferencia de tipos • Sintaxis infija • Parámetro filter
  26. 26. Traits • Una interfaz con implementaciones parciales • Una clase abstracta con herencia múltiple • Ejemplo: App
  27. 27. Demo:Traits traits.scala
  28. 28. Qué hemos visto • Las traits permiten tener implementación • Podemos heredar varias traits • Hemos de implementar las funciones necesarias y asignar valores
  29. 29. Case classes • Separación entre datos y transformación • Recomendado cuando nuestras entidades no cambien • Menos código al agregar una nueva operación
  30. 30. Demo: Case classes caseClasses.scala
  31. 31. Qué hemos visto • Definiciones de una línea • Case con parámetros de constructor • Independientes del dato • No recomendado si nuestras entidades cambian
  32. 32. En resumen • Un lenguaje muy rico y variado • Curva de aprendizaje sencilla • Ventajas de programación funcional • “Magia” pero en tiempo de compilación • Menos código que escribir
  33. 33. ¿Y ahora qué? • Libros: • Scala By Example • Youtube: • Scala -- the Simple Parts • Cursos: • Functional Programming Principles in Scala • Principles of Reactive Programming (no hay nuevas sesiones, pero el material está ahí) • Documentación: • scala-lang.org
  34. 34. Qué se nos queda fuera • Otras miles de características del lenguaje • Frameworks como Play (web) o Scalaz (funcional) • Testing con ScalaTest • Integración con herramientas • Interoperabilidad Java • La herramienta activator • La Scala BuildTool: sbt
  35. 35. ¿Preguntas?
  36. 36. Muchas gracias @rlbisbe http://rlbisbe.net

×