You are on page 1of 35

Programacin

funcional

@jlgarhdez
Qu es

Agenda Historia

Ventajas tcnicas

Uso en la industria

@jlgarhdez
Qu es la programacin funcional?

@jlgarhdez
Qu es la programacin funcional?

Un paradigma de programacin, en el que las


funciones son ciudadanos de primera clase.

- Haskell
- Ocaml

@jlgarhdez
Qu es la programacin funcional?

Un paradigma de programacin, en el que las Un estilo de programacin, en el que se emula el


funciones son ciudadanos de primera clase. paradigma funcional en lenguajes no
funcionales.
- Haskell
- Ocaml - Underscore.js
- Functional php

@jlgarhdez
Historia

@jlgarhdez
Clculo Lambda
Creado en 1936 por Alonzo Church.

Una forma de expresar


computaciones matemticas
mediante funciones

@jlgarhdez
Lisp
Creado en 1958 por John
McCarthy

Precursor en la programacin
funcional

Familia de lenguajes de
programacin (Scheme,
Common Lisp, Clojure)

@jlgarhdez Todo son expresiones


ML
Se desarrolla en los 1970s

Al igual que LISP, es una familia de


lenguages. (Standard ML, F#,
OCaml)

Tipado estticamente

Estricto

@jlgarhdez
Erlang
Creado en 1986 en Ericsson

Junto con el framework OTP,


est pensado para crear
plataformas escalables y
tolerantes a fallos

Modelo de actores

@jlgarhdez
Haskell
Diseado por un comit en 1987

Primera implementacin en 1990

Tipado estricto

Evaluacin perezosa

Tipos de orden superior

Puramente funcional
@jlgarhdez
Scala
Creado en 2004 por Martin
Odersky

Scala es un lenguaje orientado a


objetos que permite la
programacin funcional de una
manera muy efectiva

Corre sobre la JVM y tambin


transpila a JS

El lenguaje del big data. Spark,


Flink, Samza, Kafka
@jlgarhdez
F#
Diseado por Microsoft en 2005

Dialecto de ML

Corre en el Common Language


Runtime (como VB, C#...)

@jlgarhdez
Clojure
Creado en 2007 por Rich Hickey

Dialecto de Lisp

Tipado dinmico

Diseado para correr en


diferentes plataformas

Actualmente corre en CLR, JVM,


y transpila a JavaScript

@jlgarhdez
Ventajas
Tcnicas

@jlgarhdez
Modularidad

@jlgarhdez
Modularidad

Funciones de orden superior

@jlgarhdez
Modularidad

Funciones de orden superior

Typeclasses

@jlgarhdez
Modularidad

Funciones de orden superior

Typeclasses

Polimorfismo paramtrico

@jlgarhdez
Expresividad

@jlgarhdez
Expresividad

Tipos de datos algebricos (Haskell, Scala)

@jlgarhdez
Expresividad

Tipos de datos algebricos (Haskell, Scala)

Multimethods (Clojure)

@jlgarhdez
Expresividad

Tipos de datos algebricos (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,


Semforos, 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 da
@jlgarhdez
Twitter

Twitter ha migrado la mayora de su


cdigo 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 anlisis
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 mensajera
pub-sub

@jlgarhdez
Whatsapp

Usan Erlang para su sistema de


mensajera

50 ingenieros para 900 usuarios

@jlgarhdez
Preguntas?

@jlgarhdez

You might also like