plyf u1 seisón01 conceptosfundamentales
DESCRIPTION
Conceptos PLyFTRANSCRIPT
-
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