scala desde c# y javascript

36
Scala desde C# y JavaScript Por @rlbisbe http://rlbisbe.net

Upload: roberto-luis-bisbe

Post on 15-Feb-2017

1.190 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Scala desde c# y JavaScript

Scala desde C# y JavaScriptPor @rlbisbe

http://rlbisbe.net

Page 2: Scala desde c# y JavaScript

Rober intenta aprender Scalacon lo que sabe

Page 3: Scala desde c# y JavaScript

Un poquito de historia

Page 4: Scala desde c# y JavaScript

¿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

Page 5: Scala desde c# y JavaScript

Y entonces apareció

Page 6: Scala desde c# y JavaScript

Vamos a aprender algo de Scalapara poder enterarme de algo

Page 7: Scala desde c# y JavaScript

Sin embargo…

Page 8: Scala desde c# y JavaScript

Pero…

al final, algo sí que se me ha quedado

Page 9: Scala desde c# y JavaScript

¿Por qué aprender Scala?

• Menos “verboso”

• Estáticamente tipado

• Funcional

• Compatible con Android

Page 10: Scala desde c# y JavaScript

¿Qué necesitamos?

Windows

cinst scala

OSX brew install scala

Ubuntu/Debiansudo apt-get install scala

Page 11: Scala desde c# y JavaScript

¿Qué necesitamos?

InteliJjetbrains.com/idea/features/scala.html

Eclipsescala-ide.org

Netbeansgithub.com/dcaoyuan/nbscala

Page 12: Scala desde c# y JavaScript

Typesafe Activator

• Generador de código basado en plantillas• Akka

• Spark

• Play

• …

• No lo veremos en esta charla

Page 13: Scala desde c# y JavaScript

¿Por donde empezar?

docs.scala-lang.org/tutorials/scala-for-java-programmers.html

Page 14: Scala desde c# y JavaScript

Demo: Hola mundohelloWorld.scala

helloWorld2.scala

Page 15: Scala desde c# y JavaScript

Qué hemos visto

• Object = Singleton

• Los arrays son objetos

• App permite crear objetos ejecutables

• Sintaxis infija• args mkString “,” => args.mkString(“,”)

Page 16: Scala desde c# y JavaScript

Variables, clases y funciones

• val: Variable inmutable

• var: Variable mutable

• def: Método

Page 17: Scala desde c# y JavaScript

Demo: Variables, clases, y funcionesclasses.scala

Page 18: Scala desde c# y JavaScript

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

Page 19: Scala desde c# y JavaScript

Siguiente paso

• Katas de código• Codekata.com

• Exercises for Programmers

Page 20: Scala desde c# y JavaScript

Mini-demo: Mi propio asserttest.scala

Page 21: Scala desde c# y JavaScript

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

Page 22: Scala desde c# y JavaScript

¿Por donde continuar?

scala-lang.org/docu/files/ScalaByExample.pdf

• Gratis

• Corto (140 páginas)

• Lleno de ejemplos y casos de uso

Page 23: Scala desde c# y JavaScript

Sintaxis funcional

• Funciones anónimas

• Inmutabilidad

• Funciones anidadas

• Higher order functions

• Inferencia de tipos

Page 24: Scala desde c# y JavaScript

Demo: Sintaxis funcionalfunctional.scala

Page 25: Scala desde c# y JavaScript

Qué hemos visto

• Funciones sin paréntesis

• No necesitamos return

• Funciones dentro de funciones

• Inferencia de tipos

• Sintaxis infija

• Parámetro filter

Page 26: Scala desde c# y JavaScript

Traits

• Una interfaz con implementaciones parciales

• Una clase abstracta con herencia múltiple

• Ejemplo: App

Page 27: Scala desde c# y JavaScript

Demo: Traitstraits.scala

Page 28: Scala desde c# y JavaScript

Qué hemos visto

• Las traits permiten tener implementación

• Podemos heredar varias traits

• Hemos de implementar las funciones necesarias y asignar valores

Page 29: Scala desde c# y JavaScript

Case classes

• Separación entre datos y transformación

• Recomendado cuando nuestras entidades no cambien

• Menos código al agregar una nueva operación

Page 30: Scala desde c# y JavaScript

Demo: Case classescaseClasses.scala

Page 31: Scala desde c# y JavaScript

Qué hemos visto

• Definiciones de una línea

• Case con parámetros de constructor

• Independientes del dato

• No recomendado si nuestras entidades cambian

Page 32: Scala desde c# y JavaScript

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

Page 33: Scala desde c# y JavaScript

¿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

Page 34: Scala desde c# y JavaScript

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 Build Tool: sbt

Page 35: Scala desde c# y JavaScript

¿Preguntas?

Page 36: Scala desde c# y JavaScript

Muchas gracias@rlbisbe

http://rlbisbe.net