12270303A-AC-PLF-2.2.pptx

23
INSTITUTO TECNOLOGICO DE TUXTLA GUTIERREZ CRESUD ACALA ASESOR: Ing. Guadalupe Del Rosario Aguilar López MATERIA Programación Lógica y Funcional UNIDA 1 TEMA Cuadro comparativo de programación funcional ALUMNA Vargas Pérez María de los Ángeles 12270303 A 15° Cuatrimestre ACALA CHIAPAS SEPTIEMBRE DEL 2015

Transcript of 12270303A-AC-PLF-2.2.pptx

Page 1: 12270303A-AC-PLF-2.2.pptx

INSTITUTO TECNOLOGICO DE TUXTLA GUTIERREZ

 CRESUD ACALA

 ASESOR:

Ing. Guadalupe Del Rosario Aguilar López 

MATERIA Programación Lógica y Funcional

 UNIDA 1

 TEMA

Cuadro comparativo de programación funcional  

ALUMNAVargas Pérez María de los Ángeles 12270303 A

 15° Cuatrimestre

ACALA CHIAPAS SEPTIEMBRE DEL 2015

Page 2: 12270303A-AC-PLF-2.2.pptx

INTRODUCCION

Los lenguajes funcionales se basan en la declaración de funciones aritméticas, trata de ser un lenguaje expresivo y matemáticamente elegante.

Los programas escritos en lenguajes funcionales están compuestos únicamente por la definición de funciones, pero no se trata de subrutinas de un programa iterativo, si no más bien como funciones puramente matemáticas. Los lenguajes funcionales son: Haskell, Miranda, R, Lisp, Scala, Scheme, ML, Erlang entre otros.

Page 3: 12270303A-AC-PLF-2.2.pptx

SCHEME Es impuro pues sus estructuras de datos no son

inmutables y un dialecto de Lisp. Fue desarrollado por Guy L. Steele y Gerald Jay Sussman en la década de los setenta e introducido en el mundo académico a través de una serie de artículos conocidos como los Lambda Papers de Sussman y Steele. El objetivo no es acumular un gran número de funcionalidades, sino evitar las debilidades y restricciones que hacen necesaria su adicción. Así, que proporciona el mínimo número posible de nociones primitivas, construyendo todo lo demás a partir de un reducido número de abstracciones. Por ejemplo, el mecanismo principal para el control de flujo son las llamadas recursivas finales.

Page 4: 12270303A-AC-PLF-2.2.pptx

CARACTERISTICAS Pone énfacis en la elegancia y simplicidad,

es mucho mas pequeño que la mayoría de versiones de lips.

Es muy usado en ambientes académicos y de investigación.

Su objetivo no es acumular un gran número de funcionalidades, si no evitar las debilidades y restricciones que hacen necesaria su adición. 

Sheme ofrece también gestión automática de memoria (recolección de basura).

Page 5: 12270303A-AC-PLF-2.2.pptx

TIPOS DE DATOS

Page 6: 12270303A-AC-PLF-2.2.pptx

CONVENCIONES

Page 7: 12270303A-AC-PLF-2.2.pptx

ERLANG fue desarrollado por Ericcson para la aplicación de telecomunicaciones. Aunque Ericcson era originalmente el propietario del lenguaje Erlang, en el año 1998 el lenguaje fue cedido como open source.Erlang es un de los pocos lenguajes de programación declarativos que es exitoso en el mundo empresarial.Además pertenece a los lenguajes orientados a mensajes, los cuales proporcionan concurrencia osuando procesos paralelos. La concurrencia, es que varios procesos se lleven a cabo (sean ejecutados) al mismo tiempo.

Page 8: 12270303A-AC-PLF-2.2.pptx

caracteristicas pueden realizar toda clase de proyectos en

especial proyectos que necesiten tráfico de información de respuesta en tiempo real.

Lenguaje de alto nivel basado en procesos Acoplamiento de patrones: es una técnica

básica de Erlang con la cual es posible hacer un balance entre las variables y valores a los dos lados del signo de igualdad o fallar si no es posible hacer un balance.

Organización de memoria automática (Recolector de Basura).

Page 9: 12270303A-AC-PLF-2.2.pptx

Utiliza tipo amplia gama de tipos integrados (desde caracteres hasta números grandes), listas de comprensión, definición de nuevos tipos de datos y sinónimos de tipos. Ejemplo: los tipos de datos como Bool, Int son definidos de la siguiente manera:

data Bool = False | True                                                          – – False y True son de un tipo de dato Bool

