Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Intro a Scala

Intro a Scala

Charla que dimos en la Scala Meetup Montevideo

federico silva

January 17, 2013
Tweet

More Decks by federico silva

Other Decks in Programming

Transcript

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. Type System Unificado • Todo es un objeto • El

    compilador decide cuando puede no boxear. viernes 18 de enero de 13
  7. 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
  8. 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