historia de la programacion funcional

35
Programación funcional @jlgarhdez

Upload: jose-luis-garcia-hernandez

Post on 14-Apr-2017

207 views

Category:

Software


0 download

TRANSCRIPT

Programación funcional

@jlgarhdez

AgendaQué es

Historia

Ventajas técnicas

Uso en la industria

@jlgarhdez

¿Qué es la programación funcional?

@jlgarhdez

¿Qué es la programación funcional?

Un paradigma de programación, en el que las funciones son ciudadanos de primera clase.

- Haskell- Ocaml

@jlgarhdez

¿Qué es la programación funcional?

Un paradigma de programación, en el que las funciones son ciudadanos de primera clase.

- Haskell- Ocaml

Un estilo de programación, en el que se emula el paradigma funcional en lenguajes no funcionales.

- Underscore.js- Functional php

@jlgarhdez

Historia

@jlgarhdez

Cálculo LambdaCreado en 1936 por Alonzo Church.

Una forma de expresar computaciones matemáticas mediante funciones

@jlgarhdez

Creado en 1958 por John McCarthy

Precursor en la programación funcional

Familia de lenguajes de programación (Scheme, Common Lisp, Clojure…)

Todo son expresiones

Lisp

@jlgarhdez

MLSe desarrolla en los 1970s

Al igual que LISP, es una familia de lenguages. (Standard ML, F#, OCaml…)

Tipado estáticamente

Estricto

@jlgarhdez

Creado en 1986 en Ericsson

Junto con el framework OTP, está pensado para crear plataformas escalables y tolerantes a fallos

Modelo de actores

Erlang

@jlgarhdez

HaskellDiseñado por un comité en 1987

Primera implementación en 1990

Tipado estricto

Evaluación perezosa

Tipos de orden superior

Puramente funcional

@jlgarhdez

Creado en 2004 por Martin Odersky

Scala es un lenguaje orientado a objetos que permite la programación funcional de una manera muy efectiva

Corre sobre la JVM y también transpila a JS

El lenguaje del big data. Spark, Flink, Samza, Kafka…

Scala

@jlgarhdez

F#Diseñado por Microsoft en 2005

Dialecto de ML

Corre en el Common Language Runtime (como VB, C#...)

@jlgarhdez

Creado en 2007 por Rich Hickey

Dialecto de Lisp

Tipado dinámico

Diseñado para correr en diferentes plataformas

Actualmente corre en CLR, JVM, y transpila a JavaScript

Clojure

@jlgarhdez

VentajasTécnicas

@jlgarhdez

Modularidad

@jlgarhdez

Modularidad

Funciones de orden superior

@jlgarhdez

Modularidad

Funciones de orden superior

Typeclasses

@jlgarhdez

Modularidad

Funciones de orden superior

Typeclasses

Polimorfismo paramétrico

@jlgarhdez

Expresividad

@jlgarhdez

Expresividad

Tipos de datos algebráicos (Haskell, Scala)

@jlgarhdez

Expresividad

Tipos de datos algebráicos (Haskell, Scala)

Multimethods (Clojure)

@jlgarhdez

Expresividad

Tipos de datos algebráicos (Haskell, Scala)

Multimethods (Clojure)

Coproductos & Funtores (Haskell, Scala)

@jlgarhdez

Seguridad

@jlgarhdez

Seguridad

Sistemas de tipos potentes

@jlgarhdez

Seguridad

Sistemas de tipos potentes

Inmutabilidad

@jlgarhdez

Seguridad

Sistemas de tipos potentes

Inmutabilidad

Manejo de errores

@jlgarhdez

Paralelismo

Transparencia referencial

Dado que no existe un estado global, no es necesario implementar MutExes, Semáforos, Locks…

Scala (Akka) y Erlang (OTP) implementan el modelo de actores, que facilita la concurrencia y el paralelismo

@jlgarhdez

Uso en la Industria

@jlgarhdez

Facebook

Facebook lucha contra el Spam con Haskell.

Ha creado un sistema anti-spam, con capacidades como hot-swap reloading en Haskell

Se suben nuevas reglas (en Haskell) cientos de veces al día

@jlgarhdez

Twitter

Twitter ha migrado la mayoría de su código backend a Scala.

Han creado proyectos en Scala como Stitch, Finagle...

@jlgarhdez

Jane Street

Jane street es una empresa de trading de alta frecuencia y análisis cuantitativo que usa OCaml

Empezaron a usarlo por su robustez y su sistema de tipos

@jlgarhdez

LinkedIn

Linkedin utiliza Scala para gran parte de sus sistemas de backend

Crearon Kafka (ahora un proyecto Apache), una sistema de mensajería pub-sub

@jlgarhdez

Whatsapp

Usan Erlang para su sistema de mensajería

50 ingenieros para 900 usuarios

@jlgarhdez

Preguntas?

@jlgarhdez