SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
Scala desde C# y JavaScript
Por @rlbisbe
http://rlbisbe.net
Rober intenta aprender Scala
con 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 Scala
para 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/Debian
sudo apt-get install scala
¿Qué necesitamos?
InteliJ
jetbrains.com/idea/features/scala.html
Eclipse
scala-ide.org
Netbeans
github.com/dcaoyuan/nbscala
TypesafeActivator
• 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 mundo
helloWorld.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 funciones
classes.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 assert
test.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 funcional
functional.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:Traits
traits.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 classes
caseClasses.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 BuildTool: sbt
¿Preguntas?
Muchas gracias
@rlbisbe
http://rlbisbe.net

Contenu connexe

Similaire à Scala desde c# y JavaScript

Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scalajose diaz
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?Socialmetrix
 
Tutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeTutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeSocialmetrix
 
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenIniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenVíctor Leonel Orozco López
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup
 
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...Adrian Diaz Cervera
 
Fundamentos de Java
Fundamentos de Java Fundamentos de Java
Fundamentos de Java jmosorio777
 
Lenguajes Dinámicos en la Java Virtual Machine
Lenguajes Dinámicos en la Java Virtual MachineLenguajes Dinámicos en la Java Virtual Machine
Lenguajes Dinámicos en la Java Virtual MachineÓscar Andrés López
 
Java script para desarrolladores SharePoint
Java script para desarrolladores SharePointJava script para desarrolladores SharePoint
Java script para desarrolladores SharePointAdrian Diaz Cervera
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y RendimientoEduard Tomàs
 
Why Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoWhy Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoBig Data Spain
 

Similaire à Scala desde c# y JavaScript (20)

Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?
 
Java 1.8:Road to Functional Language
Java 1.8:Road to Functional LanguageJava 1.8:Road to Functional Language
Java 1.8:Road to Functional Language
 
Tutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeTutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtime
 
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenIniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
 
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
 
Fundamentos de Java
Fundamentos de Java Fundamentos de Java
Fundamentos de Java
 
Introduccion Java.ppt
Introduccion Java.pptIntroduccion Java.ppt
Introduccion Java.ppt
 
Dynamic jvm
Dynamic jvmDynamic jvm
Dynamic jvm
 
Lenguajes Dinámicos en la Java Virtual Machine
Lenguajes Dinámicos en la Java Virtual MachineLenguajes Dinámicos en la Java Virtual Machine
Lenguajes Dinámicos en la Java Virtual Machine
 
Java script para desarrolladores SharePoint
Java script para desarrolladores SharePointJava script para desarrolladores SharePoint
Java script para desarrolladores SharePoint
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y Rendimiento
 
Scala @ Real life
Scala @ Real lifeScala @ Real life
Scala @ Real life
 
Scala@real life
Scala@real lifeScala@real life
Scala@real life
 
Why Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoWhy Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén Casado
 
C1 java introduccion
C1 java introduccionC1 java introduccion
C1 java introduccion
 
C1 java introduccion
C1 java introduccionC1 java introduccion
C1 java introduccion
 
Descifrando Ruby on Rails
Descifrando Ruby on RailsDescifrando Ruby on Rails
Descifrando Ruby on Rails
 
Presentacion cw2012
Presentacion cw2012Presentacion cw2012
Presentacion cw2012
 

Plus de Roberto Luis Bisbé

DotNetSpain2015: Extendiendo Visual Studio Online a través de su API
DotNetSpain2015: Extendiendo Visual Studio Online a través de su APIDotNetSpain2015: Extendiendo Visual Studio Online a través de su API
DotNetSpain2015: Extendiendo Visual Studio Online a través de su APIRoberto Luis Bisbé
 
Tres tecnologías Microsoft que no se dan en la carrera
Tres tecnologías Microsoft que no se dan en la carreraTres tecnologías Microsoft que no se dan en la carrera
Tres tecnologías Microsoft que no se dan en la carreraRoberto Luis Bisbé
 
Lecciones aprendidas creando una red social
Lecciones aprendidas creando una red socialLecciones aprendidas creando una red social
Lecciones aprendidas creando una red socialRoberto Luis Bisbé
 
Comunicando nuestras apps con el mundo exterior
Comunicando nuestras apps con el mundo exteriorComunicando nuestras apps con el mundo exterior
Comunicando nuestras apps con el mundo exteriorRoberto Luis Bisbé
 
Javascript vuela en primera clase con Firefox OS
Javascript vuela en primera clase con Firefox OSJavascript vuela en primera clase con Firefox OS
Javascript vuela en primera clase con Firefox OSRoberto Luis Bisbé
 
De escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincherasDe escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincherasRoberto Luis Bisbé
 