Page 10: 12270303A-AC-PLF-2.2.pptx

HASKELL Haskell es un lenguaje de programación moderno,

estándar, no estricto, puramente funcional. Posee todas las características avanzadas, incluyendo polimorfismo de tipos, evaluación perezosa y funciones de alto orden. También es un tipo de sistema que soporta una forma sistemática de sobrecarga y un sistema modular. Está específicamente diseñado para manejar un ancho rango de aplicaciones, tanto numéricas como simbólicas. Para este fin, Haskell tiene una sintaxis expresiva y una gran variedad de constructores de tipos, a parte de los tipos convencionales (enteros, punto flotante y booleanos).

Page 11: 12270303A-AC-PLF-2.2.pptx

funciones En Haskell las funciones se definen

usualmente a través de una colección de ecuaciones.

Por ejemplo, la función inc puede definirse por una única ecuación: inc n = n+1 Una ecuación es un ejemplo de declaración. Otra forma de declaración es la declaración de tipo de una función o type signature declaration, con la cual podemos dar de forma explícita el tipo de una función; por ejemplo, el tipo de la función inc: inc :: Integer -> Integer

Page 12: 12270303A-AC-PLF-2.2.pptx

caracteristicas Haskell emplea características de un lenguaje

funcional como la evaluación perezosa, la cual realiza operaciones cuando se le indique, no antes, ni después. Un ejemplo para demostrar este proceso es:

ghci> True||( (a0+a1z+a2z2+…) (b0+b1z+b2z2+…)=a0b0+ a0(b1z+b2z2+…)+ (a1z+a2z2+…) (b0+b1z+b2z2+…) ) ghci> True.

askell emplea un sistema de tipo de datos estático, que hace que los errores sean detectados en tiempo de compilación, si evalúa la operación entre un valor de tipo numérico con uno booleano (True && 1), nos arrojará un mensaje de error.

Page 13: 12270303A-AC-PLF-2.2.pptx

SCALA Scala es también un lenguaje funcional en el sentido

que toda función es un valor. Scala provee unasintaxis ligera para definir funciones anónimas. Soporta funciones de primer orden, permite que las funciones sean anidadas, y soporta currying. Las clases caso de Scala y las construcciones incorporadas al lenguaje para reconocimiento de patrones modelan tipos algebráicos usados en muchos lenguajes de programación funcionales.

Además, la noción de reconocimiento de patrones de Scala se puede extender naturalmente alprocesamiento de datos XML con la ayuda de patrones de expresiones regulares. En este contexto,seq comprehensions resultan útiles para formular consultas. Estas características hacen a Scala ideal para desarrollar aplicaciones como Web Services.

Page 14: 12270303A-AC-PLF-2.2.pptx

caracteristicas Scala también posee características

propias de los lenguajes funcionales. En Scala las funciones son valores de primera clase, soportando funciones anónimas, orden superior, funciones anidadas y currificación. Scala viene integrado de fábrica con la técnica de pattern matching para modelar tipos algebraicos usados en muchos lenguajes funcionales.

Page 15: 12270303A-AC-PLF-2.2.pptx

Caracteristicas Scala provee una sintaxis ligera para definir funciones

anónimas. Soporta funciones de primer orden, permite que las funciones sean anidadas, y soporta currying. Las clases caso de Scala y las construcciones incorporadas al lenguaje para reconocimiento de patrones modelan tipos algebráicos usados en muchos lenguajes de programación funcionales. Además, la noción de reconocimiento de patrones de Scala se puede extender naturalmente al procesamiento de datos XML con la ayuda de patrones de secuencias que igonoran a la derecha. En este contexto, seq comprehensions resultan útiles para formular consultas. Estas características hacen a Scala ideal para desarrollar aplicaciones como Web Services.

Page 16: 12270303A-AC-PLF-2.2.pptx

Ventajas es que la cantidad de código necesario para

programar es inferior a la que se requiere con el lenguaje Java, y el hecho de que es compatible con la Java Virtual Machine. El dinero necesario para comercializar Scala viene de la firma Greylock Partners, que ya ha financiado a empresas tecnológicas como Red Hat o Cloudera.

El lanzamiento comercial lo hizo la empresa Typesafe, creada por el propio Odersky, que ofrece herramientas para los desarrolladores, así como servicios de mantenimiento, formación y consultoría para empresas.

Page 17: 12270303A-AC-PLF-2.2.pptx

LIPS

