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

Conociendo Scala

Conociendo Scala

Sigues preguntándote que es la programación funcional o como aplicarla? Eres familiar con Java o la JVM? Esta presentación te puede interesar. Tendremos una introducción a Scala seguido de su aplicación con la programación funcional. Veremos algunas de sus similitudes con Java para averiguar si es un “Better Java” o que nos aporta.

Bonus: Una de las cosas que hace especial a Scala son sus tipos algebraicos (vía subtyping). Si nos queda tiempo nos adentraremos en estos y la relación de las matemáticas con la programación.

Quito Lambda

March 27, 2019
Tweet

More Decks by Quito Lambda

Other Decks in Programming

Transcript

  1. ¡Presenta tus ideas en Quito Lambda! Si tienes algo interesante

    que presentar, ¡ven a presentar con nosotros! Programación Funcional, DevOps, Cloud Computing, IaaS, Desarrollo Web, React, WebGL, ReasonML y cualquier cosa interesante [email protected]
  2. Agenda • Qué es Scala? • Programación Funcional • Better

    Java • El Futuro de Scala • Tipos Algebraicos - Una introducción
  3. Que es Scala “Scala es un lenguaje de programación de

    propósito general que provee soporte para la programación funcional y un sistema de tipado estático fuerte. Diseñado para ser conciso, muchas de las decisiones de diseño en Scala apuntan a corregir los puntos criticados de Java.” - Wikipedia
  4. Programación Funcional - Las computaciones se tratan como la evaluación

    de funciones matemáticas - Trata de evitar el cambio de estado y los datos mutables - Programación declarativa, es decir usar expresiones o declaraciones en vez de “statements” - Las funciones puras son idempotentes a diferencia de procedimientos que dependen de un estado
  5. Sistema de Tipos en Scala - Scala posee un tipado

    más estricto que permite tener conceptos como Higher Kinds, Existential Types - Implicits de Scala para evitar ction y el casteo clásico de Java - Declaraciones de métodos con transparencia referencial (def) - “Variables” inmutables por defecto (val) - Pattern matching - Type erasure
  6. Semántica y Sintaxis - Cómo se comporta y que significa

    lo que escribo - Se basa en expresiones o “statements” - Es mutable o inmutable por defecto? - Cómo se hace concurrencia y paralelismo - Usa paréntesis? - Usa punto y coma? - Se basa en LISP? - Sintáxis poco familiar !== complejo
  7. Function composition f . g (x) = f (g (x))

    Se compone el software como se compone funciones (Cada función es más fácil de probar)
  8. Composición de Funciones f: String => Int g: Int =>

    Banana g compose f f andThen g String => Banan
  9. No todos los tipos de datos son iguales String int

    Person Customer List<T> Iterable<T>
  10. List<T>: T => List<T> String => List<String> List es una

    función a nivel de tipos que toma un tipo y produce un tipo completo Map<K,V>
  11. El futuro de Scala - La frecuencia de lanzamiento de

    nuevas versiones de JVM - Kotlin ganando tracción como un lenguaje OOP - Lenguajes funcionales como Haskell o F# siendo las opciones favoritas para programación funcional