Creando aplicaciones móviles con Windows 8 y Windows Phone 8
Creando aplicaciones móviles con Windows 8 y Windows Phone 8Creando aplicaciones móviles con Windows 8 y Windows Phone 8
Creando aplicaciones móviles con Windows 8 y Windows Phone 8Roberto Luis Bisbé
 
Desarrollo de aplicaciones para Windows 8 y Windows Phone
Desarrollo de aplicaciones para Windows 8 y Windows PhoneDesarrollo de aplicaciones para Windows 8 y Windows Phone
Desarrollo de aplicaciones para Windows 8 y Windows PhoneRoberto Luis Bisbé
 
Windows 8 Universidad de Valencia
Windows 8 Universidad de ValenciaWindows 8 Universidad de Valencia
Windows 8 Universidad de ValenciaRoberto Luis Bisbé
 
Windows 8 y Metro para desarrolladores .NET
Windows 8 y Metro para desarrolladores .NETWindows 8 y Metro para desarrolladores .NET
Windows 8 y Metro para desarrolladores .NETRoberto Luis Bisbé
 
Desarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPMDesarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPMRoberto Luis Bisbé
 
Aplicaciones Metro para Windows 8
Aplicaciones Metro para Windows 8Aplicaciones Metro para Windows 8
Aplicaciones Metro para Windows 8Roberto Luis Bisbé
 
Fundamentos de sitios web accesibles
Fundamentos de sitios web accesiblesFundamentos de sitios web accesibles
Fundamentos de sitios web accesiblesRoberto Luis Bisbé
 

Plus de Roberto Luis Bisbé (19)

DotNetSpain2015: Extendiendo Visual Studio Online a través de su API
DotNetSpain2015: Extendiendo Visual Studio Online a través de su APIDotNetSpain2015: Extendiendo Visual Studio Online a través de su API
DotNetSpain2015: Extendiendo Visual Studio Online a través de su API
 
Tres tecnologías Microsoft que no se dan en la carrera
Tres tecnologías Microsoft que no se dan en la carreraTres tecnologías Microsoft que no se dan en la carrera
Tres tecnologías Microsoft que no se dan en la carrera
 
Lecciones aprendidas creando una red social
Lecciones aprendidas creando una red socialLecciones aprendidas creando una red social
Lecciones aprendidas creando una red social
 
Comunicando nuestras apps con el mundo exterior
Comunicando nuestras apps con el mundo exteriorComunicando nuestras apps con el mundo exterior
Comunicando nuestras apps con el mundo exterior
 
Javascript vuela en primera clase con Firefox OS
Javascript vuela en primera clase con Firefox OSJavascript vuela en primera clase con Firefox OS
Javascript vuela en primera clase con Firefox OS
 
De escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincherasDe escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincheras
 
Creando aplicaciones móviles con Windows 8 y Windows Phone 8
Creando aplicaciones móviles con Windows 8 y Windows Phone 8Creando aplicaciones móviles con Windows 8 y Windows Phone 8
Creando aplicaciones móviles con Windows 8 y Windows Phone 8
 
APIs REST
APIs RESTAPIs REST
APIs REST
 
Windows phonesessions
Windows phonesessionsWindows phonesessions
Windows phonesessions
 
Desarrollo de aplicaciones para Windows 8 y Windows Phone
Desarrollo de aplicaciones para Windows 8 y Windows PhoneDesarrollo de aplicaciones para Windows 8 y Windows Phone
Desarrollo de aplicaciones para Windows 8 y Windows Phone
 
Windows 8 Universidad de Valencia
Windows 8 Universidad de ValenciaWindows 8 Universidad de Valencia
Windows 8 Universidad de Valencia
 
Los lenguajes de la web
Los lenguajes de la webLos lenguajes de la web
Los lenguajes de la web
 
Windows 8 y Metro para desarrolladores .NET
Windows 8 y Metro para desarrolladores .NETWindows 8 y Metro para desarrolladores .NET
Windows 8 y Metro para desarrolladores .NET
 
Desarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPMDesarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPM
 
Aplicaciones Metro para Windows 8
Aplicaciones Metro para Windows 8Aplicaciones Metro para Windows 8
Aplicaciones Metro para Windows 8
 
Hardcore PHP
Hardcore PHPHardcore PHP
Hardcore PHP
 
El patrón MVC
El patrón MVCEl patrón MVC
El patrón MVC
 
Social Media
Social MediaSocial Media
Social Media
 
Fundamentos de sitios web accesibles
Fundamentos de sitios web accesiblesFundamentos de sitios web accesibles
Fundamentos de sitios web accesibles
 

Scala desde c# y JavaScript