El nombre que se le dio a este lenguaje, Lisp (List-Processing), porque fue creado principalmente para el procesamiento de listas. Desde el punto de vista más amplio del término. Cada función del Lisp y cada programa que se genera con él vienen dado en forma de lista. Por esta razón los datos no se pueden diferenciar sintácticamente de los programas. A este tipo de lenguaje se les denomina aplicativos o funcionales porque se basan en la aplicación de funciones a los datos. El lisp diferencia dos tipos de elementos básicos: El átomo, datos elementales de varios tipos como números, símbolos, caracteres y cadenas de caracteres. Y las Listas, entre las que podemos nombrar a una en especial, la lista “nil”, que es una lista nula que no tiene ningún elemento.

Page 18: 12270303A-AC-PLF-2.2.pptx

CARACTERISTICAS Átomos literales (símbolos)  Átomos numéricos La estructura de datos básica es la lista.

Incluye primitivas para su manipulación.  Los comentarios comienzan por ‘;’  Los parámetros de función van todos por

valor o por referencia según la clasificación de la función. 

LISP es interpretado y usa una estructura de gestión de almacenamiento en montículo con recolección de basura como almacenamiento primario para datos y programas.

Page 19: 12270303A-AC-PLF-2.2.pptx

TIPOS DE DATOS Tipos de datos primitivosátomos. Cada átomo tiene una lista de propiedades asociada, accesible a través del puntero que almacena el nombre del átomo. No se distinguen may-min para identificadores. 

Tipos de datos estructurado listas. Tienen asociado un puntero al primer elemento (car) y otro al elemento siguiente (cdr). Una lista vacía apunta a nil.  Para la asignación se utiliza setq(x val). Representación y almacenamiento. Cada descriptor de un objeto de datos proporciona tipo y atributos. En los datos estructurados (listas) se tienen sólo punteros a primero y a siguiente

Page 20: 12270303A-AC-PLF-2.2.pptx

VENTAJAS Que es multiparadigma. Programación corta y sencilla. Su compatibilidad con todos los sistemas

operativos. Se puede razonar matemáticamente

Page 21: 12270303A-AC-PLF-2.2.pptx

DESVENTAJAS☻ La ejecución de los programas es más

lenta, pues el intérprete tiene que gestionar la memoria y las pilas de recursión, cosa que lo hace

☻ bastante más lento que los lenguajes estructurados.

☻ · Código "feo" y difícil de comprender, sobretodo en programas de tamaño considerable en grupo.

☻ · Dificultad para depurarlo.

Page 22: 12270303A-AC-PLF-2.2.pptx

CONCLUSIÓNo es un conjunto de ideas, no un conjunto estricto de

reglas. Hay muchos lenguajes de programación funcional, y la mayoría hacen las cosas de formas muy diferentes entre sí,  trata principalmente con cálculo, y, ¡sorpresa!, lo hace mediante funciones. La función es la unidad básica en programación funcional. Las funciones son usadas para prácticamente todo, aun para los cálculos más simples. Hasta las variables son reemplazadas con funciones un lenguaje de programación le permite a uno o más programadores especificar de manera precisa sobre qué datos debe operar una computadora, cómo estos datos deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias, además de expresar un algoritmo.

Page 23: 12270303A-AC-PLF-2.2.pptx

BIBLIOGRAFÍAS http://es.slideshare.net/t__y__r/programacin-funcional-con-scheme http://www.ecured.cu/index.php/Erlang http://jyplisp.galeon.com/aficiones1460300.html http://www.lcc.uma.es/~jmmb/declarativa/ApuntesPF2004/ProgFunII.pdf https://lleksah.wordpress.com/haskell/ http://www.larevistainformatica.com/Haskell.htm http://labsys.frc.utn.edu.ar/ppr-2011/Unidad%20IV%20-%20Paradigma%2

0funcional/Unidad%20V%20-%20Paradigma%20Funcional.pdf http://www.cs.us.es/~jalonso/cursos/pd-09/doc/resumen_Haskell.pdf http://www.lcc.uma.es/~blas/pfHaskell/gentle/functions.html http://www.uhu.es/nieves.pavon/pprogramacion/funcional/tema2f.html https://es.wikipedia.org/wiki/Scala_(lenguaje_de_programaci%C3%B3n) https://www.codejobs.biz/es/blog/2013/03/30/que-es-scala http://docs.scala-lang.org/es/tutorials/tour/tour-of-scala.html http://codecriticon.com/scala-empezando/ http://www.saxsa.com.mx/gg20150308_PorQueHoyMeInteresaScala.pdf