Slide 1

Slide 1 text

Scala Intro federico silva @ inConcert twitter.com/fedesilva https://github.com/scala-meetup-mvd/intro- scala viernes 18 de enero de 13

Slide 2

Slide 2 text

Scala es: • Lenguaje de propósito general • Multiparadigma • Fuertemente tipado (según es.wikipedia) • Hosteado en el JVM ( Genera Bytecode ) • Interoperable con Java (y otros lenguajes en el jvm) viernes 18 de enero de 13

Slide 3

Slide 3 text

Por que? • En principio el software debería ser contruido a partir de componentes. • Los lenguajes necesitan ser escalables: iguales en pequeña y gran escala. • Se intenta lograr ese objetivo fusionando OO/FP viernes 18 de enero de 13

Slide 4

Slide 4 text

Multi paradigma Orientado a Objetos (Imperativo) • Fácil de adaptar y extender • Las clases proveen abstracciones parciales • Modularidad Funcional • Funciones de alto orden: flexibilidad • Inmutabilidad y transparencia referencial • Construir cosas a partir de partes pequeñas • La inmutabilidad y la transparencia referencial son muy beneficiosas en el mundo multicore. viernes 18 de enero de 13

Slide 5

Slide 5 text

Lenguaje escalable • Pequeña escala: scripts, programa en un archivo, conciso. • Sistemas basados en componentes. Posiblemente cientos. ( The Cake Pattern) viernes 18 de enero de 13

Slide 6

Slide 6 text

Lenguaje Agil • Inferencia de tipos • Libertad de estructurar el sistema como queramos • El type system es poderoso y en general no se mete en el camino • Sintaxis flexible: Crea tu propio lenguaje viernes 18 de enero de 13

Slide 7

Slide 7 text

Type System Unificado • Todo es un objeto • El compilador decide cuando puede no boxear. viernes 18 de enero de 13

Slide 8

Slide 8 text

Show me the Code • Clases, objetos y traits • Funciones • Operator Overloading • For Comprehensions • Polimorfismo paramétrico (Generics) • Pattern Matching • Option/Either • No vamos a ver: Implicits, typeclasses (Otra charla). viernes 18 de enero de 13

Slide 9

Slide 9 text

Hay Herramientas? • IDES: Eclipse, IDEA, vim :) • Concurrencia: Akka (the killer app) • Machine Learning/BigData: Spark, Scalding, scoobi • Web: Unfiltered, Scalatra, Play! (varios mas!) • Build Tools: sbt, maven viernes 18 de enero de 13