plyf u1 seisón01 conceptosfundamentales

4
Estilos de programaci´ on Evaluaci´ on de expresiones Denici´ on de funciones Disciplina de tipos Tipos de datos Ingenier´ ıa en Sistemas Computacionales Programaci´ on L´ ogica y Funcional Unidad I: Conceptos fundamentales M.C.C. Manuel HERN ´ ANDEZ HERN ´ ANDEZ 1 1 Instituto Tecnol´ ogico Superior de Tantoyuca Divisi´ondeIngenier´ ıa en Sistemas Computacionales Febrero 16-20, 2015 M.C.C. Manuel Hern´ andez Hern´ andez [email protected] ITSTA Programaci´ on L´ ogica y Funcional 1 Estilos de programaci´ on Evaluaci´ on de expresiones Denici´ on de funciones Disciplina de tipos Tipos de datos Agenda 1 Estilos de programaci´ on 2 Evaluaci´ on de expresiones 3 Denici´ on de funciones 4 Disciplina de tipos 5 Tipos de datos M.C.C. Manuel Hern´ andez Hern´ andez [email protected] ITSTA Programaci´ on L´ ogica y Funcional 2 Estilos de programaci´ on Evaluaci´ on de expresiones Denici´ on de funciones Disciplina de tipos Tipos de datos Introducci´ on Lenguajes de programaci´ on M.C.C. Manuel Hern´ andez Hern´ andez [email protected] ITSTA Programaci´ on L´ ogica y Funcional 3 Estilos de programaci´ on Evaluaci´ on de expresiones Denici´ on de funciones Disciplina de tipos Tipos de datos Paradigmas de programaci´ on Estilos de programaci´ on M.C.C. Manuel Hern´ andez Hern´ andez [email protected] ITSTA Programaci´ on L´ ogica y Funcional 4

Upload: cmd1202

Post on 14-Sep-2015

11 views

Category:

Documents


5 download

DESCRIPTION

Conceptos PLyF

TRANSCRIPT

  • Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Ingeniera en Sistemas ComputacionalesProgramacion Logica y Funcional

    Unidad I: Conceptos fundamentales

    M.C.C. Manuel HERNANDEZ HERNANDEZ1

    1Instituto Tecnologico Superior de TantoyucaDivision de Ingeniera en Sistemas Computacionales

    Febrero 16-20, 2015

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 1

    Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Agenda

    1 Estilos de programacion

    2 Evaluacion de expresiones

    3 Denicion de funciones

    4 Disciplina de tipos

    5 Tipos de datos

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 2

    Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Introduccion

    Lenguajes de programacion

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 3

    Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Paradigmas de programacion

    Estilos de programacion

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 4

  • Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Programacion funcional (PF): Historia

    30s Orgenes teoricos del modelo funcional con AlonzoChurch que trabajaba en la universidad de Princeton.

    Alonzo Church propuso un modelo de estudio de lacomputabilidad mediante el calculo lambda (teorabasica de los lenguajes funcionales).

    Moses Shonnkel y Haskell Curry construyen losfundamentos de la logica combinatoria de granimportancia para la implementacion de los lenguajesfuncionales.

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 5

    Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Programacion funcional (PF): Historia

    40s Aun no existan los lenguajes de programacion, solo existael codigo maquina.

    50s Necesidad de un lenguaje independiente de la maquina.

    John McCarthy diseno el lenguaje LISPa

    El dialecto Scheme se acerca a la denicion original deMcCarthy, aunque no es puramente funcional.

    aLISP: List Processing

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 6

    Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Programacion funcional (PF): Historia

    60s En 1964 Peter Landin diseno la maquina abstractaSECDa para mecanizar la evaluacion de expresiones (Algol-60).

    Introdujo la familia de lenguajes ISWIM (If You SeeWhat I Mean) con invocaciones sintacticas y semanticasimportantes.

    aSECD = Maquina que consta de 4 listas enlazadas: Stack, Environment, Code, Dump (usada como espaciode almacenamiento adicional)

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 7

    Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Programacion funcional (PF): Historia

    70s John Backusa

    En 1978 publico Can Programming be liberatedfrom the Von Neumann style en el artculo criticabalas bases de la programacion imperativa tradicionalmostrando ventajas del modelo funcional llamando laatencion a la comunidad informatica.

    Diseno el lenguaje funcional FP (FunctionalProgramming).

    Robin Milner desarrollaML (Lenguaje funcional con tipospolimorcos e inferencia de tipos)

    aJohn Backus trabajo en IBM y fue uno de los disenadores de FORTRAN en 1956 y ALGOL

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 8

  • Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Programacion funcional (PF): Historia

    80s A principios surgen una gran cantidad de lenguajesfuncionales: Hope, LML, Orwell, Erlang, FEL, Al, etc.

    David Turner desarrolla Miranda (lenguaje funcionalperesozo)

    A mediados se realizo un esfuerzo de estandarizacion queculmino con la denicion de SML (Standar ML).

    En 1987, en la conferencia sobre FPCAa se formo uncomite internacional para disenar un lenguaje puramentefuncional de proposito general: Haskell.

    aFPCA: Programacion Funcional y Arquitecturas de Ordenador, en Portland, Oregon.

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 9

    Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Programacion funcional (PF): Historia

    90s hasta la actualidad (Versiones de Haskell)

    1990 - Aparece la primera version de Haskell (Haskell 1.0)

    1998 - Se publico Haskell 98, que se intento fuera una version dellenguaje mnima, estable y portable.

    1999 - A principios se publico en The Haskell 98 Report el estandardel lenguaje 98.

    2003 - A principios se publico una version revisada en Haskell 98Language and Libraries: The Revised Report

    2006 - Comenzo el proceso de denicion de un sucesor del estandarHaskell 98, denominado Haskell Prime

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 10

    Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Evolucion de los lenguajes funcionales

    Aspectos que provocan la evolucion de los LP1

    Recursos y tipos de ordenadores Aplicaciones y necesidades de los usuarios Nuevos metodos de programacion Estudios teoricos Estandarizacion

    1LP: Lenguajes de programacion

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 11

    Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Evolucion de los lenguajes funcionales

    Evolucion de los lenguajes funcionales

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 12

  • Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Evolucion de los lenguajes funcionales

    Evolucion de los lenguajes funcionales

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 13

    Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Declarativos vs. Imperativos

    Declarativos vs. Imperativos

    Visto como Imperativo Declarativo

    Paradigmas Se describe comoresolver el problemaSe describe que es elproblema

    Programas Una sucesion deprogramasUn conjunto desentencias

    Lenguajes Pascal, C, Fortran,JavaProlog, Lisp puro, ML,Haskell, DVL, Smodels

    Ventajas Programas rapidos yespecializadosProgramas generales,cortos y legibles

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 14

    Estilos de programacion Evaluacion de expresiones Denicion de funciones Disciplina de tipos Tipos de datos

    Programacion Funcional: Caractersticas

    Caractersticas de la programacion funcional

    Programacion declarativa No hay asignacion ni cambio de estado No hay referencias: Identicadores asociados a valores No hay efectos laterales

    La computacion se realiza mediantela evaluacion de expresiones

    Recursion Denicion de funciones Funciones como tipos de datosprimitivos

    M.C.C. Manuel Hernandez Hernandez [email protected] ITSTAProgramacion Logica y Funcional 15