Programación funcional : fundamentos revisados

La programación funcional (PF) es uno de los paradigmas más difundidos de programación, entre los cuales también debe mencionarse a la programación imperativa (PI) y la programación orientada a objetos (POO). Precede históricamente a las dos últimas y se destaca por su alto nivel de abstracción y su...

Full description

Saved in:
Main Authors: Bonelli, Eduardo, Martínez López, Pablo
Other Authors: Lombardi, Carlos
Format: info:eu-repo/semantics/other
Language:spa
Published: 2015
Subjects:
Online Access:http://ridaa.unq.edu.ar/handle/20.500.11807/969
id ir-20.500.11807-969
recordtype dspace
spelling ir-20.500.11807-9692019-02-20T05:00:39Z Programación funcional : fundamentos revisados Bonelli, Eduardo Martínez López, Pablo Lombardi, Carlos Barenbaum, Pablo Arévalo, Gabriela Beatriz Passerini, Pablo Nicolás San Martín, Hernán Javier Ríos, Alejandro Ciolek, Daniel Viso, Andrés Lenguajes de programación Métodos formales Programación funcional Cálculo Lambda Programming languages Formal methods Functional programming Lambda calculation Linguagens de programação Métodos formais Programação funcional La programación funcional (PF) es uno de los paradigmas más difundidos de programación, entre los cuales también debe mencionarse a la programación imperativa (PI) y la programación orientada a objetos (POO). Precede históricamente a las dos últimas y se destaca por su alto nivel de abstracción y sus robustos fundamentos matemáticos. El costo de disponer de un alto nivel de abstracción es que el modelo de ejecución se aleja de la arquitectura física del computador y por lo tanto incurre en una penalidad en tiempos de ejecución. Sin embargo, a medida que el software se hace más complejo y que el poder de procesamiento y almacenamiento aumenta, los beneficios de la abstracción comienzan a compensar holgadamente las penalidades antes mencionadas. Es así como garbage collection (Java, Smalltalk, etc.), generics (Java, Scala), continuaciones (C#, Perl, Ruby, etc.), funciones anónimas (C#, Perl, Ruby, etc.), etc., tienden a adoptarse en lenguajes de escala industrial (indicados entre paréntesis). Otros conceptos igualmente importantes como alto-orden, currificación, esquemas de recursión, etc. también son de un alto valor agregado a la hora de programar, en cualquier paradigma. Este notable impacto de la PF está motivado de manera crítica en el hecho de que se erige sobre el concepto de "función": un concepto simple, general y bien entendido desde el punto de vista matemático. El proyecto propuesto tiene por finalidad revisar los fundamentos de la PF. La PF tiene como contraparte formal o matemática el llamado Cálculo Lambda (CL), una teoría formal de funciones. En cierto sentido, el CL resume la esencia de un lenguaje de PF. Recientemente [AK:2010] se ha introducido una variante de granularidad más fina que promete ofrecer una visión igualmente refinada de varios de los resultados, técnicas y teorías que se basaban en el CL. Dicha variante se conoce como LSC (Linear Substitution Calculus) y en este trabajo nos interesa revisar algunos de los resultados del CL desde esta nueva perspectiva. En particular, nos interesa hallar estrategias para implementar lenguajes de programación con altos niveles de eficiencia: proponemos rever la teoría de optimalidad de LC desde el ángulo de la LSC. 2015-05-01 info:eu-repo/semantics/other info:ar-repo/semantics/proyecto de investigación info:eu-repo/semantics/publishedVersion http://ridaa.unq.edu.ar/handle/20.500.11807/969 spa UNQ info:eu-repo/semantics/openAccess https://creativecommons.org/licenses/by/2.5/ar/ application/pdf
institution RIDAA UNQ
collection DSpace
language spa
topic Lenguajes de programación
Métodos formales
Programación funcional
Cálculo Lambda
Programming languages
Formal methods
Functional programming
Lambda calculation
Linguagens de programação
Métodos formais
Programação funcional
spellingShingle Lenguajes de programación
Métodos formales
Programación funcional
Cálculo Lambda
Programming languages
Formal methods
Functional programming
Lambda calculation
Linguagens de programação
Métodos formais
Programação funcional
Bonelli, Eduardo
Martínez López, Pablo
Programación funcional : fundamentos revisados
description La programación funcional (PF) es uno de los paradigmas más difundidos de programación, entre los cuales también debe mencionarse a la programación imperativa (PI) y la programación orientada a objetos (POO). Precede históricamente a las dos últimas y se destaca por su alto nivel de abstracción y sus robustos fundamentos matemáticos. El costo de disponer de un alto nivel de abstracción es que el modelo de ejecución se aleja de la arquitectura física del computador y por lo tanto incurre en una penalidad en tiempos de ejecución. Sin embargo, a medida que el software se hace más complejo y que el poder de procesamiento y almacenamiento aumenta, los beneficios de la abstracción comienzan a compensar holgadamente las penalidades antes mencionadas. Es así como garbage collection (Java, Smalltalk, etc.), generics (Java, Scala), continuaciones (C#, Perl, Ruby, etc.), funciones anónimas (C#, Perl, Ruby, etc.), etc., tienden a adoptarse en lenguajes de escala industrial (indicados entre paréntesis). Otros conceptos igualmente importantes como alto-orden, currificación, esquemas de recursión, etc. también son de un alto valor agregado a la hora de programar, en cualquier paradigma. Este notable impacto de la PF está motivado de manera crítica en el hecho de que se erige sobre el concepto de "función": un concepto simple, general y bien entendido desde el punto de vista matemático. El proyecto propuesto tiene por finalidad revisar los fundamentos de la PF. La PF tiene como contraparte formal o matemática el llamado Cálculo Lambda (CL), una teoría formal de funciones. En cierto sentido, el CL resume la esencia de un lenguaje de PF. Recientemente [AK:2010] se ha introducido una variante de granularidad más fina que promete ofrecer una visión igualmente refinada de varios de los resultados, técnicas y teorías que se basaban en el CL. Dicha variante se conoce como LSC (Linear Substitution Calculus) y en este trabajo nos interesa revisar algunos de los resultados del CL desde esta nueva perspectiva. En particular, nos interesa hallar estrategias para implementar lenguajes de programación con altos niveles de eficiencia: proponemos rever la teoría de optimalidad de LC desde el ángulo de la LSC.
author2 Lombardi, Carlos
author_facet Lombardi, Carlos
Bonelli, Eduardo
Martínez López, Pablo
format info:eu-repo/semantics/other
author Bonelli, Eduardo
Martínez López, Pablo
author_sort Bonelli, Eduardo
title Programación funcional : fundamentos revisados
title_short Programación funcional : fundamentos revisados
title_full Programación funcional : fundamentos revisados
title_fullStr Programación funcional : fundamentos revisados
title_full_unstemmed Programación funcional : fundamentos revisados
title_sort programación funcional : fundamentos revisados
publishDate 2015
url http://ridaa.unq.edu.ar/handle/20.500.11807/969
_version_ 1825309292705611776
score 10.286298