stringtranslate.com

Programación a nivel de función

En informática, la programación a nivel de función se refiere a uno de los dos paradigmas de programación contrastantes identificados por John Backus en su trabajo sobre programas como objetos matemáticos, siendo el otro la programación a nivel de valor .

En su conferencia del Premio Turing de 1977 , Backus expuso lo que consideraba la necesidad de cambiar a una filosofía diferente en el diseño de lenguajes de programación: [1]

Los lenguajes de programación parecen estar en problemas. Cada lenguaje sucesivo incorpora, con un poco de limpieza, todas las características de sus predecesores y unas cuantas más. [...] Cada nuevo lenguaje promete características nuevas y de moda... pero el hecho es que pocos lenguajes hacen que la programación sea lo suficientemente más barata o más confiable como para justificar el costo de producirlos y aprender a usarlos.

Diseñó FP para que fuera el primer lenguaje de programación que soportara específicamente el estilo de programación a nivel de función.

Un programa a nivel de función no tiene variables (cf. programación sin puntos ), ya que las variables de programa , que son esenciales en las definiciones a nivel de valor, no son necesarias en los programas a nivel de función.

Introducción

En el estilo de programación a nivel de función, un programa se construye directamente a partir de programas que se dan al principio, combinándolos con operaciones de formación de programas o funcionales . Por lo tanto, en contraste con el enfoque a nivel de valor que aplica los programas dados a los valores para formar una sucesión de valores que culminan en el valor del resultado deseado, el enfoque a nivel de función aplica operaciones de formación de programas a los programas dados para formar una sucesión de programas que culminan en el programa de resultado deseado.

Como resultado, el enfoque de programación a nivel de función invita al estudio del espacio de programas bajo operaciones de formación de programas , buscando derivar propiedades algebraicas útiles de estas operaciones de formación de programas. El enfoque a nivel de función ofrece la posibilidad de hacer del conjunto de programas un espacio matemático al enfatizar las propiedades algebraicas de las operaciones de formación de programas sobre el espacio de programas .

Otra ventaja potencial de la visión a nivel de función es la capacidad de utilizar únicamente funciones estrictas y, por lo tanto, tener una semántica de abajo hacia arriba, que es la más simple de todas. Otra ventaja es la existencia de definiciones a nivel de función que no son la imagen elevada (es decir, elevadas de un nivel de valor inferior a un nivel de función superior) de ninguna definición a nivel de valor existente: estas definiciones a nivel de función (a menudo concisas) representan un estilo de programación más potente que no está disponible a nivel de valor.

Contraste con la programación funcional

Cuando Backus estudió y publicitó su estilo de programación a nivel de función, su mensaje fue mayoritariamente malinterpretado [2] como si apoyara los lenguajes de estilo de programación funcional tradicionales en lugar de su propio FP y su sucesor FL .

Backus llama programación funcional programación aplicativa ; [ aclaración necesaria ] su programación a nivel de función es un tipo particular y restringido.

Una distinción clave con respecto a los lenguajes funcionales es que el lenguaje de Backus tiene la siguiente jerarquía de tipos:

...y la única manera de generar nuevas funciones es usar una de las formas funcionales, que son fijas: no puedes construir tu propia forma funcional (al menos no dentro de FP; puedes dentro de FFP ( FP Formal )).

Esta restricción significa que las funciones en FP son un módulo (generado por las funciones incorporadas) sobre el álgebra de formas funcionales y, por lo tanto, son algebraicamente manejables. Por ejemplo, la cuestión general de la igualdad de dos funciones es equivalente al problema de la detención y es indecidible, pero la igualdad de dos funciones en FP es simplemente una igualdad en el álgebra y, por lo tanto (imagina Backus) es más fácil.

Incluso hoy en día, muchos usuarios de lenguajes de estilo lambda a menudo malinterpretan el enfoque de Backus a nivel de función como una variante restrictiva del estilo lambda, que es de facto un estilo a nivel de valor. De hecho, Backus no habría estado en desacuerdo con la acusación de "restrictivo": argumentó que era precisamente debido a tales restricciones que podía surgir un espacio matemático bien formado, de una manera análoga a la forma en que la programación estructurada limita la programación a una versión restringida de todas las posibilidades de flujo de control disponibles en programas simples, no estructurados y sin restricciones .

El estilo libre de valores de FP está estrechamente relacionado con la lógica ecuacional de una categoría cartesiana cerrada .

Ejemplos de idiomas

El lenguaje de programación a nivel de función canónico es FP . Otros lenguajes de programación son FL y J.

Véase también

Referencias

  1. ^ Backus, John (1978). "¿Puede la programación liberarse del estilo von Neumann?: Un estilo funcional y su álgebra de programas" (PDF) . Comunicaciones de la ACM . 21 (8): 613–641. doi : 10.1145/359576.359579 .
  2. ^ Hudak, Paul (1989). "Concepción, evolución y aplicación de lenguajes de programación funcional". ACM Computing Surveys . 21 (3): 359–411. doi :10.1145/72551.72554. S2CID  207637854.

Enlaces externos