scala desde c# y javascript

Post on 15-Feb-2017

1.190 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Scala desde C# y JavaScriptPor @rlbisbe

http://rlbisbe.net

Rober intenta aprender Scalacon lo que sabe

Un poquito de historia

¿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

Y entonces apareció

Vamos a aprender algo de Scalapara poder enterarme de algo

Sin embargo…

Pero…

al final, algo sí que se me ha quedado

¿Por qué aprender Scala?

• Menos “verboso”

• Estáticamente tipado

• Funcional

• Compatible con Android

¿Qué necesitamos?

Windows

cinst scala

OSX brew install scala

Ubuntu/Debiansudo apt-get install scala

¿Qué necesitamos?

InteliJjetbrains.com/idea/features/scala.html

Eclipsescala-ide.org

Netbeansgithub.com/dcaoyuan/nbscala

Typesafe Activator

• Generador de código basado en plantillas• Akka

• Spark

• Play

• …

• No lo veremos en esta charla

¿Por donde empezar?

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

Demo: Hola mundohelloWorld.scala

helloWorld2.scala

Qué hemos visto

• Object = Singleton

• Los arrays son objetos

• App permite crear objetos ejecutables

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

Variables, clases y funciones

• val: Variable inmutable

• var: Variable mutable

• def: Método

Demo: Variables, clases, y funcionesclasses.scala

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

Siguiente paso

• Katas de código• Codekata.com

• Exercises for Programmers

Mini-demo: Mi propio asserttest.scala

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

¿Por donde continuar?

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

• Gratis

• Corto (140 páginas)

• Lleno de ejemplos y casos de uso

Sintaxis funcional

• Funciones anónimas

• Inmutabilidad

• Funciones anidadas

• Higher order functions

• Inferencia de tipos

Demo: Sintaxis funcionalfunctional.scala

Qué hemos visto

• Funciones sin paréntesis

• No necesitamos return

• Funciones dentro de funciones

• Inferencia de tipos

• Sintaxis infija

• Parámetro filter

Traits

• Una interfaz con implementaciones parciales

• Una clase abstracta con herencia múltiple

• Ejemplo: App

Demo: Traitstraits.scala

Qué hemos visto

• Las traits permiten tener implementación

• Podemos heredar varias traits

• Hemos de implementar las funciones necesarias y asignar valores

Case classes

• Separación entre datos y transformación

• Recomendado cuando nuestras entidades no cambien

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

Demo: Case classescaseClasses.scala

Qué hemos visto

• Definiciones de una línea

• Case con parámetros de constructor

• Independientes del dato

• No recomendado si nuestras entidades cambian

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

¿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

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

¿Preguntas?

Muchas gracias@rlbisbe

http://rlbisbe.net

top related