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

Historia de la programación funcional y lambda calculus

mordonez
September 15, 2016

Historia de la programación funcional y lambda calculus

Esta es la presentación que se utilizó para un evento en la universidad San Ignacio de Loyola. El contenido de la presentación muestra el origen de la programación funcional, un breve vistazo a lambda calculus y temas de interés relacionados al tema.

mordonez

September 15, 2016
Tweet

More Decks by mordonez

Other Decks in Science

Transcript

  1. ¿Qué es la programación funcional? Historia La programación funcional se

    basa en la construcción de programas utilizando funciones puras, sin efectos secundarios.
  2. ¿Qué es la programación funcional? Historia Para entender el presente

    de la programación funcional demos un vistazo al pasado…
  3. ¿Qué es la programación funcional? Historia Entscheidungsproblem Entscheidungsproblem Entscheidungsproblem Entscheidungsproblem

    Entscheidungsproblem Entscheidungsproblem Entscheidungsproblem Entscheidungsproblem Entscheidungsproblem Entscheidungsproblem Entscheidungsproblem ntscheidungsproblem
  4. ¿Qué es la programación funcional? Historia David Hilbert 1862 -

    1943 En 1928 planteó el Entscheidungsproblem (problema de decisión), buscaba un procedimiento capaz de determinar si S era un teorema, donde S es una proposición de lógica de primer orden (ej. ∀x∃y x = y + y).
  5. ¿Qué es la programación funcional? Historia Alonzo Church 1903 -

    1995 Diseñó un sistema formal llamado calculo lambda el cual utilizó para demostrar que el problema de decisión (Entscheidungsproblem) era irresoluble. Propuso la definición de calculabilidad efectiva de como cualquier función que sea “λ-definible”, dicho en otras palabras, que pueda ser programada en el calculo lambda, el día de hoy conocemos esa conjetura como la tesis de Church.
  6. ¿Qué es la programación funcional? Historia Un primer vistazo a

    Lambda Calculus… 0 = λs.λx.x 1 = λs.λx.s x 2 = λs.λx.s(s x) 3 = λs.λx.s(s(s x))
  7. ¿Qué es la programación funcional? Historia Alan Turing 1912 -

    1954 Diseñó una máquina hipotética (la que hoy conocemos como maquina de Turing) capaz de resolver cualquier función computable. Utilizó la maquina para demostrar que el problema de decisión (Entscheidungsproblem) era irresoluble. Llega a la conjetura que cualquier función computable es calculable por una máquina de Turing, el día de hoy conocemos esa conjetura como la tesis de Turing.
  8. ¿Qué es la programación funcional? Historia Un primer vistazo a

    la máquina de Turing… http://www.aturingmachine.com
  9. ¿Qué es la programación funcional? Historia Alonzo Church y Alan

    Turing llegaron al mismo resultado pero de diferentes formas. Ya que ambas tesis, la de Turing y Church demuestran lo mismo, nos referimos a ellas como la tesis Church-Turing.
  10. ¿Qué es la programación funcional? Historia Ahora que conocemos más

    sobre el origen, veamos con mas detalle el calculo lambda.
  11. ¿Qué es la programación funcional? Lambda Calculus En lambda calculus

    las funciones son anónimas, se utiliza el símbolo lambda para definirlas y solo reciben un valor de entrada. f(x) = x - y sería equivalente a λx.x - y f(x,y) = x - y sería equivalente a λx.λy.x - y
  12. ¿Qué es la programación funcional? Lambda Calculus El concepto central

    en Lambda Calculus es la “expresión”. <expresión> := <variable> | <abstracción> | <aplicación> <abstracción> := λ <variable>.<expresión> <aplicación> := <expresión><expresión> abstracción := λx.x aplicación := (λx.x)y expresión := (λx.x)((λx.x)y)
  13. ¿Qué es la programación funcional? Lambda Calculus Variables ligadas y

    variables libres. λx.xy En la función anterior decimos que la variable x es ligada porque está definida luego del símbolo lambda y es utilizada en el cuerpo de la función (en el mismo contexto). La variable y es libre porque no se encuentra en el contexto local de la expresión
  14. ¿Qué es la programación funcional? Lambda Calculus Sustitución (λx.x)(λy.y) =

    x[x := (λy.y)] = (λy.y) (λx.(λy.x + y))3 = (λy.x + y)[x := 3] = (λy.3 + y)
  15. ¿Qué es la programación funcional? Lambda Calculus Booleanos true :=

    λx. λy.x false := λx. λy.y Aritmetica suma := λm.λn.λf .λx. m f ( n f x) succ := λn . λf . λx . f (n f x)
  16. ¿Qué es la programación funcional? Lambda Calculus Números 0 :=

    λf . λx . x 1 := λf . λx . f x 2 := λf . λx . f (f x) 3 := λf . λx . f (f (f x))
  17. ¿Qué es la programación funcional? Lambda Calculus Entonces ¿Qué tiene

    que ver esto conmigo…? Más de lo que imaginas.
  18. ¿Qué es la programación funcional? Definiciones En la programación orientada

    a objetos el razonamiento sobre el código se vuelve complejo rápidamente. En la programación funcional podemos escribir programas con menos código, mas expresivos, obtener buen performance y razonar fácilmente sobre lo que está escrito. Motivación
  19. ¿Qué es la programación funcional? Definiciones Ahora que sabemos que

    no somos tan extraños a la programación funcional veamos algunas definiciones.
  20. ¿Qué es la programación funcional? Definiciones Transparencia referencial Decimos que

    una expresión es transparentemente referencial si podemos reemplazar el valor de todas sus ocurrencias en el programa sin alterar el funcionamiento del mismo. Scala
  21. ¿Qué es la programación funcional? Definiciones Valores inmutables La modificación

    de los valores no existe, una vez creado ese valor no podrá mutar, lo que podemos hacer es crear nuevos valores a partir de los creados inicialmente.
  22. ¿Qué es la programación funcional? Definiciones Funciones de orden superior

    Este tipo de funciones toman otras funciones como parámetros o retornan otras funciones como resultados.
  23. ¿Qué es la programación funcional? Definiciones Evaluación perezosa La evaluación

    perezosa computa un valor solamente cuando este es utilizado.
  24. ¿Qué es la programación funcional? Historias Ahora que sabemos que

    los valores son inmutables ¿Por qué no lo usamos para eliminar las condiciones de carrera? Veamos algunos casos importantes sobre este tema puntual…
  25. ¿Qué es la programación funcional? Historias Therac-25 Therac-25 fue una

    maquina de radio terapia que al contar con una falla de software causó la muerte de 3 pacientes y otros quedaron con daños por sobredosis de radiación. El diagnostico: Se determinó que el mal funcionamiento del programa era ocasionado por una condición de carrera, relacionada con el desbordamiento de una variable contadora. Wikipedia
  26. ¿Qué es la programación funcional? Historias Apagón del noreste del

    2003 Se produjo un apagón que afectó buena parte de Estados Unidos y parte de Canadá. El diagnostico: Un bug en el software en el sistema de alarma en el cuarto de control. La falla en la alarma dejo a los trabajadores inadvertidos del problema, el bug fue una condición de carrera que puso la alarma en un bucle infinito. Wikipedia
  27. ¿Qué es la programación funcional? Historias Podemos utilizar programación funcional

    para cambiar el comportamiento anti natural del manejo de hilos con datos mutables y usar la naturaleza de la programación funcional para trabajar con datos inmutables.
  28. ¿Qué es la programación funcional? Un cambio en la forma

    de resolver Podemos cambiar nuestra forma de pensar basada en instrucciones de forma imperativa por instrucciones en forma declarativa.
  29. ¿Qué es la programación funcional? Un cambio en la forma

    de resolver Que tal si en vez de: Simplemente hacemos:
  30. ¿Qué es manifiesto reactivo? Concepto Los Sistemas construidos como Sistemas

    Reactivos son más flexibles, con bajo acoplamiento y escalables. Esto hace que ellos sean más fáciles de desarrollar y mas simples para cambiar. Ellos son significativamente más tolerantes a fallas 
 y cuando fallan lo hacen con elegancia en vez de ser un desastre. Los sistemas reactivos son altamente responsivos, dando a los usuarios retroalimentación efectiva e interactiva.
  31. ¿Qué es la programación funcional? Un cambio en la forma

    de resolver Temas de interés: Lambda Calculi de Alonzo Church https://www.amazon.com/Introduction-Mathematical-Logic-Alonzo-Church/dp/0691029067 An Unsolvable Problem of Elementary Number Theory http://www.jstor.org/stable/2371045 A note on the Entscheidungsproblem http://www.jstor.org/stable/2269326 Computable Numbers with an application to the Entscheidungsproblem https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf
  32. ¿Qué es la programación funcional? Un cambio en la forma

    de resolver Temas de interés: Learn Haskell http://learnyouahaskell.com/ Whatsapp utiliza Erlang http://www.wired.com/2015/09/whatsapp-serves-900-million-users-50-engineers/ Coursera está desarrollado en Scala http://www.typesafe.com/resources/case-studies-and-stories/making-online-education-accessible-with- typesafe Twitter migró de Ruby a Scala http://www.typesafe.com/resources/case-studies-and-stories/new-tweets-per-second-record-and-how
  33. ¿Qué es la programación funcional? Un cambio en la forma

    de resolver Temas de interés: FunctionalWorks (jobs) https://jobs.functionalworks.com/ Why Spark is made with Scala https://www.quora.com/Why-is-Apache-Spark-implemented-in-Scala Manifiesto reactivo www.reactivemanifesto.org/es